MySQL Multiple Joins en une seule requête?

J’ai la requête suivante:

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 

J’utilise donc INNER JOIN et image_id l’ image_id . Alors maintenant, je veux prendre cette image_id et la transformer en images.filename partir de la table images.

Comment puis-je append cela à ma requête?

Vous pouvez simplement append une autre jointure comme ceci:

 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 

Sachez toutefois que, comme il s’agit d’un INNER JOIN , si vous avez un message sans image, la ligne entière sera ignorée. Si cela est possible, vous pouvez faire une LEFT OUTER JOIN qui renverra tous vos messages de tableau de bord et un nom_fichier_image seulement s’il en existe un (sinon vous obtiendrez un 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 

Ajoutez simplement une autre jointure:

 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 

J’ai partagé mon expérience d’utilisation de deux LEFT JOINS en une seule requête SQL.

J’ai 3 tables:

Tableau 1) Le patient est constitué de colonnes PatientID, PatientName

Tableau 2) Rendez-vous consiste en colonnes AppointmentID, AppointmentDateTime, PatientID, DoctorID

Tableau 3) Docteur composé de colonnes DoctorID, DoctorName


Question:

 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 

J’ai écrit la solution pour obtenir un format de date tel que “mm / jj / aa” (sous mon nom “VARUN TEJ REDDY”)