【问题标题】:How to build a select using Zend with a DISTINCT specific column?如何使用 Zend 和 DISTINCT 特定列构建选择?
【发布时间】:2012-08-15 17:31:33
【问题描述】:

我正在为我的网站使用 Zend Framework,我想从我的 PostgreSQL 数据库中检索一些数据。

我有这样的要求:

SELECT DISTINCT ON(e.id) e.*, f.*, g.* FROM e, f, g
WHERE e.id = f.id_e AND f.id = g.id_f

此请求运行良好,但我不知道如何使用 Zend 转换 DISTINCT ON(e.id)。 似乎我可以获得 DISTINCT 行但没有不同的列。

$select->distinct()->from("e")->join("f", "e.id = f.id_e")
->join("g", "f.id = g.id_f");

知道如何使用不同的列进行选择吗?

感谢您的帮助

【问题讨论】:

标签: postgresql select distinct zend-db


【解决方案1】:

您可能无法使用 Zend Framework 执行此操作,因为 distinct on 不是 SQL 标准 (end of page in Postgres documentation) 的一部分。尽管 Postgres 支持它,但我认为它不是 Zend Framework 的一部分,因为理论上您可以配置另一个不提供支持的数据库连接。

如果您事先知道您正在为特定数据库(本例中为 Postgres)进行开发,则可以改用手动编写的语句。您将在查询中获得更大的灵活性并获得更好的性能,但代价是不再能够切换数据库。

然后,您将为 Postgres 实例化一个 Zend_Db_Apdapter。有多种方法可用于获取 SQL 查询的结果,这些方法在从 Reading Query Results 部分开始的框架文档中进行了描述。如果您选择走这条路,我建议您创建 Zend_Db_Adapter_Pgsql 类的自己的子类。这是为了能够在错误的情况下转换数据类型并抛出异常,而不是返回模棱两可的null值并隐藏错误原因。

【讨论】:

  • 感谢您的回答。还有其他解决方案吗?也许用 zend 编写我的 sql 请求的方法?
  • 是的,链接Reading Query Results指向一些使用ZF的手写查询示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2015-04-11
  • 2021-05-15
相关资源
最近更新 更多