Mysql SQL帮助连接多个表

Mysql SQL帮助连接多个表,mysql,join,Mysql,Join,请有人帮我解释一下,我将如何构建一个SQL查询,用于连接所附图像中的表。我是网络和数据库设计新手,已经为之奋斗了好几天!![附表][1] 其背后的理念是:可以有许多商店和许多产品,每个商店可以销售与其他商店相同的产品,因此需要名为“shop:product”的表。为了节省空间和提高性能,我还将字段大小和颜色分解到另外两个表中。如何将其链接在一起,以便在查询特定的店铺id时,数据库服务器返回店铺名称及其销售的产品(包括产品大小和颜色) 谢谢!:) 请查看: SELECT s.name, p.na

请有人帮我解释一下,我将如何构建一个SQL查询,用于连接所附图像中的表。我是网络和数据库设计新手,已经为之奋斗了好几天!![附表][1]

其背后的理念是:可以有许多商店和许多产品,每个商店可以销售与其他商店相同的产品,因此需要名为“shop:product”的表。为了节省空间和提高性能,我还将字段大小和颜色分解到另外两个表中。如何将其链接在一起,以便在查询特定的店铺id时,数据库服务器返回店铺名称及其销售的产品(包括产品大小和颜色)

谢谢!:)

请查看:

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
重要考虑:

  • 您应该在您的产品表中分别标注尺码和颜色,而不是尺码和颜色
  • 不确定是否所有的产品都有尺寸和颜色,如果没有,请考虑将这两个产品的内部连接转换为左侧连接;<李>
  • 您应该更改shop_产品的产品表名称
  • 表格名称应为单数而非复数(非义务)
  • 您还可以按店铺和产品分组,并将颜色和尺寸列连接起来(示例2)

谢谢你,麦地那,这正是我想要的。您的第一个解决方案成功了。:)