我在数据库中有四个表,即 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');