2010-10-03 8 views
1

je les tableaux suivants:SQL Query Nested

Club: Club_ID | Titre | Created_Date | ...

Club_Intesect: ID_utilisateur | Club_ID | Accédez

J'essaie de sélectionner un nombre variable de clubs et de joindre l'ID de l'utilisateur avec l'accès le plus élevé dans ce club. Cette personne est considérée comme le propriétaire.

Donc, si du Club 100 a Membres A, B, C avec accès 3,4 et 5 respectivement: Je veux la requête finale pour sélectionner le club:

Club.Club_ID  Club.Title  Club.Created_Date Club_Intersect.User_ID 

     100   | "Test Club" | "Creation Date"  |  C    | 
     101   | "Test Club 2" | "Creation_Date"  | Highest Access User | 
     ... 
+2

Il y a beaucoup de confusion ici. Vos résultats utilisent 'Club.Date' et' Club_Intersect.Owner_ID', qui ne figurent pas dans vos tables. Vous demandez l'accès "le plus haut", mais sélectionnez l'utilisateur avec le plus bas (3 <5) dans votre exemple de sortie ... – RedFilter

+1

Les colonnes de votre exemple de tableau ne correspondent pas très bien aux colonnes du résultat de la requête. Ni «Club.Date» ni «Club_Intersect.Owner_ID» ne sont définis. –

+0

Désolé, vous avez tous les deux raison j'étais insouciant. Cela devrait avoir plus de sens maintenant. – pws5068

Répondre

1
SELECT * FROM Club c 
JOIN Club_Intesect ci ON ci.Club_ID = c.Club_ID 
WHERE ci.Access = (SELECT MAX(Access) FROM Club_Intesect WHERE Club_ID = c.Club_ID) 

Non testé, mais vous obtenez l'idée

+0

Puisque le résultat souhaité est 3, pas 5, vous avez probablement besoin de MIN plutôt que de MAX. –

+0

... Je pense que le résultat désiré est l'accès maximum (5). – colithium

+0

En fait, il est 5, désolé pour la faute de frappe originale. – pws5068

1
SELECT * FROM Club WHERE CLUB_ID = (SELECT Club_ID FROM Club_Intersect ORDER BY Access DESC LIMIT 1); 

Je pense que cela fonctionne pour sélectionner le club que vous voulez, à l'aide d'une requête SQL imbriqué. Vous n'avez pas spécifié ce que vous vouliez dans vos résultats renvoyés, car cette requête ne récupérait que les colonnes Club.