[英]MySQL FULL JOIN one table, and LEFT JOIN another in the same query?
[英]MySql LEFT join multiple table same with same id or name
我有一些问题。 用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为空时,如何使此查询正常工作?
我相信你的查询几乎没问题。
它会返回您要求的所有内容,但您应该避免请求products.*, prod_images.*, users.*
因为它很容易混淆我们自己。
因此,如果您至少将此部分更改为SELECT products.item_id PRODUCTS_ITEM_ID, products.*, prod_images.*, users.*
而彼此记,查询可能不返回products.item_id
不是当prod_images
没有相关的记录(因为LEFT JOIN
ED),但是当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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.