検索

ホームページ  >  に質問  >  本文

MySQLデータベースでNavicatを使用して複数のID値をフィルタリングする

<p>id_product を繰り返さずに、最新の有効期限と販売価格を使用してデータをフィルタリングする必要があります。この問題を解決しようとしましたが、正しい方法が見つかりません</p> <p>これは Navicat クエリと結果です</p> <pre class="brush:php;toolbar:false;">SELECT product_exp_date.idproduct、 product_exp_date.exp_date、 product_exp_date.sale_price から 製品 内部結合 product_exp_date の上 product.idproduct = product_exp_date.idproduct グループ化 product_exp_date.exp_date</pre> <pre class="brush:php;toolbar:false;">idproduct exp_date Selling_price 8 2022-11-01 300 5 2022-06-08 370 5 2022-06-09 350 7 2022-07-01 380 5 2022-09-20 450 6 2022-10-08 140 6 2023-06-08 150 <p>私はこの方法を試しました</p> <pre class="brush:php;toolbar:false;">GROUP BY product_exp_date.idproduct</pre> <p>しかし、異なる結果が得られます</p> <pre class="brush:php;toolbar:false;">idproduct exp_date Selling_price 5 2022-06-09 350 6 2023-06-08 150 7 2022-07-01 380 8 2022-11-01 300 <p>しかし、この結果を取得する必要があります</p> <pre class="brush:php;toolbar:false;">idproduct exp_date Selling_price 5 2022-06-08 370 6 2022-10-08 140 7 2022-07-01 380 8 2022-11-01 300 <p>商品一覧</p> <pre class="brush:php;toolbar:false;">productid product_name 5A 6B 7C 8 D</pre> <p>Product_EXP_DateTable</p> <pre class="brush:php;toolbar:false;">idproduct_exp_date idproduct_exp_date Selling_price 1 5 2022-06-09 350 2 6 2023-06-08 150 3 5 2022-06-08 370 4 5 2022-09-20 450 5 6 2022-10-08 140 6 7 2022-07-01 380 7 8 2022-11-01 300 <p>クエリにエラーが発生することがあります。とにかく、この問題を解決するには助けが必要です。 ありがとう。 </p>
P粉285587590P粉285587590461日前626

全員に返信(1)返信します

  • P粉481035232

    P粉4810352322023-08-29 16:08:14

    まず、訂正させていただきますが、これは Navicat クエリではなく、MySQL クエリです。さて、これらは 2 つの異なるものです。 MySQL はデータベースであり、Navicat はツールです。MySQL Workbench、PHPMyAdmin、SQLyog などの他のツールと同様です。グラフィカル インターフェイスを通じてデータベース機能を実行できるように設計されています。

    次に、2 つのクエリを示します。MySQL のバージョンに応じて、そのうちの 1 つを使用できます。最初のクエリは次のとおりです:

    リーリー

    上記のクエリは、MySQL または MariaDB のどのバージョンでも実行できるはずです。このクエリの考え方は、idproduct グループ化によって最小の exp_date を取得し、それをサブクエリとして使用して product テーブルに再度接続することです。これら 2 つの抽出された値を照合して、 Selling_price を抽出できるようにします。

    2 番目のクエリ:

    リーリー

    このクエリは、ウィンドウ関数をサポートする MySQL v8 または MariaDB 10.2 (以降) でのみ実行できます。考え方は前のクエリと少し異なります。ここでは、特定の条件に基づいて ROW_NUMBER() を生成することに焦点を当て、それをサブクエリにして WHERE 句を追加するだけです。前のクエリと比較して、これには JOIN 操作が必要ありません。

    元のクエリで使用されていないため、product テーブルを考慮していないことがわかりますが、結合する必要があるのに結合できない場合は、方法を知りたいならメッセージを送ってください。何がで​​きるか見てみましょう。

    デモフィドル

    返事
    0
  • キャンセル返事