データベースには、パッケージ、フィクスチャ、ディール、フィクスチャ ディールの 4 つのテーブルがあります。
テーブル構造の詳細は次のとおりです。
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' が 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');