2016-10-23 4 views
1

Ich wäre dankbar für einige Hilfe mit dem folgenden Problem, das ich habe. Ich habe die folgenden zwei Tabellen (TBLA und TBLB):ms Access sql erweitern

tblA 
+----+------+ 
| ID | item | 
+----+------+ 
| 1 | c | 
| 2 | a | 
| 3 | b | 
| 4 | e | 
| 5 | d | 
| 6 | f | 
| 7 | a | 
| 8 | c | 
+----+------+ 

und

tblB 
+----+----+ 
| f1 | f2 | 
+----+----+ 
| a | | 
| b | a | 
| c | a | 
| d | | 
| e | | 
| f | d | 
| g | d | 
| h | d | 
| I | | 
+----+----+ 

Was ich möchte, ist erreichen: wo ein Wert im Positionsfeld aus TBLA erscheint in der f2 in TBLB Feld Ich mag würde alle TBLB f1 Werte auszuwählen, zusammen mit dem ID-Wert von TBLA, so dass wir erhalten die folgenden Ergebnisse:

+----+------+ 
| ID | item | 
+----+------+ 
| 2 | b | 
| 2 | c | 
| 5 | f | 
| 5 | g | 
| 5 | h | 
| 7 | b | 
| 7 | c | 
+----+------+ 

Beachten Sie, dass ID-Wert 2 und 7 von TBLA, während h Der gleiche Wert ('a') erscheint immer noch getrennt in den Ergebnissen. Dies ist erforderlich.

Ich habe mit den folgenden Ideen spielen zu:

SELECT f1 FROM tblB 
WHERE f2 IN(SELECT item FROM tblA) 

//

SELECT ID,f1 FROM tblA,tblB 
WHERE f2 IN(SELECT item FROM tblA) 

//

SELECT x.ID, y.f1 
FROM tblA AS x, tblB AS y 
WHERE y.f2 IN(SELECT item FROM tblA) 

Aber ich bin zu kämpfen um dorthin zu gelangen.

Antwort

2

Ich denke, das ist nur ein join:

select a.id, b.f1 
from tblA as a inner join 
    tblB as b 
    on b.f2 = a.item 
order by a.id; 
+0

Vielen Dank und für die schnelle Antwort! funktioniert perfekt. Ich muss mehr über Joins und Aliase lesen. – Jim