2017-02-12 92 views
0

我有兩個表。一個是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_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 

所以在這裏我想要得到的id_product,名字來自ps_product_lang其中id_category是5,7和喜歡的名字p%」。所以有人可以告訴我什麼是查詢。任何幫助和建議都會非常令人滿意。

+0

提示:'JOIN','LIKE'。 –

+0

@GordonLinoff謝謝你的提示。你能告訴我一些代碼嗎? – NewUser

回答

1

由於@Gordon被暗示,你只需要在兩個表之間的INNER JOIN,具有沿where條件限制的產品類別和名稱:

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