У меня возникла проблема.
То, что делает следующий код, захватывает детали из первой таблицы, только если критерии из второй совпадают (и исключает текущего члена [player_id] изquery [WHERE]).
Что мне нужно сделать, это получить данные из первой таблицы, исключая пользователей из второй таблицы.
Так что, если игрок уже сопоставил сПользователь исключает это из результатов; это должен быть список ранее не встречавшихся пользователей .
Совпадения существуют только после события, поэтому необходимо проверить, было ли совпадение или нет.
Я думал, что использования <> в JOIN будет достаточно, но это не работает, и старые потоки говорят, что используют OUTER, но это тоже не работает.LEFT JOIN не исключает, а RIGHT JOIN возвращает то же самое, что и JOIN.
SELECT
a.user_id,
b.*
FROM
tblUsers a
JOIN tblMatches b
ON (b.player_1 = ". $player_id ." AND b.player_2 = a.user_id)
OR (b.player_2 = ". $player_id ." AND b.player_1 = a.user_id)
WHERE
a.user_id <> ". $player_id ."
GROUP BY
a.user_id
Обновление примеров данных:
- tblUsers, буквально список идентификаторов пользователей (1, 2, 3, 4 и т. Д.).
- tblMatches, один идентификатор пользователя и другой идентификатор пользователя (1 и 3, 2 и 3, 4 и 1 и т. Д.)