【发布时间】:2016-05-18 13:52:10
【问题描述】:
我有一个包含 2 个表的数据库,我在 items 表中有一个主键(item_id)和一个外键(color_id)。我列出的项目以颜色作为标题如下,
商品详情
//item_id
//color_id
//详情
颜色
//颜色标识
//颜色后缀
//颜色细节
我列出了这些项目 颜色后缀(RE) 商品详情 商品详情 项目详情等...
颜色后缀(RT) 商品详情 商品详情
为此,我循环遍历颜色表并在每次循环时调用 sql
$query = "SELECT * FROM COLORS";
$result = mysqli_query($connection,$query);
while($data= fetch_array($result)){
echo "<h2>{$data['color_suffix']}</h2>";
$query2 = "SELECT ... FROM items WHERE color_id = {$data['color_id']}";
$result2 = mysqli_query($connection,$query);
while($item = fetch_array($result2)) {
//List all items
}
}
这只是一种 sudo 代码,我只是想知道是否有更有效的方法。 我一直在阅读 SQL 内连接,这是我应该使用的方法吗?
我也阅读了准备好的语句,但老实说,我并不真正理解其中的语法。
我应该这样做吗?还是效率极低?请记住,将有大约 30 种不同的颜色,然后每个大约 10 - 50 个项目,以便进行大量 SQL 调用。
有人可以提供一些非常基本的 sudo 代码来帮助我了解如何实现这一目标吗?
提前谢谢你 瑞恩
【问题讨论】:
-
1+1n 个 SQL 请求几乎肯定会比 1 个 SQL 请求慢,尤其是随着 n 值的增加
标签: php mysql mysqli prepared-statement inner-join