2012-03-02 6 views
1

곱하기 테이블에서 sql select와 관련하여 도움이 필요합니다.하나의 결과에 더 많은 테이블 조인

테이블 :

s_products 
- id 
- name 
- url 
- brand_id 

s_products_categories 
- product_id 
- category_id 

s_brands 
- id 
- name 
- url 

s_categories 
- id 
- name 
- url 

비교 :

s_products.id = s_products_categories.product_id 
s_categories.id = s_products_categories.category_id 
s_products.brand_id = s_brands.id 

을 그리고 필요한 결과 :

1) $products['s_categories.url']['s_brands.url']['s_products.url'] = 's_products.name';

2) $brands['s_categories.url']['s_brands.url'] = 's_brands.name';

하나 이상의 선택으로 도와 줄 수 있습니까?

+1

's_products_categories'에'url' 열이 누락 되었습니까? –

+0

아니요,'s_products_categories'에는'category_id'의's_categories.id'가 있습니다. 여기서'url'을 가져올 수 있습니다. – skywind

+1

그 다음's_products_categories.url', 그럼 왜 PHP 코드에 있습니까? –

답변

1

보십시오. (예를 들어 brand_url와 category_url)

select c.url category_url, 
     c.name category_name, 
     b.url brand_url, 
     b.name brand_name, 
     p.url product_url, 
     p.name product_name 
from s_products p 
join s_brands b on p.brand_id = b.id 
join s_products_categories pc on p.id = pc.product_id 
join s_categories c on pc.category_id = c.id 

는, 특정 필드의 조합을 즉시 볼 selectdistinct을 추가하고 필요하지 않은 필드를 제거합니다.

1
select *yourcolumnsname* 
from s_products INNER JOIN s_products_categories 
on s_products.id = s_products_categories.product_id 
INNER JOIN s_categories.id 
on s_categories.id = s_products_categories.category_id; 
+0

감사합니다.하지만's_brands.url' = ( – skywind

+0

그리고 내 선택 결과 NULL'을 선택하십시오. s_categories.url을 url1로, s_products.url을 url2로, s_products.name을 FRAME s_products INNER JOIN s_products_categories on s_products.id = s_products_categories.product_id INNER JOIN s_categories.id on s_categories.id = s_products_categories.category_id' – skywind

1
SELECT s_categories.url as url1, s_products.url as url2, s_products.name as name 
FROM s_products 
INNER JOIN s_products_categories on s_products.id = s_products_categories.product_id 
INNER JOIN s_categories   on s_categories.id = s_products_categories.category_id 
관련 문제