나는 일반적인 테이블 섹션을 정의하는 테이블이 세 개 있습니다.
-Section
테이블이 있습니다.
- Category
테이블 -> "섹션"열 (외래 키)이 있습니다.
- Product
테이블 -> "카테고리"열 (외래 키)이 있습니다.SQL 쿼리 다중 테이블 선택
X 섹션에 속한 모든 제품을 가져오고 싶습니다.
어떻게하면됩니까?
선택에서 선택 하시겠습니까?
나는 일반적인 테이블 섹션을 정의하는 테이블이 세 개 있습니다.
-Section
테이블이 있습니다.
- Category
테이블 -> "섹션"열 (외래 키)이 있습니다.
- Product
테이블 -> "카테고리"열 (외래 키)이 있습니다.SQL 쿼리 다중 테이블 선택
X 섹션에 속한 모든 제품을 가져오고 싶습니다.
어떻게하면됩니까?
선택에서 선택 하시겠습니까?
여기에 같은 대답 많아요. 웬일인지, 그들 모두는 Section
테이블에 합류하고있다. @ nemiss의 요청에 따라
select
p.*
from
Product p,
Category c
where
p.category_id = c.id and
c.section_id = 123
;
명시 ANSI JOIN
구문 : (대신 ID의) 제 이름을 기준으로 선택 제품 :
select
p.*
from Product p
join Category c
on c.id = p.category_id
and c.section_id = 123
;
가능한 이유는 Section
테이블을 포함합니다.
select
p.*
from Product p
join Category c
on c.id = p.category_id
join Section s
on s.id = c.section_id
and s.name = 'Books'
;
이 일을하는 경우, 당신은
alter table Product add index name;
select s.section, p.*
from section s
inner join category c on c.section = s.section
inner join product p on p.category = c.category
where s.section = 'section1'
select p.*
from Product p
join Category c on p.CategoryId = c.Id
join Section s on c.SectionId = s.Id
where s.Id = @val
Select
prod.*
FROM
Product prod
INNER JOIN Category cat ON prod.category = cat.id
INNER JOIN Section sec ON cat.section = sec.id
WHERE
sec.id = X
예 색인
Section.name
을 확인하는 것이 좋습니다! 섹션은 필요하지 않습니다 !! 그것은 단지 섹션에 대한 정보를 정의하지만 내 쿼리에 기여하지 않습니다! – nemiss(form table1, table2)에서 multi를 사용하는 것이 좋지 않습니다. 대신 join을 사용하도록 변경할 수 있습니까? – nemiss
섹션에 가입하지 않아도되지만 일반적으로 ID를 기반으로 직접 쿼리하는 것이 아니라 행의 일부 특성을 쿼리합니다. 검색어는 짧지 만 유연성이 떨어집니다. 또한 데이터베이스에 FK 관계가 명시 적으로 적용되지 않으면 c.section_id에 존재하지 않는 값이 포함될 수 있기 때문에 문제가됩니다. –