Je travaille sur une base de données MySQL contenant des personnes. Mon problème est que, (je simplifier pour faire mon point):Problème MySQL simple
J'ai trois tables:
Persons(id int, birthdate date)
PersonsLastNames(id int, lastname varchar(30))
PersonsFirstNames(id int, firstname varchar(30))
L'ID est la clé commune. Il existe des tables séparées pour les noms et prénoms car une même personne peut avoir plusieurs prénoms et plusieurs noms de famille.
Je veux faire une requête qui renvoie toutes les personnes avec, disons, un nom de famille. Si je vais avec
select birthdate, lastname, firstname from Persons, PersonsLastNames,
PersonsFirstNames where Persons.id = PersonsLastNames.id and
Persons.id = PersonsFirstNames.id and lastName = 'Anderson'
je me retrouve avec une table comme
1/1/1970 Anderson Steven //Person 1
1/1/1970 Anderson David //Still Person 1
2/2/1980 Smith Adam //Person 2
3/3/1990 Taylor Ed //Person 3
Lors de la présentation, je voudrais avoir
1/1/1970 Anderson Steven David
2/2/1980 Smith Adam [possibly null?]
3/3/1990 Taylor Ed [possibly null?]
Comment puis-je joindre les tables pour introduire de nouvelles colonnes dans le jeu de résultats si nécessaire pour contenir plusieurs prénoms ou noms de famille pour une personne? SQL ne prend pas en charge un nombre dynamique de colonnes dans la liste de sélection de requête.
Quelle est l'application pratique de cela? Quand une personne a-t-elle plusieurs prénoms et noms de famille? Et puisque la relation que vous avez décrite est de plusieurs à plusieurs, le résultat que vous recherchez pourrait avoir n'importe quel nombre de colonnes. – Ken
@Ken - il pourrait exister dans un sens "Alias connus". – Dereleased
Vous pouvez renommer cette question en quelque chose comme "MySQL - Comment retourner des colonnes dynamiques depuis JOIN?" pour aider les futures personnes à la recherche d'un problème similaire. – philfreo