、TABLE1(ID、フィールド1、other_table_id)、表2(ID、フィールド1)と表3(ID、フィールド1)があります。私はtable1でSELECTを持っていますが、field1 = 2または3の値に応じて、テーブル2または3でジョイする必要があります...(other_table_idは、table2またはtable3のIDです)。MySQL:フィールド値に応じたクエリ - ケースを使用してクエリを構築できますか?それを容易にする
これにCASEを使用できますか?そうでない場合は、どのようにして最善を尽くすことができますか1つのクエリでそれを実行できますか?
ありがとうございます!
PS:私は、これは同様のトピックだと思います:MySQL query where JOIN depends on CASEが、私は解決策を理解していませんでした。また、私はEDIT
... MySQLの(http://dev.mysql.com/doc/refman/5.0/en/case-statement.html)からCASEを使用する方法を得ることはありません:ypercube、あなたの答えをありがとう!申し訳ありませんが、私は構造が完全に正しいとは言えませんでした。実際には、テーブルは次のようになります。
TABLE1:ID、ASSIGNED_TOは、assigned_id rooms_assigned:ID、objects_idは、 オブジェクトroom_type_id:ID、...だから
を、私はPHPの$のOBJECT_IDオブジェクトIDを持っていますだから、どのようにクエリのWHEREでこれを使用しますか?私は「WHERE」自分のためにについての質問を解決すると思う:
SELECT COALESCE (ra.objects_id, o.id) AS objects_id
FROM table1 as t
LEFT JOIN rooms_assigned AS ra
ON (ra.id,2)=(t.assigned_id,t.assigned_to)
LEFT JOIN objects AS o ON (o.id,3)=(t.assigned_id,t.assigned_to)
WHERE ?
EDIT 2は?:
あなたの答えによると、右のクエリは次のようになります。私は単にクエリステートメントでWHEREを使用しませんでしたが、ON(ra.id、ra.object_id、2)=(t.assigned_id、 "。$ object_id。"、t.assigned_to)のように "ON" ...
ありがとう、あなたは大きな助けになりました! :)
は、あなたの答えをypercube感謝、それは非常に素晴らしいと理解しやすいです!しかし、私はこれを実装するにはどうすればいいのでしょうか?ありがとうございました! – Chris
ありがとう、ypercube、私は自分のためにそれを解決したと思う! :) – Chris