请检查一下:
SELECT s.name, p.name, si.size, c.colour
FROM shops s
INNER JOIN product sp ON (sp.shop_id = s.id)
INNER JOIN products p ON (p.prod_id = sp.prod_id)
INNER JOIN sizes si ON (si.id = p.size)
INNER JOIN colours c ON (c.id = products.colour)
示例 2:
SELECT s.name, p.name,
GROUP_CONCAT(si.size) AS sizes,
GROUP_CONCAT(c.colour) AS colours
FROM shops s
INNER JOIN product sp ON (sp.shop_id = s.id)
INNER JOIN products p ON (p.prod_id = sp.prod_id)
LEFT JOIN sizes si ON (si.id = p.size)
LEFT JOIN colours c ON (c.id = products.colour)
GROUP BY s.id, p.id
重要注意事项:
- 您应该在您的表格产品中分别使用 size_id 和 colour_id 而不是 size 和 color。
- 不确定是否所有产品都有尺寸和颜色,如果没有,请考虑将这两个的内连接切换为左连接;
- 您应该更改 shop_product 的产品表名称;
- 表的名称应该是单数而不是复数(不是义务);
- 您还可以按商店和产品分组,并将颜色和尺寸列连接起来(示例 2)