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 un INNER JOIN
et saisis le image_id
. Alors maintenant, je veux prendre cette image_id et la transformer en images.filename
à partir de la table des images.
Comment puis-je ajouter cela à ma requête?
Vous pouvez simplement ajouter une autre jointure comme celle-ci:
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
Cependant, sachez 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 voudrez peut-être faire un LEFT OUTER JOIN
qui renverra tous vos messages de tableau de bord et un nom de fichier image uniquement s'il en existe un (sinon, vous obtiendrez une valeur nulle).
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 liaisons gauche dans une requête SQL unique.
J'ai 3 tables:
Tableau 1) Le patient est composé des colonnes PatientID, PatientName
Tableau 2) Le rendez-vous est composé des colonnes ID de rendez-vous, Heure du rendez-vous, ID de patient, ID de docteur
Tableau 3) Doctor est composé de colonnes DoctorID, DoctorName
Requete:
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 format de date comme "mm/jj/aa" (sous mon nom "VARUN TEJ REDDY")
Les jointures multiples dans SQL fonctionnent en créant progressivement des tables dérivées les unes après les autres. Voir ce lien expliquant le processus:
https://www.interfacett.com/blogs/multiple-joins-work-just-like-single-joins/