MySQL搜索数组中的所有元素

时间:2014-06-25 10:37:28

标签: php mysql mysqli

我正在努力从MySQL查询中提取我需要的所有信息。我几乎在那里,但需要帮助才能获得单独的价值观。

我的目标是收集表中包含阵列提供的所有产品的任何公司。该信息由最终用户通过使用AJAX提供。

查询也需要略微流畅,因为提供product_ids的数组可以是无限的。

我的查询如下:

SELECT `company_id`, `product_id`, COUNT(*) as c
FROM `products`
WHERE `product_id` IN (2495, 2403) 
GROUP BY `company_id`
HAVING c = 2

此查询提供的输出是(A):

| company_id | product_id | c |
-------------------------------
| 1234       |  2495      | 2 |

但我所追求的是(B):

| company_id | product_id | c |
-------------------------------
| 1234       |  2495      | 2 |
| 1234       |  2403      | 2 |

甚至更好(C)

| company_id | product_id A | product_id B | c |
------------------------------------------------
| 1234       |  2495        | 2403         | 2 |

对此有任何帮助将不胜感激,所以提前感谢!

2 个答案:

答案 0 :(得分:0)

结果A是将查询分组到company_id

的结果

通过取消GROUP BY,您将获得结果B.我不是MySQL的专家,我不能告诉你如何计算它(在同一个查询中)。但是既然你也标记了PHP,你可以考虑用PHP计算结果。

对于结果C,您可以查看GROUP_CONCAT,查看this answer

答案 1 :(得分:0)

感谢关于GROUP_CONCAT建议的LinkinTED,我的最终查询是:

SELECT `company_id`, GROUP_CONCAT(`product_id`) as _product_id, COUNT(*) as c
FROM `products`
WHERE `product_id` IN (2495,2403)
GROUP BY `company_id`
HAVING c=2

除了产品A和B的单独列之外,输出就像C一样