2012-03-02 17 views
1

私は、乗算テーブルからsql selectのヘルプが必要です。1つの結果でさらにテーブルに結合する

テーブル:

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つまたは複数の選択肢でそれをやることを手伝ってもらえますか?

+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_products.id = s_products_categories.product_idのs_products_categories s_categories.id = s_products_categories.category_id'のINNER JOIN s_categories.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 
関連する問題