Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Есть таблица "сущностей" entity, таблица связей сущностей entity2entity и таблица объектов object. Каждый объект содержит ссылку на одну из записей сущностей entityID. Вопрос в том как по одному заданному значению индекса сущности eID выбрать все объекты, у которых значение поля entityID связанно с заданным значением eID через таблицу entity2entity?
Спасибо.
Неактивен
Через объединение?
SELECT o.*
FROM object o JOIN entity e ON (…) JOIN entity2entity m ON (…) JOIN entity x ON (…)
WHERE x.eID = $eid.
Кстати, а объект — сущность? Если нет — чем они отличаются?
Неактивен
paulus, спасибо за ответ.
paulus написал:
Через объединение?
А через что еще можно? Связанные подзапросы?
paulus написал:
SELECT o.*
FROM object o JOIN entity e ON (…) JOIN entity2entity m ON (…) JOIN entity x ON (…)
WHERE x.eID = $eid.
Я еще плохо знаю синтаксис операций объединения, поэтому пока не понятно как это работает. В скобках ON (...) должны быть условия присоединения? И зачем два раза присоединять таблицу entity?
paulus написал:
Кстати, а объект — сущность? Если нет — чем они отличаются?
Нет, объект это не сущность, я дал такие названия просто для примера. В данной модели сущности могут быть связанны между собой, а каждый объект может быть привязан только к одной сущности, но на одну сущность могут ссылаться несколько объектов.
Неактивен
Придумал вот такой запрос:
Неактивен
Да, в приведенном мной выше запросе есть ошибка - итоговая таблица содержит дубликаты объектов по числу связей в таблице entity2entity.
Неактивен
Кажется проблема дубликатов решается просто - стоило добавить GROUP BY object.id.
Неактивен