Bonjour,
J'ai un problème qui fera sans doute sourire les vieux routards, et qui est ridicule au point que je suis persuadé avoir *su* la réponse. Mais là je suis un peu dans le brouillard.
J'ai deux tables :
La première comprend les données principales pour chaque enregistrement, par exemple Numéro, rue, ville, etc., ainsi qu'un identifiant ID.
La seconde table contient une liste de personnes : Nom, prénom, etc., Chaque "personne" possède également un identifiant ID, indentique à celui de la maison où il habite.
Chaque ligne de la première table peut donc correspondre à plusieurs lignes de la seconde, car comme vousl'aurez compris plusieurs personnes peuvent vivre à la même adresse.
Je fais donc la jointure comme ça :
SELECT DISTINCT table1.ID,table1.numero ,table1.rue,table2.nom,table2.prenom FROM table1 LEFT JOIN table2 ON table2.ID=table1.ID WHERE (table1.rue like '%X%' or table2.nom like '%X%' ) ORDER BY table2.nom,table1.rue
Mon problème : Si plusieurs enregistrements de la table 2 correspondent à la recherche, il va me sortir une ligne pour chaque. C'est logique, mais ce n'est pas ce que je veux.
Ainsi, si le champs de recherche concerne Durand et qu'il y a deux Durand, à la même adresse, il va me sortir :
Ligne 1 : [ID]=16 ; [numero]=47 ; [rue]=rue des magnolias ; [nom]=Durand ; [prenom]=David
Ligne 2 : [ID]=16 ; [numero]=47 ; [rue]=rue des magnolias ; [nom]=Durand ; [prenom]=Laurent
Or moi, j'aimerai mieux avoir quelque chose du genre :
Ligne 1 : [ID]=16 ; [numero]=47 ; [rue]=rue des magnolias ; [nom1]=Durand ; [nom2]=Durand ; [prenom][1]=David ; [prenom][2]=Laurent
Est-ce-possible ?
Si oui, comment faire ?
Sinon, comment résolvez-vous ce problème quand il se présente à vous ?
Partager