ms Access sql развернуть

#sql #ms-access

#sql #ms-access

Вопрос:

Я был бы благодарен за некоторую помощь в решении следующей проблемы, с которой я столкнулся. У меня есть следующие две таблицы (tblA и tblB):

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

и

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

Чего я хотел бы достичь, так это: если значение в поле item из tblA отображается в поле f2 в tblB, я хотел бы выбрать все значения tblB f1 вместе со значением ID из tblA, чтобы мы получили следующие результаты:

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

Обратите внимание, что значения идентификаторов 2 и 7 из tblA, хотя и имеют одинаковое значение элемента (‘a’), все равно отображаются в результатах отдельно; это обязательно.

Я поиграл со следующими идеями:

 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)
  

Но я изо всех сил пытаюсь туда добраться.

Ответ №1:

Я думаю, что это просто join :

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

Комментарии:

1. Большое спасибо за быстрый ответ! работает отлично. Мне нужно еще немного почитать об объединениях и псевдонимах.