我正在努力从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 |
对此有任何帮助将不胜感激,所以提前感谢!
答案 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一样