sql - 从连接表中获取额外数据

标签 sql mysql

好的,我有这个结构

产品

* PRODUCT_ID (primary key)
* PRODUCT_NAME

类别

* CATEGORY_ID (primary key)
* CATEGORY_NAME
* CODE

PRODUCT_CATEGORIES_MAP

* PRODUCT_ID (primary key, foreign key to PRODUCTS)
* CATEGORY_ID (primary key, foreign key to CATEGORIES)
* QUANTITY

我正在使用这个查询

SELECT * FROM `products`
where id in (
    SELECT `product_id`
    FROM `categorizations`
    WHERE category_id = (
        SELECT id
        FROM `categories`
        where code = 'something'))

这很好用,但我只是得到了一个产品列表。我需要连接表中每一个的数量

最佳答案

您解释中的表名与您的示例查询不同。我使用了您查询中的那些。

SELECT p.product_id  ,
       p.product_name,
       pc.quantity
FROM   `products` p
       JOIN `categorizations` pc
       ON     p.id = pc.`product_id`
       JOIN `categories` c
       ON     c.id = pc.category_id
WHERE  c.code      = 'something'

关于sql - 从连接表中获取额外数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605010/

相关文章:

mysql - 是否每个 SQL 都在未到达 COMMIT 点时撤消?

php - 如何在动态查询中模拟 WHERE 1?

sql - 是否有任何开源查询语言不可知关系存储引擎?

mysql - 关于sql中连接的一般查询

c# - 使用纬度/经度计算最近点的距离?

MySQL根据当前表中的单元格从另一个表中获取多个值

mysql - 执行捆绑安装时 MySql 出错

php - Cakephp 3 无法同时保存多个翻译

php - 如何在不使用 PHP PDO 的情况下访问 MySQL 数据库?

php - 如何处理此 PHP/mysql 插入语句中的空值