2010-09-30 6 views
1

J'utilise phpMyAdmin pour interroger la base de données.Nouveau sur SQL, comment puis-je utiliser les résultats d'un appel SELECT sur TableA à SELECT contre TableB?

Je veux sélectionner toutes les entrées dans TableA où Date = « 2010-08-01 ». Ensuite, je veux utiliser les attributs SubID des éléments de la table de résultats pour trouver toutes les entrées de la TableB avec les SubID correspondants. Je sais que je dois utiliser un JOIN quelque part, mais je ne sais pas comment et où.

J'ai cherché StackOverflow, et il semble y avoir beaucoup de questions similaires, mais aucun comme base (aka Noob) que le mien. Je ne pouvais pas vraiment comprendre de quoi ils parlaient. Pour vous donner une idée de ce que je sais, j'ai commencé à apprendre le SQL aujourd'hui, et j'ai lu le didacticiel W3 School sur SQL. J'ai l'impression que la réponse sera extrêmement évidente et je me frapperai pour ne pas l'avoir compris.

Merci beaucoup.

Répondre

2

Une bonne référence est http://www.w3schools.com/sql

Qu'est-ce que vous avez besoin est:

SELECT * 
FROM TableA a 
JOIN TableB b on a.SubID = b.SubID 
WHERE a.Date = '2010-08-01' 

Modifier comme par les autres postes - a cependant JOIN est susceptible d'être plus efficace, si vous avez plusieurs enregistrements dans la TableB avec le même SubID, vous obtiendrez des enregistrements en double de TableA retournée.

1

En fait, vous n'avez pas besoin d'un JOIN - juste une sous-requête pour filtrer la TableB. Comme si, par exemple:

SELECT SubID 
FROM TableB 
WHERE SubID IN 
    (SELECT SubID 
    FROM TableA 
    WHERE Date='2010-08-01'); 

Cela dit, vous pouvez utiliser une jointure, selon la réponse de @ ck.

1

Si vous êtes à la recherche d'une jointure, ck's post offre une solution simple.

Une autre façon d'aborder ce serait d'utiliser une sous-requête (ce qui est venu à l'esprit à la lecture de votre titre de la question):

SELECT * FROM TableB WHERE SubID IN 
    (SELECT SubID FROM TableA WHERE Date = '2010-08-01') 

La SELECT externe requête (sélection de TableB) choisit les lignes dont SubID s sont trouvé dans le jeu de résultats de la requête interne SELECT (en sélectionnant TableA). Ainsi, par exemple, si TableA tourne en cinq lignes avec ces SubID s:

Ensuite, les lignes seront sélectionnés à partir TableB dont SubID s sont IN (8, 11, 12, 27, 35).

Questions connexes