我有三个表:

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


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

最佳答案

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)的原因。

希望这可以帮助。

关于mysql - 联接三个表间接多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33697017/

10-12 18:09