Mysql
 sql >> Base de données >  >> RDS >> Mysql

Joindre différentes tables en fonction de la valeur de la colonne

Je ne suis pas sûr à 100 % que la syntaxe soit correcte et je n'ai aucune chance de la tester pour le moment, mais l'idée devrait être claire.

SELECT DISTINCT n.id 
FROM notifications n 
JOIN (
     (SELECT b.id, 'book' AS type FROM books b WHERE b.is_visible = 1)
  UNION
     (SELECT i.id, 'interview' AS type FROM interviews i WHERE i.is_visible = 1)
) ids ON n.parent_id = ids.id AND n.parent_type = ids.type
WHERE n.user_id = 1