2

我正在使用 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 文档

4

1 回答 1

0

从已关闭的 github 问题

用 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();
于 2016-05-18T13:54:33.970 回答