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和所有内容。。所以我就这样保留了它。。谢谢……我编辑:)