Взгляните на следующий MYSQL запрос:MySQL автообъединение вопрос
SELECT fname,lname FROM users WHERE users.id IN (SELECT sub FROM friends WHERE friends.dom = 1)
Этот запрос первым создает множество всех friends.sub с помощью внутреннего запроса, а затем внешний запрос выбирает список пользователи, где идентификаторы пользователя содержатся в наборе, создаваемом внутренним запросом (т. е. объединение двух наборов).
И это отлично работает. Но если вам необходимо внутренний набор содержит не только подводные лодки, где дом = 1, но и Домс где к югу = 1, например, так: Внешний запрос остается таким же, как и выше, чистый псевдокод:
(SELECT sub FROM friends WHERE friends.dom = 1)
***AND***
(SELECT dom FROM friends WHERE friends.sub = 1)
Является ли это возможно сделать такую функциональность с внутренним запросом?
помощь или помощь оценили ребята ;-D
Большое спасибо, ребята, моя головная боль уже нет!
Хорошие ребята! это самый оптимальный подход? –
@ DJDonaL3000: Да, я так считаю. Если вы планируете иметь много записей, вы должны убедиться, что 'sub' и' dom' проиндексированы правильно. Вы можете использовать команду MySQL ['EXPLAIN'] (http://dev.mysql.com/doc/refman/5.0/en/explain.html), чтобы узнать, использует ли запрос индекс или нет. –
Как пользователи и друзья объединяются, когда они разные таблицы? – Xailor