2009-09-29 5 views
0

Comment analyser une valeur délimitée par des tirets dans une table SQL et utiliser les différentes valeurs analysées pour effectuer des recherches dans d'autres tables?Analyse d'une valeur délimitée par des tirets dans une table SQL et recherche

Dites que j'ai users.nationality, qui est un varchar comme "41-33-11". J'ai le pays, la ville et les tables d'état saisies à ces ids, 41 ("Buffalo"), 33 ("NY") et 11 ("USA").

SELECT users.name, users.email, users.nationality FROM utilisateurs

nationalité = "41-33-11"

Comment puis-je CRAFT une instruction SELECT afin d'obtenir « Buffalo, NY, ETATS-UNIS"?

+4

Pouvez-vous repenser votre schéma de base de données ou est-ce quelque chose avec lequel vous devez travailler? Je demande parce que cela ressemble à un très mauvais design. – Novitzky

+0

champs à valeurs multiples sont un signe de mauvaise conception. – DaveE

+0

@DaveE: Dites-nous comment vous * ressentez * =) –

Répondre

2

Utilisez une vue en ligne pour tirer les valeurs de sorte que vous pouvez ensuite rejoindre sur eux:

JOIN (SELECT SUBSTR(t.nationality, 0, 2) AS city_id, 
      SUBSTR(t.nationality, INSTR(t.nationality, '-')+1, 2) AS state_id, 
      RIGHT(t.nationality, 2) AS country_id 
     FROM USERS t) u 
JOIN COUNTRY cntry ON cntry.country_id = u.country_id 
JOIN CITY cty ON cty.city_id = u.cty_id 
JOIN STATE st ON st.state_id = u.state_id 
0

Il y a un tas de solutions de séparation de chaîne entre le mysql dev comments par lequel vous pouvez utiliser la chaîne fractionnée dans une instruction WHERE IN.

Questions connexes