MySQL Multiple Joins in one query?

后端 未结 4 790
执念已碎
执念已碎 2020-12-02 05:45

I have the following query:

SELECT
  dashboard_data.headline,
  dashboard_data.message,
  dashboard_messages.image_id 
FROM dashboard_data
INNER JOIN dashboa         


        
相关标签:
4条回答
  • 2020-12-02 06:19

    You can simply add another join like this:

    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 
    

    However be aware that, because it is an INNER JOIN, if you have a message without an image, the entire row will be skipped. If this is a possibility, you may want to do a LEFT OUTER JOIN which will return all your dashboard messages and an image_filename only if one exists (otherwise you'll get 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 
    
    0 讨论(0)
  • 2020-12-02 06:19

    Just add another 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 
        INNER JOIN images
                ON dashboard_messages.image_id = images.image_id
    
    0 讨论(0)
  • 2020-12-02 06:26

    Multi joins in SQL work by progressively creating derived tables one after the other. See this link explaining the process:

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

    0 讨论(0)
  • 2020-12-02 06:34

    I shared my experience of using two LEFT JOINS in a single SQL query.

    I have 3 tables:

    Table 1) Patient consists columns PatientID, PatientName

    Table 2) Appointment consists columns AppointmentID, AppointmentDateTime, PatientID, DoctorID

    Table 3) Doctor consists columns 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
    

    I wrote the solution to get date format like "mm/dd/yy" (under my name "VARUN TEJ REDDY")

    0 讨论(0)
提交回复
热议问题