MySQL查询得到的主要产品和变量
问题描述:
我处理这种情况:MySQL查询得到的主要产品和变量
ID | PostParent | PostType |
----------------------------------------------
001 | NULL | 'product'
002 | 001 | 'product_variation'
003 | 001 | 'product_variation'
004 | NULL | 'product'
005 | 004 | 'product_variation'
006 | 004 | 'product_variation'
我需要执行一个查询,对于一个给定的ID输出
ID | PostParent | PostType
-------------------------------------------
001 | NULL | 'product'
002 | 001 | 'product_variation'
003 | 001 | 'product_variation'
目的是在单个产品页面中输出产品信息和其变体列表(如果存在)。
答
嗯,你的解释是有点差,如果你接受这个答案很好,但请改写你的问题,但我想你问的是:
SELECT mg1.*, mg2.* FROM mg_posts mg1 LEFT JOIN mg_posts mg2 ON mg2.PostParent = mg1.ID
这就是表格的隐式关系。如果你正在寻找的产品ID = 1,那么你会进一步细化查询:
SELECT mg1.*, mg2.* FROM mg_posts mg1 LEFT JOIN mg_posts mg2 ON mg2.PostParent = mg1.ID WHERE mg1.ID = 1; -- the one I know to get
的LEFT JOIN
保证你会得到的产品,即使他们没有变型产品。合理?如果您只希望产品具有变化,或者只有110%确定所有产品在进入时具有变化(我的意思是110%),您才会使用JOIN
。
如果你想为你做列表上的一个排的一切,你可以这样做:
SELECT * FROM mg_posts WHERE (ID = 1 AND PostParent IS NULL) OR PostParent = 1
希望帮助,但更新后:)
+0
奥利弗,我在最后一部分实现了我的原创帖子 – Alex
我执行下列操作之一 - - >选择 p.id, p.post_parent, p.post_type FROM mg_posts为p WHERE p.post_parent = p.id Alex
我不理解你怎么样根据您的预期产量生成。 –
为什么005和006从结果中排除? – Shadow