정말 테이블에 걸쳐 SQL 쿼리에 대한 도움을 주시면 감사하겠습니다. 나는 이런 종류의 일이 끊임없이 요구된다는 것을 알고 있지만, 대답을 이해하기에 충분히 비슷한 질문을 찾을 수는 없습니다.SQL : 다른 테이블에서 조건과 일치하는 하나의 테이블 중에서 선택 하시겠습니까?
해당 태그가 table_B
인 행을 table_A
에서 선택하고 싶습니다.
예를 들어, " 'chair'태그가 붙은 table_a
의 행을 선택하면 table_C
이 반환됩니다.
또한 id
은 table_a
에서 유일하며 table_b
에서는 고유하지 않습니다.
table_A: table_B: table_C:
id object id tag id object
1 lamp 1 furniture 3 stool
2 table 2 furniture 4 bench
3 stool 3 furniture
4 bench 4 furniture
4 chair
3 chair
또는 데이터를 구성하는 더 좋은 방법이 있습니까? 당신이 원하는 행
select
A.*
from
table_A A
where
A.id in (
select B.id from table_B B where B.tag = 'chair'
)
또는 당신이 테이블을 조인 할 수 및 필터링 :
select
A.*
from
table_A A
inner join table_B B
on A.id = B.id
where
B.tag = 'chair'
당신은 모두 프로파일해야하고
@ rjschnorenberg의 제안은 스키마를 변경하는 편이 낫다면 좋습니다. 이 경우 두 개의 INNER JOIN 절을 사용하여 Items <> Item_Tags <> 태그 세 테이블을 조인합니다. –
좋습니다. 매우 도움이됩니다. 나는 당신이 그런 조인 된 테이블에서 열을 필터링 할 수 있다는 것을 몰랐습니다. –
실제로 조인 줄을 "inner join table_B B on A.ID = B.ID 및 B.tag = 'chair'"로 작성할 수도 있지만 필터를 WHERE에 두는 것을 선호합니다. –