【问题标题】:How to avoid looping sql query in php?如何避免在php中循环sql查询?
【发布时间】:2011-05-01 00:32:21
【问题描述】:

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

我的表格如下所示:

表1

编号 |项目 |
---|-------|
1 |项目1 |
2 |项目2 |
3 |项目3 |
.. | .. |


表2

编号 |项目编号 |评论 |
---|--------|----------|
1 | 1 |评论1 |
2 | 1 |评论2 |
3 | 2 |评论3 |
4 | 3 |评论4 |
5 | 3 |评论5 |
6 | 3 |评论6 |
.. | .. | .. |

这是我正在寻找的输出。

项目1 评论1 评论2 项目2 评论3 第 3 项 评论4 评论5 评论6

提前致谢

【问题讨论】:

标签: php mysql


【解决方案1】:

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 编译器,所以我认为伪代码可以很好地工作。

【讨论】:

  • 谢谢,我用php试试。
【解决方案2】:

使用JOINs。

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

我使用了 LEFT JOIN,所以它也会返回没有 cmets 的项目。如果您不想要这种行为,请使用 INNER JOIN。 您将在格式化结果方面做一些小工作,但您应该能够自己完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2013-10-04
    • 2013-12-05
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多