我正在使用opencart数据库制作一个简单的产品应用程序,显示带有该类别的产品。
这里我遇到了问题我已经通过将值循环到数组已经创建了一个数组现在数据库包含3个或更多的表,其中包含class_id共同1包含id与图像链接另一个包含名称。这两个对我很重要。这是要理解的代码
$sql = "SELECT * FROM oc_category";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$categories[] =$row;
}
这段代码创建了一个包含category_id,category_image的数组,我可以通过
进一步使用它foreach ( $categories as $category){
echo "the category id is $category['category_id']";
}
现在另一个表是oc_category_description,其中包含类别名称。 我怎么能让它在一个数组中,所以我可以使用$ category ['name'];回应它。
我已经尝试了很多方法,其中我在一个
中查询了2个表$sql = "SELECT * FROM oc_category, oc_category_description";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$categories[] =$row;
}
此方法有效,但它减慢了应用程序并显示了四次结果
这里是我认为每个表都有category_id,这在每个表中都很常见,我想用它来添加oc_category_description中的名称和其他描述。
任何想法都会受到赞赏。
谢谢
答案 0 :(得分:1)
您需要GROUP BY
查询中的category_id
$sql = "SELECT * FROM oc_category, oc_category_description
GROUP BY oc_category.category_id";
甚至你可以JOIN
喜欢
$sql = "SELECT * FROM oc_category
LEFT JOIN oc_category_description
ON oc_category.category_id = oc_category_description.category_id
GROUP BY oc_category.category_id";
答案 1 :(得分:0)
您必须加入该表才能获取信息:
$sql = "SELECT * FROM oc_category a
LEFT JOIN oc_category_description b ON a.category_id = b.category_id";
答案 2 :(得分:0)
您必须在这两个表之间添加连接条件,以免最终得到笛卡尔积:
SELECT oc_category.*, oc_category_description.name
FROM oc_category
jOIN oc_category_description USING (category_id)
答案 3 :(得分:0)
你使用2个表甚至没有告诉mysql如何加入它们,因为这个原因你变慢了。您可以使用以下2种方法:
First Medhod:如果确认oc_category_description表对oc_category有相应的category_id。
$sql = "SELECT oc.column1,oc.column2,des.column1 FROM oc_category cat, oc_category_description des where cat.category_id = des.category_id";
第二个Medhod:如果某个时候oc_category_description表对oc_category有相应的category_id,而有些时候没有,你想要主表中的所有行,如oc_category。
$sql = "SELECT oc.column1,oc.column2,des.column1 FROM oc_category cat left join oc_category_description des on cat.category_id = des.category_id";
答案 4 :(得分:0)
将两个不同的表一起使用(UNION和JOIN)
1。联盟
SELECT columnlist
FROM table1
UNION
SELECT columnlist
FROM table2
2.JOIN
SELECT * FROM TABLE1
LEFT JOIN TABLE2 ON TABLE1.category_id = TABLE2.category_id"