2010-05-07 6 views
2

Je suis un peu mystifié par concat et je me joins à MySQL 4. Voici où j'ai un problème. J'ai deux tables ...Question de concaténation MySQL

person 

id, fname, lname, city, state, zip 


capital 

state, city 

Je besoin de générer tous les Etats et le nombre de personnes (de la table) personne de chacun. Quelque chose comme ....

AK | 5 

AL | 7 

AZ | 0 

etc etc Tous les états sont répertoriés dans le tableau de capital, mais il peut y avoir un état comme AZ qui n'a pas de personnes.

Tout conseil serait apprécié. Je suis si rarement demandé de faire quelque chose de MySQL et je suis perplexe.

Lucy

Répondre

1
SELECT CONCAT(state, ' | ', CAST(count(*) AS CHAR)) 
FROM  person 
GROUP BY state 

Selon la mise à jour, pour obtenir les états avec 0 personnes:

Solution 1:

SELECT CONCAT(state, ' | ', CAST(count(*) AS CHAR)) 
FROM  person 
GROUP BY state 
UNION 
SELECT CONCAT(state, ' | 0') 
FROM  capital 
WHERE NOT EXISTS 
     (SELECT 1 FROM person WHERE capital.state = person.state) 

Solution 2: Utilisez outer join de 2 tables sur l'état, et effectuez un regroupement par état sur les résultats de la jointure externe.

+0

Je pense que c'est parce qu'il y a des états qui ont 0 personnes et qui montreraient comme AZ | 0. J'ai édité la question et MERCI pour votre contribution. J'apprécie vraiment cela. –

+0

@Lucy - mis à jour – DVK