2011-05-11 9 views
1

Je me bats avec cela depuis quelques heures et j'espère que vous pourrez me donner un nouvel aperçu. J'ai 6 tables comme suit:Requête complexe, plusieurs jointures

  • Tableau A
  • Tableau B, qui est un enfant d'un (one-to-many)
  • Tableau C, qui est un enfant de B (one-to -many)
  • Tableau D, qui est un autre enfant d'un (one-to-many)

  • Tableau E est un autre parent de D, dans un biunivoque [zéro ou un] relation

  • Le tableau F, qui est un autre c Hild de E (un à plusieurs)

Fondamentalement, je dois sélectionner un champ de B où C = F.

J'ai essayé avec les sous-requêtes, les jointures, et une combinaison des deux, mais ont pas trop loin. Toute idée serait appréciée.

Répondre

3

Avec les informations que vous avez présenté, que diriez-vous

SELECT * 
FROM A 
     INNER JOIN B ON B.AID = A.AID 
     INNER JOIN C ON C.BID = B.BID 
     INNER JOIN D ON D.AID = A.AID 
     INNER JOIN E ON E.DID = D.DID 
     INNER JOIN F ON F.EID = E.EID 
WHERE C.Field = F.Field 

Si cela est ce que vous avez besoin, vous pouvez poster un petit sous-ensemble de données avec les résultats requis.

+2

+1 pour obtenir l'ensemble des JOINs. Le PO devrait nous dire ce qui ne va pas. Trop de lignes? (cuz de ces 1-m), à venir vide? Qu'est-ce qui ne se passe pas? –

+0

Merci Lieven ... –