sql >> Database >  >> RDS >> Mysql

mysql voorwaardelijke join hangt af van een kolom

u kunt geen voorwaardelijk joins maken voor meerdere tabellen. De beste manier om dit te doen is om LEFT JOIN te gebruiken en gebruik je CASE in je SELECT uitspraak. U moet gemeenschappelijke kolommen specificeren die u wilt weergeven,

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. Hoe UTF-8-tekens weergeven in phpMyAdmin?

  2. Wat is T-SQL?

  3. Negeer de datumbereikparameter in de waar-clausule wanneer de parameter niet is ingevoerd

  4. Tabelnaam parametreren in .NET/SQL?