mysql - 在同一 JOIN 中使用各种 WHERE 组合获取结果

标签 mysql sql

我正在尝试找出获取所有具有指定属性的部件的“搜索产品”的最佳方法。这就是我目前所拥有的,但这不会返回任何内容,尽管它们是同时具有属性/属性 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/

相关文章:

java - 从 SQL Server 成功检索数据后 JTable 为空

MySQL 多字段索引

sql - postgresql查询查看: for each author, 列出自己的合著者总数

MYSQL IN 语句返回错误数据

php - 将结果合并到一个数组中

java - 我们可以将查询得到的记录存储到存储过程中的列表中吗?

sql - 错误: column must appear in the GROUP BY clause or be used in an aggregate function

sql - 从sql中给定的日期时间中提取时间和星期几

Mysql不相等

mysql - 如何在此查询中对 MySQL 中的 Count_Orders 进行排序?