这是我的问题:
SELECT p.product_id,p.title,p.price,p.total_sales,p.total_revenue,p.timestamp,i.image_id
FROM products AS p
INNER JOIN products_images AS i
ON p.product_id = i.product_id
WHERE p.account_id = ? AND p.deleted=0 AND i.featured=1
我想获得i.image_id WHERE i.featured = 1
但我不知道如何应用该条件以便它仅适用于images表。查询有效,但我没有从products表中获得所有结果,只有一行。
显然在某些情况下,如果feature = 1,可能没有image_id可用。因此,在这种情况下,它必须吐出其他东西。
答案 0 :(得分:1)
将其更改为
FROM products AS p
left outer join products_images AS i
ON p.product_id = i.product_id
AND i.featured=1
WHERE p.account_id = ? AND p.deleted=0"))
答案 1 :(得分:1)
使用LEFT JOIN
,即使没有图像,您也会获得结果。你会发现每一张图片都有一行。如果不合适,请使用GROUP BY p.product_id
来获取每个产品一次。
是的,将AND i.featured=1
条件置于ON语句中,如@Abercrombieande所述。