方法1
SELECT o.*,
bc.*,
s.name AS plan_name,
p.image AS course_image,
p.id AS course_id,
p.name AS course_name,
p.id,
p.level
FROM wg_guru_order o
JOIN wg_guru_buy_courses bc
ON o.id = bc.order_id
JOIN wg_guru_subplan s
ON bc.plan_id = s.id
JOIN wg_guru_program p
ON bc.course_id = p.id
WHERE o.status = 'Paid'
AND bc.userid = 451
OR p.catid = 26
AND p.published = 1
EXPLAINコマンド出力
方法2
SELECT o.*,
bc.*,
s.name AS plan_name,
p.image AS course_image,
p.id AS course_id,
p.name AS course_name,
p.id,
p.level
FROM wg_guru_order o,
wg_guru_buy_courses bc,
wg_guru_subplan s,
wg_guru_program p
WHERE o.status = 'Paid'
AND o.id = bc.order_id
AND bc.userid = 451
AND bc.plan_id = s.id
AND bc.course_id = p.id
OR p.catid = 26
AND p.published = 1
EXPLAINコマンド出力
上記の2つは同じで、たまたまうまく機能しています。唯一の違いは、メソッド1のクエリはJOIN
claues&を使用してON
記述され、メソッド2はJOIN
省略形のメソッドを使用して記述されることです。
問題は、メソッド1が3行を返し、メソッド2が1543行を返すことです。同じクエリが異なる結果を返すにはどうすればよいですか?
なぜそうなのかを理解したいだけです。結果セットについては気にしません。2つの方法で記述された同じクエリが、異なるタイプの結果セットをどのように出力できるのでしょうか。