2017-02-12 4 views
0

私は2つのテーブルを持っています。 1つはps_product_langps_category_productです。 ps_category_product内のデータは次のようである。このMySQLテーブルジョインでデータを取得

id_category id_product 
2   1 
2   2 
2   3 
2   4 
2   5 
2   6 
2   7 
3   1 
3   2 
3   3 
3   4 
3   5 
3   6 
3   7 
4   1 
4   2 
5   1 
7   2 
8   3 
8   4 
8   5 
8   6 
8   7 
9   3 
10   4 

ps_product_langのためのテーブルには、だからここに私はid_categoryは5,7と 'のような名前ですps_product_langからid_product、名前を取得したいこの

id_product  id_lang  name 
1    1   Faded Short Sleeves T-shirt 
1    2   Faded Short Sleeves T-shirt 
2    1   Blouse 
2    2   Blouse 
3    1   Printed Dress 
3    2   Printed Dress 
4    1   Printed Dress 
4    2   Printed Dress 
5    1   Printed Summer Dress 
5    2   Printed Summer Dress 
6    1   Printed Summer Dress 
6    2   Printed Summer Dress 
7    1   Printed Chiffon Dress 
7    2   Printed Chiffon Dress 

のようなものですp% 'である。だから誰かが私の質問になると私に教えてくれる。どんな助けや提案も本当に魅力的でしょう。

+0

ヒント: 'JOIN'、' LIKE'。 –

+0

@GordonLinoffはヒントのために感謝します。ここにコードを表示できますか? – NewUser

答えて

1

@Gordonは、ヒンティングされたとして、あなたは単に製品カテゴリと名前を制限するための条件どこと一緒に、2つのテーブル間INNER JOINが必要になります。ここでは

SELECT t1.id_product, 
     t1.name 
FROM ps_product_lang t1 
INNER JOIN 
(
    SELECT DISTINCT id_product 
    FROM ps_category_product 
    WHERE id_category IN (5, 7) 
) t2 
    ON t1.id_product = t2.id_product 
WHERE t1.name LIKE 'P%' 

はへWHERE句を省略デモですそれは実際にデータを返すとき、クエリがどのように動作するかを示しています。

SQLFiddle

+0

そのようなエラーが表示されます '#1054 - 'where句'の 't2.id_category'が不明です。 – NewUser

+0

@NewUser申し訳ありませんが、私はエイリアスを削除しました。ところで、あなたが望むクエリは、実際にテストデータを使って何も返さないでしょう。 –

0

使用JOIN 2つのテーブル

からデータを取得します
SELECT p.id_product,name 
    FROM ps_product_lang p 
    JOIN ps_category_product c 
    ON p.id_product=c.id_product 
    WHERE id_category IN (5,7) 
    AND name LIKE 'p%' 
+0

これは疑問に答えるかもしれませんが、このスニペットが何を行い、どのように動作するかを説明する文脈やテキストは、将来の読者にとっても良いでしょう。 – VDWWD

+0

@VDWWD OPは自分自身が参加してすべてを使用していることを言いました。だから私はそれを残しました..ありがとうございました。 – affaz

関連する問題