MySQL使用表连接获取数据

MySQL使用表连接获取数据,mysql,database,join,Mysql,Database,Join,我有两张桌子。一种是ps\u-product\u-lang和ps\u-category\u-product。ps\u category\u产品中的数据如下所示 id_category id_product 2 1 2 2 2 3 2 4 2 5 2 6 2 7 3 1 3 2 3

我有两张桌子。一种是
ps\u-product\u-lang
ps\u-category\u-product
ps\u category\u产品中的数据如下所示

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
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\u product\u lang
的表格如下

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
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_产品,名称来自ps_产品,其中id_类别是5,7,名称像“p%”。那么有人能告诉我这个问题是什么吗。任何帮助和建议都是可以接受的。

正如@Gordon所暗示的那样,您只需在两个表之间建立一个
内部联接,以及一个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
子句,以显示查询实际返回数据时的行为:


使用
JOIN
从两个表中获取数据

   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%'

提示:
加入
喜欢
@GordonLinoff谢谢你的提示。你能在这里给我看一些代码吗?它在where子句中显示了类似于“#1054-未知列”t2.id_category“@NewUser抱歉,我遗漏了一个别名。顺便说一句,您想要的查询现在不会使用您的测试数据返回任何内容。虽然这可能会回答这个问题,但一些上下文或文本解释这个代码段的作用以及它的工作原理,对于将来的读者来说也会很好。@VDWWD OP自己也提到了使用join和所有内容。。所以我就这样保留了它。。谢谢……我编辑:)