间接连接三个表多行

时间:2015-11-13 16:08:25

标签: mysql sql

我有三张桌子:

1- j_order: order_id, order_created,
2- j_order_product: order_product_code, order_product_name, product_id, order_id
3- j_product_category: product_id, category_id

现在,我需要选择所有这些字段。 关系是:

j_order.order_id = j_order_product.order_id
j_order_product.product_id = j_product_category.product_id

这是我使用的查询:

SELECT  j_order.order_id, order_created , order_product_code, 
    order_product_name, j_order_product.product_id, j_product_category.category_id 
    FROM  `j_order` 
    INNER JOIN `j_order_product`
    ON j_order.order_id = j_order_product.order_id
    INNER JOIN `j_product_category`
    ON j_product_category.product_id = j_order_product.product_id
    WHERE category_id=2

问题:每个订单只返回一个产品。因此,对于包含多个产品的订单,只有第一个可见。

1 个答案:

答案 0 :(得分:0)

SELECT  j_order.order_id, order_created , order_product_code, 
    order_product_name, j_order_product.product_id, j_product_category.category_id 
    FROM  `j_order` 
    INNER JOIN `j_order_product`
    ON j_order.order_id = j_order_product.order_id
    INNER JOIN `j_product_category`
    ON j_product_category.product_id = j_order_product.product_id

这样可以正常工作。 我排除了WHERE category_id=2,这就是为什么它只显示one Product per Order类别2)

希望这有帮助。