MySQL - 如何根据另一个选择选择数据(subselect?)

时间:2017-03-16 12:58:08

标签: mysql

这只是我的第二个查询,我想知道,有没有机会得到我需要的东西。

我正在与Prestashop合作,我想导出有关该产品的数据。

选择“GROUP_CONCAT(DISTINCT ac.id_product_2)”我得到了产品(我需要的)ID,但我希望根据这些ID获得产品参考。

我想知道,根据这些ID获取产品参考是否有任何变化?

我的查询是:

SELECT p.id_product, pl.name, p.reference, p.mcompleted,pl.description_short, pl.meta_title, 
pl.link_rewrite, GROUP_CONCAT(DISTINCT ac.id_product_2) 
FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product)
LEFT JOIN ps_accessory ac ON (ac.id_product_1 = p.id_product)
WHERE pl.id_lang = 2 
AND p.active = 1
AND s.quantity > 0
AND p.id_product > 35000
AND p.mcompleted = 1
GROUP BY p.id_product

正确的知道我得到的数据是这样的:

id_product     reference     GROUP_CONCAT(DISTINCT ac.id_product_2)  
 35026           21-176F      35026,35027
 35027           55-FFFF      35027,35028
 35028           66-FFFF      35026,35028

But I would like to get something like  this:
id_product     reference     GROUP_CONCAT(DISTINCT ac.id_product_2)  
 35026           21-176F      21-176F,55-FFFF 
 35027           55-FFFF      55-FFFF,66-FFFF 
 35028           66-FFFF      21-176F,66-FFFF 

已经在互联网上花了6个多小时,希望得到你的帮助:)

1 个答案:

答案 0 :(得分:0)

假设ac.id_product_2也链接到ps_product表,那么你可以简单地进行另一次连接并连接引用而不是id。

SELECT p.id_product, pl.name, p.reference, p.mcompleted,pl.description_short, pl.meta_title, 
pl.link_rewrite, GROUP_CONCAT(DISTINCT p2.reference) 
FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product)
LEFT JOIN ps_accessory ac ON (ac.id_product_1 = p.id_product)
LEFT JOIN ps_product p2 on (p2.id_product = ac.id_product_2)
WHERE pl.id_lang = 2 
AND p.active = 1
AND s.quantity > 0
AND p.id_product > 35000
AND p.mcompleted = 1
GROUP BY p.id_product