2013-04-18 2 views
0

SQL 쿼리에 대한 지식을 향상시키고 자 노력하고 있지만 다 대 다 관계 쿼리에 익숙하지 않습니다. 다음과 같이 PHP와 MySQL 데이터베이스 구조를 사용MySQL과 PHP 다 대다 데이터베이스 관계

은 다음과 같습니다

데이터베이스 구조 :

-------------------------------------------- 
|     colour     | 
-------------------------------------------- 
| colour_id   |  colour   | 
-------------------------------------------- 
| 1     |  blue   | 
-------------------------------------------- 
| 2     |  red    | 
-------------------------------------------- 
############################################ 
-------------------------------------------- 

.

----------------------------------------------------------------- 
| product_colours            | 
----------------------------------------------------------------- 
| id   |  product_id  | colour_id   | 
----------------------------------------------------------------- 
| 1    |   1   |   2    | 
----------------------------------------------------------------- 
| 2    |   2   |   1    | 
----------------------------------------------------------------- 
################################################################# 
----------------------------------------------------------------- 

기본 테이블

----------------------------------------------------------------- 
| products             | 
----------------------------------------------------------------- 
| id   |  name    |  details   | 
----------------------------------------------------------------- 
| 1   |  product 1   |  blah    | 
----------------------------------------------------------------- 
| 2   |  product 2   |  blah    | 
----------------------------------------------------------------- 
################################################################# 
----------------------------------------------------------------- 


----------------------------------------------------------------- 
| product_group_names          | 
----------------------------------------------------------------- 
| id   |  product_id   | group_name_id | 
----------------------------------------------------------------- 
| 1    |   1    |   1   | 
----------------------------------------------------------------- 
| 2    |   2    |   2   | 
----------------------------------------------------------------- 
################################################################# 
----------------------------------------------------------------- 


-------------------------------------------- 
|  group_name      | 
-------------------------------------------- 
| group_name_id  |  group_name  | 
-------------------------------------------- 
| 1     | product_group_1  | 
-------------------------------------------- 
| 2     | product_group_2  | 
-------------------------------------------- 
############################################ 
-------------------------------------------- 

내가 하나의 쿼리를 사용하여 작성할 수는 말한다하는 조인 SELECT * colours WHERE group_name = product_group_1?

도움이 될 것입니다. 정말 고맙습니다.

+1

네, 그런 쿼리를 작성할 수 있습니다 - 지금까지 어떤 시도를 했습니까? –

답변

2

확실히 그렇게 할 수있는 쿼리를 작성할 수 있습니다. 기본적으로 테이블을 결합하여 테이블에서 테이블로 필요한 데이터를 연결 한 다음 원하는 조건에 대한 where 절을 추가해야합니다.

귀하의 색상은 colour_id 속성을 통해 product_colours에 "연결"되어, 제품의 색상은 두 테이블에 product_id 속성을 통해 product_group_names에 연결되고, 그룹 이름은 group_names 테이블에 group_name_idgroup_id 속성을 통해 연결되어 있습니다 .

이러한 종류의 쿼리를 수행 할 때 이러한 테이블에 많은 레코드가 있으면 쿼리가 매우 느리게 진행될 수 있습니다. JOIN...ON 절에 언급 된 각 열뿐만 아니라 WHERE 절에 표식을 추가해야합니다.

SELECT colour FROM colours c 
JOIN product_colours pc ON c.id = pc.colour_id 
JOIN product_group_names pgn ON pgn.product_id = pc.product_id 
JOIN group_name gn ON gn.id = pgn.group_name_id 
WHERE gn.group_name = "product_group_1"