たとえば、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_id
coupon
image_id
user_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
したがって、このクエリは、そのユーザーとその画像にアクティブなものがあるかどうかを教えてくれます。
上記のクエリでは、各画像を個別にクエリする必要があるため、データベースに負荷がかかります。一緒に参加できますか?