Я использую MySQL.Как присоединиться к разным таблицам?
У меня есть три стола с именем ratings
, users
и одна основная таблица master_entityType
.
В зависимости от значений от entityTable
столбец таблицы master_entityType
, я должен присоединиться к другой таблице. Если значения от master_entityType
- это «Блоги», я должен присоединиться к таблице blogs
. Если значения из master_entityType являются «элементами», я должен присоединиться к таблице items
.
SELECT * FROM ratings AS r
LEFT JOIN users AS u ON u.userID = r.userID
LEFT JOIN master_entityType AS ms ON ms.entityTypeID = r.entityTypeID
CASE ms.entityTable
WHEN 'Blogs' THEN INNER JOIN blogs AS b ON b.blogID = r.entityID
END
WHERE r.entityTypeID = '10' AND r.entityID = '1' AND r.userID = '1'
При использовании вышеуказанного запроса у меня возникает ошибка, пожалуйста, предложите некоторый шаг, чтобы заставить этот запрос работать.
Структура таблицы следующим образом,
В таблице пользователей,
UserID userName isActive
1 Dinesh 1
2 Kumar 1
В таблице оценок,
ratingID entityID entityTypeID userID rating
1 1 1 1 5
2 4 2 1 4
В master_entityType таблице
entityTypeID entityTable entityTypeName entityTypeDescription active
1 blogs Blogs Null 1
2 items Items Null 1
В Элементы t состоянии,
ItemID name collection active
4 pencil 12 1
5 pen 06 1
В блогах таблице
blogID name active
1 socail 1
2 private 1
Просто используйте 'LEFT JOIN', но ваша попытка выглядит странно - * все * строки, возвращаемые запросом, должны быть одного типа. – zerkms
Дайте мне скрипт SQL для схемы таблиц и некоторых фиктивных данных, я сделал такой вид на вещи в моем проекте –
, что вы получаете? это основная информация для начала, и вы забыли поставить ее в вопрос ... пожалуйста, добавьте ее в вопрос и не оставляйте ее в комментариях. – Paolo