爲了方便,有表1(ID,FIELD1,other_table_id),表2(ID,FIELD1)和表3 (ID,字段1)。我在table1上有一個SELECT,但取決於field1 = 2或3的值,它應該與表2或3一起加入...(其他_table_id然後是table2或table3的id)。MySQL:查詢取決於字段值 - 可以CASE幫助建立您的查詢?
我可以使用CASE嗎?如果不是,我該如何做到最好?我可以在一個查詢中完成嗎?
非常感謝您提前!
PS:我覺得這是一個類似的話題:MySQL query where JOIN depends on CASE,但我不明白的解決方案。另外,我不明白如何使用CASE從MySQL(http://dev.mysql.com/doc/refman/5.0/en/case-statement.html)...
編輯:謝謝您的回答,ypercube!我很抱歉,我描述的結構不完全正確。實際上,表是這樣的:
表1:ID,assigned_to,assigned_id rooms_assigned:ID,objects_id,room_type_id 對象:ID,...
所以,我在PHP $ OBJECT_ID對象ID ,那麼你如何在查詢中的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 ?
編輯2:我想我解決了有關「WHERE」我自己的問題。我只是沒有在查詢語句中使用WHERE,而是將它添加到兩個「ON」,如ON(ra.id,ra.object_id,2)=(t.assigned_id,「。$ object_id。」,t.assigned_to) ...
再次感謝你,你是一個很好的幫助! :)
謝謝ypercube的回答,這是非常大的,易於理解!然而,我忘了說我需要一個WHERE(請參閱上面的編輯)我將如何實現這個?謝謝! – Chris 2012-03-18 11:17:05
再次感謝你,ypercube,我想我自己解決了它! :) – Chris 2012-03-18 11:34:36