PHP mySQL连接和显示(3个表)
嗨,我是php新手,我的研究项目试图解决一些挑战 我有3个表格“产品”、“类别”、“产品类别” 产品表:PHP mySQL连接和显示(3个表),php,mysql,Php,Mysql,嗨,我是php新手,我的研究项目试图解决一些挑战 我有3个表格“产品”、“类别”、“产品类别” 产品表: product_id product_name product_price product_img product_link date 1 item1_name item1_price item1_img item1_link item1_date 2 item2_name
product_id product_name product_price product_img product_link date
1 item1_name item1_price item1_img item1_link item1_date
2 item2_name item2_price item2_img item2_link item2_date
类别表:
category_id category_name
1 category1_name
2 category2_name
3 category3_name
relation_id product_id category_id
1 product1_id category1_id
2 product1_id category2_id
3 product2_id category1_id
4 product2_id category3_id
和产品类别表:
category_id category_name
1 category1_name
2 category2_name
3 category3_name
relation_id product_id category_id
1 product1_id category1_id
2 product1_id category2_id
3 product2_id category1_id
4 product2_id category3_id
我试图得到两样东西:
这实际上是关于SQL语言以及如何使用它的。希望您的数据库有一个GUI,比如PhpMyAdmin或HeidiSQL,因为在编写SQL代码时使用它通常更容易
假设您有以下表格:
创建表格产品
(
产品id int主键,
产品名称varChar(255)
);
创建表类别
(
类别id int主键,
类别名称varChar(255)
);
创建表产品到类别
(
产品id int,
类别id int,
外键(产品id)引用产品(产品id),
外键(类别id)引用类别(类别id)
);
使用此示例数据:
插入产品值(1,‘产品1’,(2,‘产品2’);
在类别中插入值(1,‘类别1’,(2,‘类别2’);
在产品类别中插入值(1,1)、(2,1)、(2,2);
您可以使用此长表单查询获取数据:
选择
第页*,
C.类别名称
从…起
产品P
参加
产品类别PC
在…上
P.product\U id=PC.product\U id
参加
C类
在…上
PC.category\u id=C.category\u id
返回
1 Product 1 Category 1
2 Product 2 Category 1
2 Product 2 Category 2
2 Product 2 2
但是,由于在联接表中使用相同的列名,因此也可以使用NATURAL join
命令生成相同的列名
选择
第页*,
C.类别名称
从…起
产品P
自然连接
C类
自然连接
产品类别
要从单个类别获得产品,您可以使用:
选择
*
从…起
产品P
自然连接
产品类别PC
哪里
PC.category_id=2
返回
1 Product 1 Category 1
2 Product 2 Category 1
2 Product 2 Category 2
2 Product 2 2
对于第一个问题:您应该使用,以便能够通过其id将产品与类别关联:
SELECT
p.product_name,
c.category_name,
FROM
products p
JOIN
products_categories pc ON p.product_id = pc.product_id
JOIN
categories c ON pc.category_id = c.category_id
对于第二个问题:当关联两个表时,可以通过在联接中添加where子句来过滤要联接的表的结果:
SELECT
p.product_name
FROM
products p
JOIN
products_categories pc ON p.product_id = pc.product_id AND pc.category_id = 1
您在问题标题中陈述的最佳方法是:使用JOIN
。字段的名称甚至允许MySQLs自然连接
,这是连接表的最简单方法。这是非常类似问题的解决方案=>非常感谢!如果我能再问你一件事。是否有任何SQL运算符可以合并结果?我的意思是,它将显示:“1产品1类别1(新行)2产品2类别1,类别2”,除了“1产品1类别1(新行)2产品2类别1(新行)2产品2类别2(新行)”或者我应该在前端做吗?@Elijah,我不确定我是否理解你的问题。最好在这个网站上问一个新问题,在那里你可以格式化你希望得到的东西。你可以参考这个问题,这将有助于一些背景的人。