#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. Большое спасибо за быстрый ответ! работает отлично. Мне нужно еще немного почитать об объединениях и псевдонимах.