0

動作しているクエリがあります

SELECT *
FROM the_index AS t1
LEFT JOIN table_2 AS t2 ON (t1.activity_id = t2.id) 
LEFT JOIN table_3 AS t3 ON (t1.activity_id = t3.id)
ORDER BY t1.id;

それは問題なく動作しますが、いくつかのifステートメントで変更したいと思います。

SELECT *
FROM the_index AS t1
LEFT JOIN table_2 AS t2 ON (t1.activity_id = t2.id)     <---- If t1.event = '2'
LEFT JOIN table_3 AS t3 ON (t1.activity_id = t3.id)     <---- If t1.event = '3'
ORDER BY t1.id;
4

2 に答える 2

1

単にこれを使用してください:

LEFT JOIN table_2 AS t2 ON (t1.activity_id = t2.id AND t1.event = '2')
LEFT JOIN table_3 AS t3 ON (t1.activity_id = t3.id AND t1.event = '3')

これは、LEFTJOINが使用されている場合にのみ機能することに注意してください。内部結合では機能しません。

于 2012-06-11T10:34:40.407 に答える
0

意味ですか

SELECT *
FROM the_index AS t1
LEFT JOIN table_2 AS t2 ON (t1.activity_id = t2.id AND t1.event = '2')
LEFT JOIN table_3 AS t3 ON (t1.activity_id = t3.id AND t1.event = '3')
ORDER BY t1.id;

警告:これは、WHEREのような句を結合に入れないというMySQLの推奨事項に明示的に反します。

于 2012-06-11T10:34:52.697 に答える