次のクエリがあります。
SELECT * FROM `product` INNER JOIN `shop`
ON `product`.shop_id= `shop`.id;
持っているすべてのショップの商品をすべて入手したかったのですが、各ショップから最大 3 つの商品を入手したかったのです。各結合で MAX を指定する方法はありますか?
これが私の製品テーブルです:
これが私のショップテーブルです:
コードで制限を使用してみてください。それはうまくいくかもしれません
問題を解決するための SQL を考え出すには、主キー、外部キーなどの観点からテーブル定義を知ることが重要です。画像から、product.id が一意かどうかは明確ではありません。ここには、データ モデルの定義に問題がある可能性があると思われます。テーブルが必要な程度に正規化されていない場合、適切なデータを読み戻すことが非常に困難になります (不可能な場合もあります)。合理的に正規化されたテーブルは次のようになります。
製品 (id 主キー、....)
Shop(id 主キー,....)
とリレーションテーブルが言います。
Shop_Product (shop_id は Shop(id) を参照、prod_id は Product(id) を参照、...)
テーブル定義を送っていただけると助かります。