Как слева соединить две таблицы и отобразить информацию? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть 3 таблицы:miners с колонками id и name;users с колонками id, name и password;user_miners со столбцами user_id и miner_id (внешний ключ для этих других таблиц)

Мне нужно распечатать имена пользователей и их майнеров, например, у меня есть пользователь с идентификатором 1, и у него есть майнеры с именами f, s, t. Поэтому мне нужно будет распечатать:

1 f
1 s
1 t

как мне это сделать с помощью левого соединения?

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

    ('SELECT user_mineres.user_id, users.id, miners.name
    FROM user_mineres
    LEFT JOIN users
    ON user_mineres.user_id=users.id
    LEFT JOIN miners
    ON users.id=miners.name
    GROUP BY user_mineres.user_id ');

    foreach ($stmt as $row) 
    {
    echo $row['user_id'] . $row['name'] . "<br>";
    }

Я получаю ошибки, что имена столбцов неоднозначны или другие синтаксические ошибки

1 Ответ

1 голос
/ 20 июня 2019

Вам не нужно group by, только правильные объединения и соответствующие предложения ON:

SELECT u.id, m.name
FROM users u
LEFT JOIN user_miners um ON um.user_id = u.id
LEFT JOIN miners m ON m.id = um.miner_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...