我遇到了一些问题。用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中使此查询正常工作 是空的 ?
答案 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