[mysql] 하나의 쿼리에서 MySQL 다중 조인?

다음 쿼리가 있습니다.

SELECT
  dashboard_data.headline,
  dashboard_data.message,
  dashboard_messages.image_id
FROM dashboard_data
INNER JOIN dashboard_messages
  ON dashboard_message_id = dashboard_messages.id

그래서 나는를 사용 INNER JOIN하고 image_id. 이제이 image_id를 images.filename이미지 테이블에서 가져오고 싶습니다 .

내 쿼리에 어떻게 추가 할 수 있습니까?



답변

다음과 같이 다른 조인을 추가 할 수 있습니다.

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data
    INNER JOIN dashboard_messages
        ON dashboard_message_id = dashboard_messages.id
    INNER JOIN images
        ON dashboard_messages.image_id = images.image_id 

그러나이므로 INNER JOIN이미지가없는 메시지가있는 경우 전체 행을 건너 뜁니다. 이것이 가능한 경우 LEFT OUTER JOIN모든 대시 보드 메시지와 하나가있는 경우에만 image_filename을 반환 하는 a를 수행 할 수 있습니다 (그렇지 않으면 null이 표시됨).

SELECT dashboard_data.headline, dashboard_data.message, dashboard_messages.image_id, images.filename
FROM dashboard_data
    INNER JOIN dashboard_messages
        ON dashboard_message_id = dashboard_messages.id
    LEFT OUTER JOIN images
        ON dashboard_messages.image_id = images.image_id 


답변

다른 조인을 추가하기 만하면됩니다.

SELECT dashboard_data.headline,
       dashboard_data.message,
       dashboard_messages.image_id,
       images.filename
FROM dashboard_data
    INNER JOIN dashboard_messages
            ON dashboard_message_id = dashboard_messages.id
    INNER JOIN images
            ON dashboard_messages.image_id = images.image_id


답변

단일 SQL 쿼리에서 두 개의 LEFT JOINS를 사용한 경험을 공유했습니다.

3 개의 테이블이 있습니다.

표 1) 환자는 PatientID, PatientName 열로 구성됩니다.

표 2) Appointment는 AppointmentID, AppointmentDateTime, PatientID, DoctorID 열로 구성됩니다.

표 3) Doctor는 DoctorID, DoctorName 열로 구성됩니다.


질문:

SELECT Patient.patientname, AppointmentDateTime, Doctor.doctorname

FROM Appointment

LEFT JOIN Doctor ON Appointment.doctorid = Doctor.doctorId  //have doctorId column common

LEFT JOIN Patient ON Appointment.PatientId = Patient.PatientId      //have patientid column common

WHERE Doctor.Doctorname LIKE 'varun%' // setting doctor name by using LIKE

AND Appointment.AppointmentDateTime BETWEEN '1/16/2001' AND '9/9/2014' //comparison b/w dates

ORDER BY AppointmentDateTime ASC;  // getting data as ascending order

“mm / dd / yy” (내 이름 “VARUN TEJ REDDY”) 와 같은 날짜 형식 을 얻는 솔루션을 작성했습니다.


답변

SQL의 다중 조인은 파생 테이블을 차례로 점진적으로 생성하여 작동합니다. 프로세스를 설명하는 다음 링크를 참조하십시오.

https://www.interfacett.com/blogs/multiple-joins-work-just-like-single-joins/


답변