如何避免在php中循环SQL查询?

时间:2010-10-26 22:19:51

标签: php mysql

在这种情况下进行选择的最佳方法是什么,并在不使用php中的嵌套查询的情况下输出它?我宁愿用一个查询来创建它。

我的表格如下:

table1

id | items |
---|-------|
1  | item1 |
2  | item2 |
3  | item3 |
.. | ..    |


table2

id | itemid | comment  |
---|--------|----------|
1  | 1      | comment1 |
2  | 1      | comment2 |
3  | 2      | comment3 |
4  | 3      | comment4 |
5  | 3      | comment5 |
6  | 3      | comment6 |
.. | ..     | ..       |

这是我正在寻找的输出。

item1
comment1
comment2

item2
comment3

item3
comment4
comment5
comment6

提前致谢

2 个答案:

答案 0 :(得分:4)

SQL看起来像这样:

SELECT
    items,
    comment
  FROM
    table1 JOIN
    table2 ON table1.id = table2.itemid

(基于SQL风格的微小差异)

(伪)代码看起来像这样

var previousCategory : string;
previousCategory := "";
foreach (var item : string in list)
begin
  if (item != previousCategory)
  begin
    Output(Newline() + sqlResult["item"] + Newline());
  end
  Output(sqlResult["comment"] + Newline())
end

对不起,这不是PHP,我没有方便的PHP编译器,所以我认为一个伪造的代码可以运行得很好。

答案 1 :(得分:4)

使用JOIN s。

SELECT table1.items,table2.comment 
FROM table1
LEFT JOIN table2 ON table2.itemid=table1.id

我使用了LEFT JOIN,因此它也会返回没有注释的项目。如果您不想要这种行为,请使用INNER JOIN。 您将对格式化结果进行一些小的工作,但您应该能够自己完成。