2011-08-08 4 views
0

je voulais savoir s'il était possible de faire une sélection sur une table qui contient champs multiples et les joindre à 1 résultat:joindre plusieurs champs de la même table

Exemple:

Tableau:

id 
dayOne_City 
dayTwo_City 
dayThree_City 

Résultat: une colonne contenant les lignes de toutes les villes (Distinct).

2) Suis-je mieux de faire une vue si j'ai beaucoup de requête à cette liste spécifique?

3) devrais-je faire 3 sélectionner avec union?

Merci

+1

Ce que vous devriez faire est de refactoriser votre base de données pour avoir une table liée. – HLGEM

+1

vous avez raison nous avons fait une erreur lorsque nous avons conçu les tables ... payer le prix maintenant :) – Tarek

Répondre

5

Vous devriez être bien avec:

select dayOne_City from YourTable 
UNION 
select dayTwo_City from YourTable 
UNION 
select dayThree_City from YourTable 

Cependant, vous devriez revoir votre conception pour permettre à plusieurs villes par les magasins tout-est-ce-votre-table. Autrement dit, créez une relation plusieurs-à-plusieurs en créant une table intermédiaire entre YourTable et Cities.

+0

je crée une vue de cela ou l'utilise telle quelle? Et si la ville est associée à une région, existe-t-il un moyen de générer 2 colonnes de résultats? (region - city) – Tarek

+0

A propos de la création d'une vue: si vous affichez cette information à plusieurs endroits alors oui, vous devriez probablement créer une vue. Et oui, vous pouvez l'associer à la région: 'jointure interne', sélectionnez chacun avec' Cities' (et peut-être 'Regions') et obtenez la colonne de la région désirée. –

+0

La région est dans la même table, même rangée que la ville – Tarek

0
select concat_ws(',', id, dayOne_city, dayTwo_city, dayThree_city, etc...) as allInOne 

Détails sur la fonction utilisée here. Cependant, je devrais demander pourquoi vous faites ceci. En rejoignant les champs ensemble, vous détruisez toute chance d'extraire/séparer les données de manière fiable plus tard. Seulement faire ce genre de "gonflement" si vous ne prévoyez jamais d'utiliser des parties séparées des données ailleurs en fonction des résultats de cette requête.

+0

désolé je pense que dident expliquer correctement, je n'ai pas besoin de faire une concatense que je veux extraire toutes les villes de tous les champs – Tarek

Questions connexes