Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
654 views
in Technique[技术] by (71.8m points)

mysql - Join table depending on value of column in main table

notificationTable
ID              type        typeID      userID
==============================================
1               comment     34          2
2               accept      22          2

eventTable
ID              event       content
===================================
21              post        34  
22              accept      22

commentTable
ID              comment     eventID
===================================
34              'test'      21

I want to join different tables depending on the value of the column type. This is my current pseudocode:

SELECT *
FROM notificationTable notification
IF (notification.type == 'comment')
    LEFT JOIN commentTable comment
    ON notification.typeID = comment.ID
ELSEIF (notification.type == 'accept')
    LEFT JOIN evenTable event
    ON notification.typeID = event.ID
WHERE notification.userID = 2

Anyone knows the real query for my intention?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Something like

SELECT *
FROM notificationTable notification   
LEFT JOIN commentTable comment
ON (notification.typeID = comment.ID AND notification.type == 'comment')
LEFT JOIN evenTable event
ON (notification.typeID = event.ID AND notification.type == 'accept')
WHERE notification.userID = 2

But I strongly recommend to redesign your system to avoid polymorphic relationship...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...