【发布时间】:2017-07-01 12:23:23
【问题描述】:
我有一个使用 PostgreSQL CTE(Common Table Expressions) 功能的查询:
WITH tmp_users AS (
SELECT users.id, users.name, users.email, users.created_at,sum(transactions.amount) as credit
FROM users INNER JOIN transactions
ON users.id = transactions.user_id
GROUP BY users.id,users.name,users.email, users.created_at, transactions.user_id
)
SELECT * FROM tmp_users WHERE credit > 100;
我可以用这个实现结果:
$result = DB::select("WITH tmp_users AS (
SELECT users.id, users.name, users.email, users.created_at,sum(transactions.amount) as credit
FROM users INNER JOIN transactions
ON users.id = transactions.user_id
GROUP BY users.id,users.name,users.email, users.created_at, transactions.user_id
) SELECT * FROM tmp_users WHERE credit > 100");
但我需要查询生成器,而不仅仅是结果。
任何帮助将不胜感激。
附注:
为什么我使用 postgres CTE 功能?
因为在 PostgreSQL 中,如果我想对别名字段做任何语句,我需要使用 CTE 功能(Read more)。
【问题讨论】:
-
您可以通过使用子查询和
select *获得相同的结果(性能更好)。 -
我在上面的查询中添加了一个 where。现在,我可以使用子查询得到相同的结果吗?
-
是的,当然。
-
But I need the Query Builder那是什么,查询生成器? -
看我的回答..
标签: php postgresql laravel eloquent common-table-expression