MySQL使用表连接获取数据

时间:2017-02-12 15:15:31

标签: mysql database join

我有两张桌子。一个是ps_product_langps_category_productps_category_product中的数据就像这样

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

所以在这里我想从ps_product_lang获取id_product,名称,其中id_category是5,7,名称如' p%'。所以有人能告诉我什么是查询。任何帮助和建议都是非常值得的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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%'