2011-10-17 4 views
-2

Pour ID = 101 Les données sont issues de différents TABLEAUjointure interne ou UNION

Toutes les tables ont une colonne ID

  Name  Income  
Table_A  a  $6,868  
Table_B  b  $4,443 
Table_C  c  $6,726  
Table_D  d  $10,163  
Table_E  e  $4,853 
Table_F  f  $3,368 

Pour obtenir le résultat ci-dessus comme Dois-je utiliser UNION ou INNER JOIN?

TABLE_A 

ID NAME INCOME 
101 a $6,868  


TABLE_B 

ID NAME INCOME 
101 b $4,443  

comme autre table

donc devrais-je utiliser Inner Join ou UNION ici?

+1

Il n'y a pas assez d'informations ici pour même comprendre ce que vous demandez, et encore moins y répondre! – Widor

+0

Pourriez-vous donner la structure de vos tables? – Fred

+0

Il semble que votre structure de conception est un peu. Table_A doit être ID (Auto Increment), OtherID (101 dans ce cas), Name, Income. – tsells

Répondre

2

Si la ligne X est calculée en regardant seulement à table X, puis UNION est l'outil approprié à utiliser.

+0

Feriez-vous un WHERE ID = 101 sur chaque SELECT? SELECT a.Revenu FROM TABLE_A a O WH a.ID = 101 UNION ...? Ou SQL l'optimisera-t-il même avec un seul endroit à la fin? – mikey

+1

@mikey: Je ferais plusieurs 'SELECT ... WHERE' et les 'UNION' ensemble. – NPE

+0

Tout de suite, merci, je suppose que la performance serait à peu près comparable à l'approche de jointure interne? – mikey

1

C'est une manière étrange d'avoir une conception de base de données, mais vous utiliseriez un INNER JOIN pour ce genre de requête.

Quelque chose comme:

select * 
from table_a a 
inner join table_b b 
on a.ID = b.ID 
inner join table_c c 
on a.ID = c.ID 
inner join table_d d 
on a.ID = d.ID 
inner join table_e e 
on a.ID = e.ID 
inner join table_f f 
on a.ID = f.ID 
where a.ID = 101 

Sans savoir plus sur la structure de vos tables existantes, il est difficile de donner une requête plus spécifique pour votre utilisation.