im obtenir une erreur sur cette requête: erreur: p> VIOLATION CARDINALITÉ: 1242 SUBQUERY retourne plus d'une ligne p>
blockQuote> Je sais que cela pourrait être résolu en utilisant une déclaration de jointure, mais je ne sais pas comment résoudre ce problème. P> Pour clarifier davantage ma question, j'ai deux tables, utilisateur et userinfo: p> utilisateur em> p> userinfo em> p> L'information info_id à partir de
utilisateur code> est lié à l'ID de userinfo code>, donc avoir une liste d'identifiants userinfo dans ce format (1,4,7,8,9 ) Je souhaite nom et nom de famille (à partir de userinfo code>) et nom d'utilisateur à partir de utilisateur code> correspondant à l'info_id p> p>
4 Réponses :
Vous devez spécifier la relation entre les deux table dans la sous-requête corrélée, et en utilisant Pour obtenir plus de connaissances sur les jointures, veuillez visiter le lien ci-dessous: p> joindre code> ( que j'ai préféré plus em>) p>
SELECT i.name, i.surname, u.username as email
FROM `userinfo` i
INNER JOIN
`user` u ON i.info_id=u.id
WHERE i.id IN (1,9,10,15,25,40,42,43,44)
Learn to use joins, without them you are working wit both hands tied behind your back AND blindfolded. Joins are how to use the Relational part of Relational Databases.
Le plus compact mais lisible, et le fait de ne pas savoir que les jointures est travailler avec les deux mains attachées derrière votre dos i> aussi.
Vous êtes uniquement autorisé à renvoyer une ligne dans une liste de terrain. Il semble que vous souhaitiez regrouper les résultats.
SELECT
i.name, i.surname,
GROUP_CONCAT(u.username) AS email
FROM
userinfo i
JOIN user u ON (i.id = u.info_id)
WHERE
i.id IN (1,9,10,15,25,40,42,43,44)
GROUP BY
i.id
Voulez-vous dire:
(sélectionnez u.Ausername à partir de l'utilisateur u où u.info_id in (1,9,10,15,25,40,42,43,44)) code> retourne plus d'un élément et ne peut pas être manipulé .