2010-01-06 5 views
4

J'ai une table de recherche dire les villes avec des champs CityID, CityNameRejoindre table de recherche SQL avec table de données

CityId CityName 
1  New York 
2  San Francisco 
3  Chicago 

J'ai une table de commandes qui a des champs: CityID, CustId, CompletedOrders, PendingOrders

CityId CustId CompletedOrders PendingOrders 
1  123 100    50 
2  123 75    20 

Je veux une table/rapport répertoriant les commandes détails d'un client donné dans toutes les villes, à savoir le résultat que je besoin est:

CityId CityName  CustId CompletedOrders PendingOrders 
1  New York  123 100    50 
2  San Francisco 123 75    20 
3  Chicago  123 0    0 

Comment faire cela?

+1

quelle base de données, quelle version ?? –

+0

Afin d'afficher correctement le code ou les tableaux, mettez ces lignes en surbrillance et utilisez le bouton "code" (101 010) dans la barre d'outils de l'éditeur! Sinon, votre message sera très flou et chaotique. –

Répondre

9
SELECT 
    c.CityId 
    c.CityName 
    o.CustId, 
    o.CompletedOrders 
    o.PendingOrders 
FROM cities c 
LEFT JOIN orders o ON (c.CityId = o.CityId) 

Ceci renverra toutes les lignes que vous voulez, mais pour les lignes qui n'existent pas dans details il retournera NULL valeurs, alors vous obtiendrez:

CityId CityName  CustId CompletedOrders PendingOrders 
1  New York  123 100    50 
2  San Francisco 123 75    20 
3  Chicago  123 NULL   NULL 

La solution pour obtenir 0 dépend à la place de votre base de données. Avec MySQL, utilisez IFNULL, avec Oracle, utilisez NVL.

1

essayer cette

select c.CityId,c.CityName,o.CustId,o.CompletedOrders,o.PendingOrders 

from orders Left join cities 

on o.CityId = c.CityId 
Questions connexes