2012-08-07 2 views
0

J'ai besoin d'aide pour cela.obtenir des combinaisons existantes et non existantes entre deux tables à travers une table de relation

J'ai 3 tables (Froms, et TOs): distances

FROMs(Id, Name) 
1 - London 
2 - Beijing 
3 - Athens 

TOs(Id, Name) 
1 - New York 
2 - Madrid 
3 - Paris 

DISTANCEs(Id,FROMid,TOid,km,obs) 
1 - 2 - 3 - 400 - distance between Beij. and Paris 

je besoin d'une requête: retourner ce

1 - 2 - 3 - 400 - distance between Beij. and Paris 
NULL - 1 - 1 - NULL - NULL 

et ainsi de suite pour toutes les combinaisons non-existent.

Merci.

+0

Quelles sont les têtes de colonne pour vos résultats? L'exemple que vous avez donné montre une distance entre 1 et 1. Selon vos données, c'est la distance entre Londres et New York. – Farhan

+1

[SQL Fiddle] (http://sqlfiddle.com/#!3/5a0ab) avec les valeurs – Taryn

+0

@MuhammadGhazi - l'exemple montre la table 'DISTANCE', id 1, pour Beijing (id 2 dans la table' FROM') paris (id 3 dans la table 'TO'). – LittleBobbyTables

Répondre

3

Quelque chose comme cela devrait faire:

Voici un lien vers SQLFiddle

select a.id, b.fromId, b.toId, a.km, a.obs from distances a 
right join(
select a.id as fromId, 
     a.name as fromName, 
     b.id as toId, 
     b.name as toName 
from froms a 
join tos b 
on 1=1) b 
on a.fromId = b.fromId 
    and a.toId = b.toId 
+0

ni SMARTPHONE ni SMARTTV, c'est ce qu'on doit appeler une SOLUTION INTELLIGENTE !!!!!!!! Comment pourriez-vous l'atteindre? MERCI BEAUCOUP!!! –

+0

Juste un petit tour avec une sous-requête rejoindre pour obtenir toutes les variations; le reste est trivial. Prendre plaisir. –

Questions connexes