Tenho 3 tabelas:
miners
com colunas id
e name
;
users
com colunas id
, name
e password
;
user_miners
com colunas user_id
e miner_id
(chave estrangeira para essas outras tabelas)
Preciso imprimir os usuários e seus nomes de mineiros, por exemplo, tenho um usuário com id 1 e ele tem mineiros com os nomes f, s, t. Portanto, preciso imprimir:
1 f
1 s
1 t
como faço isso usando a junção à esquerda?
Eu tentei todas as junções à esquerda possíveis, mas não consigo fazer funcionar, talvez simplesmente porque eu não entendo o conceito de junção à esquerda
('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>";
}
Recebo erros de que os nomes das colunas são ambíguos ou outros erros de sintaxe
Você não precisa de um group by
, apenas as junções adequadas e as cláusulas ON adequadas:
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
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras