Я хочу создать оператор выбора SQL, который будет ПРИСОЕДИНИТЬ несколько таблиц и результаты yeidl. По сути, у меня есть две таблицы, которые независимы друг от друга. Одна таблица содержит пользователей (которые, как предполагается, имеют самую актуальную и правильную информацию), и у меня есть таблица с владельцем, которая называется игроком. Таблица заполнителя имеет столбец с меткой userID, который установлен как NULL. когда пользователь распознается как игрок, значение NULL для идентификатора пользователя заменяется уникальным идентификатором пользователя.SQL-столбец столбца - это нулевые селекторы переопределения
В этом случае я хочу использовать SQL для проверки, является ли userID NULL. я написал следующее заявление, которое не работает
SELECT
teams.*, players.number, players.position, players.userId,
CASE WHEN players.userId IS NULL THEN players.id ELSE userPlayer.id END AS playerId,
CASE WHEN players.userId IS NULL THEN players.firstName ELSE userPlayer.firstName END AS firstName,
CASE WHEN players.userId IS NULL THEN players.lastName ELSE userPlayer.lastName END AS lastName,
CASE WHEN players.userId IS NULL THEN players.email ELSE userPlayer.email END AS email
FROM teams
LEFT JOIN players ON players.teamId = teams.id
LEFT JOIN users AS userPlayer ON userPlayer.id= players.userId
WHERE teams.id = (:t)
Это кажется очень неэффективным. Есть ли способ лучше?
благодаря
ли вам только хотите вернуть результаты, в которых «Player» имеет соответствующий «Пользователь»? Или вы хотите вернуть * все * игроков, а иногда 'userId' будет' NULL', а иногда нет? – ragerory
Я хочу записать пользователя, когда у игрока есть соответствующий пользователь –
Вышеприведенный отчет действительно работает, так как прямо сейчас он циклически перебирает список игроков в команде –