1

我有一张名为 Workshop 的表,还有一张名为 Workshop_parts 的表。

Workshop_parts 中的每一行都包含一个父 ID,该 ID 引用其父工作室,以及该部件的各种其他数据。

我正在尝试找出在网站上检索和显示所有数据的最有效方法。

我想列出研讨会信息,然后列出下面的所有部分。

根据我现在所知道的,我将遍历所有的研讨会,然后有一个嵌套循环遍历所有部分。

有什么方法可以让我使用连接一举获取所有数据,还是嵌套循环是最好的解决方案?

4

3 回答 3

2

根据这个 SO post,我会将其作为实际的 JOIN:

SQL 左连接与 FROM 行上的多个表?

select ws.name as ws_name, part.name as part_name, part.qty as part_quantity from workshop ws LEFT JOIN workshop_parts parts ON (ws.id = parts.workshop_id);

Left JOIN 将带您到任何存在车间 ID 的地方,但会忽略没有匹配车间的部分。

INNER JOIN 将只为您提供具有匹配项的车间和零件(没有零件的车间不会显示,没有车间的零件也不会显示)

RIGHT JOIN 将只为您提供带有零件的车间和任何其他零件,即使他们没有车间。

编辑 这是我发现的最好的思考方式: http: //www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

于 2013-05-13T03:40:58.193 回答
1

使用连接......它看起来像这样

select ws.name as ws_name, part.name as part_name, part.qty as part_quantity from workshop ws, workshop_parts parts where (ws.id = parts.workshop_id);
于 2013-05-13T03:38:14.007 回答
0

SQL 将是一个不错的选择,因为您将以编程方式为每个研讨会 ID 调用数据库。最好一次获取所有数据,然后将其显示在页面上,从而减少数据库调用。

这里是sql。

select workshop.id, workshop_parts.*
from workshop
left join workshop_parts
on workshop.id=workshop_parts.workshop_id

希望这可以帮助。

于 2013-05-13T03:40:54.590 回答