Mysql 查询以获取主要产品和变量
Mysql query to get main product and variables
我正在处理这种情况:
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'
目的是在单个产品页面输出产品信息及其变体列表(如果存在)。
你可以使用 union all
select ID, PostParent, PostType
from mg_posts
where ID = '001'
UNION ALL
SELECT id, PostParent, PostType
FROM mg_posts
WHERE p.post_parent= '001'
好吧,你的解释有点糟糕,如果你接受这个答案很好,但请改写你的问题,但我认为你是在问这个:
SELECT mg1.*, mg2.* FROM mg_posts mg1 LEFT JOIN mg_posts mg2 ON mg2.PostParent = mg1.ID
也就是table的隐含关系。如果您正在寻找产品 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
希望对您有所帮助,但请更新您的 post :)
我正在处理这种情况:
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'
目的是在单个产品页面输出产品信息及其变体列表(如果存在)。
你可以使用 union all
select ID, PostParent, PostType
from mg_posts
where ID = '001'
UNION ALL
SELECT id, PostParent, PostType
FROM mg_posts
WHERE p.post_parent= '001'
好吧,你的解释有点糟糕,如果你接受这个答案很好,但请改写你的问题,但我认为你是在问这个:
SELECT mg1.*, mg2.* FROM mg_posts mg1 LEFT JOIN mg_posts mg2 ON mg2.PostParent = mg1.ID
也就是table的隐含关系。如果您正在寻找产品 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
希望对您有所帮助,但请更新您的 post :)