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
из таблицы изображений.
Как добавить это в мой запрос?
Ответы
Ответ 1
Вы можете просто добавить другое соединение следующим образом:
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
, который вернет все ваши сообщения панели мониторинга и имя_файла изображения только в том случае, если он существует (в противном случае вы получите нуль)
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
Ответ 2
Просто добавьте еще одно соединение:
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
Ответ 3
Я поделился своим опытом использования двух LEFT JOINS в одном запросе SQL.
У меня есть 3 таблицы:
Таблица 1) Пациент состоит из столбцов PatientID, PatientName
Таблица 2) Назначение состоит из столбцов AppointmentID, AppointmentDateTime, PatientID, DoctorID
Таблица 3) Доктор состоит из столбцов DoctorID, DoctorName
Query:
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
Я написал решение для получения формата даты типа "мм/дд/гг" (под моим именем "VARUN TEJ REDDY" )