【问题标题】:How can I JOIN in 3 Tables in Mysql如何在 Mysql 中加入 3 个表
【发布时间】:2020-10-24 14:22:42
【问题描述】:

你好,我需要你的帮助。

我有这个数据库架构,我想进行“选择”以返回所有“产品”,其中brands.brand_slug = "acer" 和 categories.category_slug = "laptop em>”。 例如,我想要 Acer 在笔记本电脑类别中制造的所有产品的列表。

我尝试使用此命令行,但显然我收到了所有制造商生产的所有笔记本电脑的列表...

我应该如何进行?

SELECT products.product_slug,
products.product_description,
products.product_img,
products.product_is_on_top,
products.product_title
FROM products
LEFT OUTER JOIN categories ON products.category=categories.category_slug
LEFT OUTER JOIN brand_category ON categories.category_slug=brand_category.category_slug
LEFT OUTER JOIN brands ON brand_category.brand_slug=brands.brand_slug
WHERE brands.brand_slug= "acer"
AND categories.category_slug="laptop"

【问题讨论】:

  • 使用内连接代替外连接。
  • 我试过了,但结果相同(返回所有制造商的所有笔记本电脑产品的列表)。我认为他这样做是因为他不知道哪个产品属于哪个制造商。 “品牌”和“类别”之间存在 “ManytoMany” 关系,“类别”和“产品”之间存在 “OneToMany” 关系。

标签: mysql sql many-to-many one-to-many entity-relationship


【解决方案1】:

试试这个

SELECT products.product_slug,
products.product_description,
products.product_img,
products.product_is_on_top,
products.product_title
FROM products
INNER JOIN categories ON products.category=categories.category_slug
INNER JOIN brand_category ON categories.category_slug=brand_category.category_slug
INNER JOIN brands ON brand_category.brand_slug=brands.brand_slug
WHERE brands.brand_slug= 'acer'
AND categories.category_slug='laptop'

【讨论】:

  • 我试过了,但结果相同(返回所有制造商的所有笔记本电脑产品的列表)。我认为他这样做是因为他不知道哪个产品属于哪个制造商。 “品牌”和“类别”之间存在 “ManytoMany” 关系,“类别”和“产品”之间存在 “OneToMany” 关系。
【解决方案2】:
SELECT 
    orderNumber,
    orderDate,
    orderLineNumber,
    productName,
    quantityOrdered,
    priceEach
FROM
    orders
INNER JOIN
    orderdetails USING (orderNumber)
INNER JOIN
    products USING (productCode)
ORDER BY 
    orderNumber, 
    orderLineNumber;

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多