たとえば、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です。
[注: 1 つの場合purchase_idは固有(購入した人) を持ちますがimage_id、1 つの場合は複数持つことができます(多くの人が同じ画像からクーポンを生成できます)。]user_idcouponimage_iduser_id
まず、画像のリストを選択しています -
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したがって、このクエリは、そのユーザーとその画像にアクティブなものがあるかどうかを教えてくれます。
上記のクエリでは、各画像を個別にクエリする必要があるため、データベースに負荷がかかります。一緒に参加できますか?