는 표 (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를 사용할 수 있습니까? 그렇지 않다면 최선을 다 할 수 있습니까? 하나의 쿼리에서이 작업을 수행 할 수 있습니까?
미리 감사드립니다.
PS :이 비슷한 주제라고 생각합니다 : MySQL query where JOIN depends on CASE하지만이 솔루션을 이해하지 못했다. ypercube, 답변 주셔서 감사합니다 : 또한, 나는
편집 ... MySQL은 (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html)에서 CASE를 사용하는 방법을하지 않습니다! 미안 해요. 구조가 완벽하지 않다고 설명 했어요. 사실, 표는 다음과 같다 :
표 : 아이디, assigned_to는 ASSIGNED_ID rooms_assigned : 아이디, objects_id는 객체 room_type_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