MySQL LEFT JOIN - PullRequest
       2

MySQL LEFT JOIN

0 голосов
/ 14 февраля 2011

У меня есть структура таблицы следующим образом:

зарегистрирован (от 1 до 0/1) cobuy (от 1 до 0 / *) cobuy_area_instance (от 0 / * до 1) area

Поискв списке зарегистрированных пользователей должны возвращаться пользователи слева направо, например, должны возвращаться зарегистрированные пользователи без профиля cobuy, пользователи с файлом cobuy, но без области, и пользователи со всеми тремя.

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

Любая помощь оценена ...

1 Ответ

1 голос
/ 14 февраля 2011
SELECT R.FIELD_1, C.FIELD_2, CAI.FIELD_3
FROM REGISTERED R
LEFT OUTER JOIN COBUY C ON R.UID=C.UID
LEFT OUTER JOIN COBUY_AREA_INSTANCE CAI ON C.CID=CAI.CID

Должен дать вам каждый элемент из таблицы ЗАРЕГИСТРИРОВАННЫХ плюс все существующие элементы из таблицы COBUY и любые существующие элементы из таблицы COBUY_AREA_INSTANCE.

Обратите внимание, что я имею дело с MSSQL, поэтому синтаксис может быть неправильным.

Отредактировано для предложения WHERE для объединений.

SELECT R.FIELD_1, C.FIELD_2, CAI.FIELD_3
FROM REGISTERED R
LEFT OUTER JOIN COBUY C ON (R.UID=C.UID AND C.DATE > '2011-02-14')
LEFT OUTER JOIN COBUY_AREA_INSTANCE CAI ON C.CID=CAI.CID

Похоже, решение для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...