我正在尝试找出获取所有具有指定属性的部件的“搜索产品”的最佳方法。这就是我目前所拥有的,但这不会返回任何内容,尽管它们是同时具有属性/属性 header 的部分。
SELECT DISTINCT * FROM searchproduct
JOIN part ON searchproduct.id = part.searchproduct_id
LEFT JOIN part_attribute ON part.id = part_attribute.part_id
JOIN part_attribute ON part_attribute.id = part_attribute.part_attributeheader_id
WHERE (part_attribute.name = 'Colour' AND part_attribute.value IN ('Black')) AND (part_attribute.name = 'Size' AND part_attribute.value IN ('11'));
每个searchproduct
有多个part
,每个part
有多个part_attribute
,每个part_attribute
code> 有一个 part_attributeheader
,每个 part_attributeheader
有一个 name
。
我想我可能需要添加某种分组?我尝试过的一切都没有结果。
这是一个数据示例(有更好的方式来显示它吗?)
samplesearchproduct (searchproduct)
|
v
part B (part)
| |
v v
"11" "Black" (part_attribute.value)
| |
v v
"Size" "Colour" (part_attributeheader.name)
最佳答案
我正在努力理解您的数据布局(part_attribute 和part_attributeheader 是不同的表),但认为您需要2 个联接。像这样的事情:-
SELECT DISTINCT *
FROM searchproduct
JOIN part ON searchproduct.id = part.searchproduct_id
INNER JOIN part_attribute p0 ON part.id = p0.part_id
INNER JOIN part_attribute P1 ON p.id = P1.part_attributeheader_id
WHERE (p0.name = 'Colour' AND p0.value IN ('Black'))
AND (P1.name = 'Size' AND P1.value IN ('11'));
关于mysql - 在同一 JOIN 中使用各种 WHERE 组合获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603585/