2013-01-04 8 views
0
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 

Я хочу присоединиться к различным таблицам в зависимости от значения типа столбца. Это мой текущий псевдокод:Подключить таблицу в зависимости от значения столбца в основной таблице

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 

Любой знает реальный запрос для моего намерения?

+0

Это возможно с помощью процедуры в MySQL или вы можете сделать это с кодированием –

+1

я честно рекомендовал бы даже не пытаясь понять это. Похоже, вы должны сосредоточиться на изменении структуры того, как выкладываются ваши таблицы. –

+0

и каков ваш желаемый результат? –

ответ

2

Что-то вроде

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 

Но я настоятельно рекомендую, чтобы перестроить систему, чтобы избежать полиморфного отношения ...

Смежные вопросы