【问题标题】:How to union joins using Idiorm如何使用 Idiorm 联合联接
【发布时间】:2014-10-14 03:39:18
【问题描述】:

我正在使用 Idiorm 进行 SQL 查询,并且需要将右连接和左连接合并。

这是我的实际 SQL 语句,它有效:

SELECT p.*, a1.*, a2.szFirstName AS a2FirstName, a2.szLastName AS a2LastName, 

a2.szEmail AS a2Email,
a3.szFirstName AS a3FirstName, a3.szLastName AS a3LastName, a3.szEmail AS a3Email
FROM propertySummary p
LEFT OUTER JOIN agents a1 ON p.lAgentID = a1.lAgentID
LEFT OUTER JOIN agents a2 ON p.lAgentID2 = a2.lAgentID
LEFT OUTER JOIN agents a3 ON p.lAgentID3 = a3.lAgentID

UNION

SELECT p.*, a1.*, a2.szFirstName AS a2FirstName, a2.szLastName AS a2LastName, a2.szEmail AS a2Email,
a3.szFirstName AS a3FirstName, a3.szLastName AS a3LastName, a3.szEmail AS a3Email
FROM propertySummary p
RIGHT OUTER JOIN agents a1 ON p.lAgentID = a1.lAgentID
RIGHT OUTER JOIN agents a2 ON p.lAgentID2 = a2.lAgentID
RIGHT OUTER JOIN agents a3 ON p.lAgentID3 = a3.lAgentID

如何使用 Idiorm 查询重写它?我似乎在他们的文档中找不到这个。任何建议将不胜感激。提前致谢。

链接到Idiorm Documentation

【问题讨论】:

  • 从 github 搜索,似乎没有人打开过关于“union”的问题,并且代码库中从未提及“union”。这似乎是一个疏忽。 github.com/j4mie/idiorm/search?utf8=%E2%9C%93&q=union我已经打开了一个问题,我很想知道开发人员怎么说。
  • 据我所知,它的功能已接近 - 不会有任何新功能 - 只有错误修正。

标签: sql join union idiorm


【解决方案1】:

来自closed github issue

用 raw_query 来做。示例:

$sql = <<<SQL
    SELECT a.* FROM table_name_a a
    UNION ALL
    SELECT b.* FROM table_name_b b
SQL;

$recs = ORM::for_table('table_name_here_a')
    ->raw_query($sql)
    ->find_array();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2015-08-01
    相关资源
    最近更新 更多