Mysql
 sql >> база данни >  >> RDS >> Mysql

Условното присъединяване на mysql зависи от колона

не можете условно да създавате връзки между таблици. Най-добрият начин да направите е да използвате LEFT JOIN и да използвам CASE във вашия SELECT изявление. Трябва да посочите общи колони, които искате да показвате,

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на променлива в клаузата WHERE

  2. Запазете данните офлайн преди публикуване

  3. Mysql - повторно използване на изчислени стойности

  4. MySQL PDO е подготвен по-бързо от заявката? Това показва този прост тест

  5. Мога ли да използвам множество изрази в JDBC подготвена заявка?