SQL帮助连接几个表

时间:2013-05-07 23:54:58

标签: mysql join

请有人帮忙解释我如何构建SQL查询以加入附加图像中的表格。我是网络新手数据库设计并且已经挣扎了好几天!! [tables] [1]

http://i44.tinypic.com/9863c0.jpg

它背后的想法是:可以有许多商店和许多产品,每个商店可以销售与其他商店相同的产品,因此需要名为“商店:产品”的表。我还将字段大小和颜色分解为2个其他表格,以节省空间并提高性能。如何将它们全部链接在一起,以便数据库服务器在查询特定商店ID时返回商店名称及其销售的产品(包括产品尺寸和颜色)?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

请查看:

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,而不是大小和颜色。
  • 不确定所有产品是否有尺寸和颜色,如果没有,请考虑将这两者的内部连接切换为LEFT JOIN;
  • 您应该更改shop_product的产品表名称;
  • 表格的名称应为单数而非复数(不是义务);
  • 您还可以按商店和产品进行分组,并将颜色和尺寸列连接起来(例如.2)