【发布时间】:2017-04-05 07:33:15
【问题描述】:
我在数据库中有四个表,即 Packages、Fixtures、Deals 和 Fixtures Deals。
这里是表结构细节:
Packages: id, title
Fixtures: id, package_id, name
Deals: id, discound, description
Fixtures_Deal: id, fixture_id, deal_id, price
我需要获取套餐清单以及每个套餐的每个灯具中提供的最低交易价格。
这是我在 phpMyAdmin 或 SQLYog 中运行的 mysql 查询,它运行良好,但在 Laravel 中它给出了“p.title' is not in GROUP BY”错误。
SELECT
p.title AS package_title,
tbl_min_value.min_price AS min_price
FROM
(SELECT
fixture_id,
MIN(deal_price) AS min_price
FROM
fixture_deal
GROUP BY fixture_id) AS tbl_min_value
JOIN fixtures AS f
ON f.id = tbl_min_value.fixture_id
RIGHT JOIN packages AS p
ON f.package_id = p.id
GROUP BY p.id
顺便说一句,我正在尝试通过在模型中使用以下方法来实现它:
return DB::statement('SELECT
p.title AS package_title,
tbl_min_value.min_price AS min_price
FROM
(SELECT
fixture_id,
MIN(deal_price) AS min_price
FROM
fixture_deal
GROUP BY fixture_id) AS tbl_min_value
JOIN fixtures AS f
ON f.id = tbl_min_value.fixture_id
RIGHT JOIN packages AS p
ON f.package_id = p.id
GROUP BY p.id');
【问题讨论】:
-
您是否尝试过以另一种方式执行它,例如
$pdo = DB::connection()->getPdo();并直接触发它 -
不,我没试过。你能详细说明我该怎么做吗?我应该写这样的代码吗?:DB::connection()->getPdo('Query');
-
不......它仍然给出几乎相同的错误:SQLSTATE [42000]:语法错误或访问冲突:1055 'p.title' is not in GROUP BY
-
如果将 p.title 替换为 id 会发生什么?
标签: php mysql laravel-5 group-by nested-query