MySql LEFT连接多个具有相同ID或名称的表

时间:2016-06-02 11:21:08

标签: php mysql sql-server join

我遇到了一些问题。用JEFT JOIN sql语句。 我有3张桌子:

用户,产品,prod_images。

table.user user_id 

table.products user_id item_id

table.prod_images user_id item_id

当我运行此查询以获取关系数据时,其工作正常。 但只有在prod_images表不为空时才有效。 当prod_images空了 sql右连接合并结果,我得到product.item_id数组

的null
 SELECT products.*, prod_images.*, users.*
 FROM products 
 LEFT JOIN prod_images 
    ON products.item_id=prod_images.item_id
    AND prod_images.is_primary = '1'
JOIN users 
    ON users.user_id=products.seller_id 
    WHERE products.status = '1' 
    ORDER BY created DESC 

如何在table.prod_images中使此查询正常工作 是空的 ?

1 个答案:

答案 0 :(得分:0)

我相信你的查询几乎没问题。

它会返回您要求的所有内容,但您应该避免请求products.*, prod_images.*, users.*,因为它很容易让我们感到困惑。

因此,如果您将此部分至少更改为SELECT products.item_id PRODUCTS_ITEM_ID, products.*, prod_images.*, users.*

另外请注意,当products.item_id没有相关记录时(因为prod_images编辑),当LEFT JOIN没有相关记录时,您的查询可能不返回users因为它是INNER JOIN。因此,我要从将JOIN users更改为LEFT JOIN users

开始

PS 请看@Reno评论。我没有提到这一点。您确定应将ON products.item_id=products.item_id更改为ON products.item_id=prod_images.item_id