sql >> Database teknologi >  >> RDS >> Mysql

mysql betinget join afhænger af en kolonne

du kan ikke betinget oprette joinforbindelser på tværs af tabeller. Den bedste måde at gøre det på er at bruge LEFT JOIN og brug din CASE i din SELECT udmelding. Du skal have angivet almindelige kolonner, du vil vise,

SELECT *,
        (CASE notification_base.type
            WHEN 'photo'
            THEN photo.columnName1
            ELSE post.ColumnName1
        END) as ColumnName1,
        (CASE notification_base.type
            WHEN 'photo'
            THEN photo.columnName2
            ELSE post.ColumnName2
        END) as ColumnName2
FROM notification_action
    INNER JOIN notification_base
        ON notification_action.not_base_id = notification_base.id
    INNER JOIN notification_sub
        ON notification_action.not_base_id = notification_sub.not_base_id
    INNER JOIN photo
        ON photo.id = notification_base.object_id
    INNER JOIN post
        ON post.id = notification_base.object_id
WHERE notification_sub.user_id = 3
    AND notification_sub.lastShowDate < notification_action.creationDate;



  1. Brug af Oracle to_date-funktionen til datostreng med millisekunder

  2. DB-skema til chats?

  3. Materialiseret visning i mysql

  4. Har brug for Oracle SQL for at opdele dato/tidsinterval efter dag