说,我有3个表 - purchase
,image
,coupons
purchase
表格中的字段为 - purchase_id
,image_id
,user_id
,purchase_time
。
image
表格中的字段为 - image_id
,image_name
,image_caption
以及其他图片详情。
coupon
表格中的字段为 - image_id
,user_id
和coupon_id
。
[注意:单个purchase_id
有唯一的image_id
和user_id
(购买的人),但对于coupon
,单个image_id
可以有多个user_id
{1}}(许多人可以从同一张图片中生成优惠券)。 ]
首先,我正在选择图像列表 -
SELECT p.purchase_id,
p.purchase_time,
p.user_id,
i.image_name,
i.image_caption
FROM purchase p
LEFT JOIN image i ON p.image_id = i.image_id
WHERE p.user_id IN ($friends_id_string)
ORDER BY p.purchase_time DESC
friends_id_string
是用户
user_id
列表
接下来,我需要每张图片coupon_id
(其值也可以是NULL
)
SELECT c.coupon_id
FROM coupon c
WHERE c.image_id = $image_id AND c.user_id = $user_id
因此,此查询会告诉我该用户和该图片是否存在有效coupon_id
。
上述查询涉及分别查询每个图像,这是对数据库进行锤击。我可以一起加入吗?
答案 0 :(得分:0)
这没有经过测试,因为您没有提供架构,示例记录和所需的结果,但尝试一下,
SELECT p.purchase_id,
p.purchase_time,
p.user_id,
i.image_name,
i.image_caption,
c.coupon_id
FROM purchase p
LEFT JOIN IMAGE i
ON p.image_id = i.image_id
LEFT JOIN coupon c
ON c.image_id = p.image_ID AND
c.user_id = p.user_ID
WHERE p.user_id IN ($FRIENDS_ID_STRING)
ORDER BY p.purchase_time DESC