在MYSQLI中搜索GROUP_CONCAT值?

时间:2015-05-20 10:42:09

标签: mysql mysqli group-concat

如果我在组concat中返回了5个名称,是否可以进一步限制返回的表?例如,我只希望看到名为“Assembly”的公司,如果我在AND中使用它

"AND cell_name = 'Assembly'"

然后我的小组concat只显示大会,而不是其他5个名字,即使我愿意。

SELECT
GROUP_CONCAT(DISTINCT cell_name ORDER BY cell_name ASC) as Cell,
integrator_country as Country,
integrator_name as Name

FROM sme_cells_integrator_link

INNER JOIN sme_cells ON
(sme_cells.id = sme_cells_integrator_link.fk_cells_id)

INNER JOIN sme_integrator ON
(sme_integrator.id = sme_cells_integrator_link.fk_integrator_id)

WHERE integrator_country = 'Denmark' 
GROUP BY integrator_name

我想要的是返回已选择的订单类型,但仍然显示公司拥有的所有订单,就像GROUP_CONCAT通常那样。

没有我的AND,返回的数据看起来像这样:

+-----------------------------------------------------+---------+--------------+
| Assembly,Packaging                                  | Denmark | Firm 1       |
| Packaging,Palletizing                               | Denmark | Firm 2       |
| Handling                                            | Denmark | Firm 3       |
| Grinding / Finishing,Handling,Packaging,Palletizing | Denmark | Firm 4       |
+-----------------------------------------------------+---------+--------------+

用我的AND,它看起来像这样:

+----------+-----------+--------+
| Assembly |  Denmark  | Firm 1 |
+----------+-----------+--------+

我想要的是它看起来像这样:

+--------------------+-----------+-------+
| Assembly,Packaging |  Denmark  | Firm 1|
+--------------------+-----------+-------+

1 个答案:

答案 0 :(得分:1)

我们需要您的表格而不是结果,然后我们可以让您进行子选择。

但另一个快速而肮脏的选择是:

SELECT
GROUP_CONCAT(DISTINCT cell_name ORDER BY cell_name ASC) as Cell,
integrator_country as Country,
integrator_name as Name

FROM sme_cells_integrator_link

INNER JOIN sme_cells ON
(sme_cells.id = sme_cells_integrator_link.fk_cells_id)

INNER JOIN sme_integrator ON
(sme_integrator.id = sme_cells_integrator_link.fk_integrator_id)

WHERE integrator_country = 'Denmark' 
GROUP BY integrator_name
HAVING Cell LIKE '%Assembly%'

正如您所看到的,使用此解决方案时,您会遇到类似名称的问题。