потерял с MySQL INNER Присоединиться запрос - PullRequest
0 голосов
/ 20 февраля 2012

Хорошо, у меня есть запрос, с которым я играю. Который работает до определенного момента, но все еще не дает точных результатов, которые я хотел бы.

SELECT DISTINCT b.friendID, b.isactive, c.*
            FROM memb_baseInfo a INNER JOIN memb_friends b ON
            a.mID = b.mID
            INNER JOIN memb_baseInfo c ON
            b.friendID = c.mID
            WHERE b.`isactive` = 0 OR b.`isactive` = 1
            AND a.mID = '21'

$ mid - динамическая переменная.

Что я хочу сделать, так это найти в таблице memb_friends mID или friendID, которые соответствуют заданному динамическому $ mid. Из этого получаем информацию из другой таблицы. memb_baseInfo. Где mID является своего рода внешним ключом. Обе таблицы имеют mID в качестве совпадающей переменной. но в memb_friends friendID и mID, по сути, одно и то же, что и таблица memb_baseInfo. Мои фиктивные данные - это в основном мой mID и 5 поддельных, 2 из которых в настоящее время не имеют никакого отношения ко мне, и 3, которые подружились со мной. Моя проблема в том, что это только сбор информации, где у моего mID (21) есть friendID, но если кто-то подружился со мной, а в таблице друзей есть номер mID, я не получаю информацию. Я пытался понять, как сделать это в обоих направлениях, но у меня ничего не получается. Надеюсь, у меня есть смысл, кто-нибудь сможет помочь>?

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Ты ищешь друзей 21 года, верно? Используйте это: (не проверено)

SELECT DISTINCT a.*
  FROM memb_baseInfo a
 WHERE a.mID IN (
  SELECT b.friendID FROM memb_baseInfo a INNER JOIN memb_friends b ON a.mID = b.mID
   WHERE (b.`isactive` = 0 OR b.`isactive` = 1)
     AND a.mID = '21')
0 голосов
/ 20 февраля 2012

После продолжения игры с ним в ожидании ответа я на самом деле придумал

SELECT * FROM memb_friends a 
INNER JOIN memb_baseInfo b ON a.friendID = b.mID OR a.mID = b.mID
WHERE a.isactive = 1 AND b.mID NOT IN(".$mid.") AND (a.mID = '".$mid."' OR a.friendID = '".$mid."')

где $ mid будет 21, как указано в исходном запросе выше. Это позволит мне получить все соединения, которые у меня есть, и получить всю информацию, которая мне в данный момент требуется из моего исходного вопроса.

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