У меня есть три таблицы в базе данных MySql, к которым я присоединяюсь в запросе, чтобы получить пары идентификатор / значение.
| A | B | C |
| -------- |--------------|---------------|
| id | id | id |
| name | fooId | attributeId |
| desc | value | displayIndex |
| ... | attributeId | ... |
Теперь у меня есть:
SELECT C.id, B.value
FROM A, B, C
WHERE A.id = B.attributeId
AND A.id = C.attributeId
AND B.fooId = 25
ORDER BY C.displayIndex
Итак, в основном мы соединяем B и C через A. Раньше считалось, что запись в таблице C должна иметьсоответствующая (родительская) запись в таблице А.Однако это больше не будет иметь место.Таблица C по-прежнему ДОЛЖНА управляться таблицей A, однако в некоторых случаях нам нужна отдельная (всегда включенная) запись в таблице C.
EDIT
Я хочу, чтобы все записи из B и C совпадали по attributeId, но я также хочу любую запись, где C.attributeId = -1.Может ли кто-нибудь помочь с тем, что мне нужно сделать с этим запросом?
Редактировать # 2
На основе отзывов и предложений, которые вы, ребята, сделали, и некоторого поиска в Google сейчасесть это:
(SELECT C.id, B.value, C.displayIndex
FROM B, C
WHERE B.attributeId = C.attributeId
AND B.fooId = 25)
UNION
(SELECT C.id, null, C.displayIndex
FROM C
WHERE C.attributeId = -1)
ORDER BY 3
Есть ли что лучше сделать?Есть ли проблемы с UNION?