編集済み
ブランド コード ID を含めていないことに気付きました。現在、マスター テーブルにはブランド ID が保持されています。1001 と 1002 だけが、他のブランドがサード パーティのブランドであることを気にするものです。
編集部分の終了
ここで提供されたヘルプに対するすべてのコミュニティに最初に感謝します。これは常に非常に役立ちます。私はmysqlの完全な初心者です。Java、javascript、現在phpを開発しています。現在のプロジェクトでは、データベースからデータを取得する必要があるという問題に直面しています。次のように:
たとえば、2 つの自社ブランドを含むさまざまなブランドを販売するショッピング サイトに、「puma」、「nike」、「ownbrand1」、および「ownbrand2」という名前を付けると、倉庫は「ownbrand1」と「ownbrand2」の在庫のみを保持します。顧客が他のブランドのいずれかを購入すると、第三者の会社が必要に応じて要求された製品を送信します. この Web サイトでは、多くの場合に結果をフィルタリングする選択肢を提供しています。そのうちの 1 つは、現時点で在庫があるアイテムのみを表示することです。
3 つのテーブルがあるとします。最初のテーブルを「在庫」と呼び、各製品 (自社ブランドのみ) の内部一意コードを含む在庫量を持ちます。製品 ID と 3 番目のテーブル「写真」には、写真情報と一般的な製品 ID を保持する Web サイトに表示する目的で写真が保持されます。
製品は、製品ごとに異なる一意の製品コード ID によって識別されます。つまり、同じ製品でもサイズまたは色が異なると、コード ID が異なります。2 番目の ID 一般的な製品 ID は、製品ごとにのみ異なります。つまり、サイズまたは色が異なることを意味します。同じ製品 ID と、一般的な製品の 1 つの写真である写真情報を持ちます。
------------------------------
Stock
------------------------------
ID Name Stock
00001 puma1 0
00002 puma2 0
00003 ownbrand1(s) 0
00004 ownbrand2(l) 0
00005 nike 0
00006 ownbrand1(l) 1
00007 ownbrand1(m) 3
---------------------------------------------
Master
---------------------------------------------
ID Name GeneralId BrandId
00001 puma1 pum001 1030
00002 puma2 pum001 1030
00003 ownbrand1(s) owbr001 1001
00004 ownbrand2(l) owbr002 1002
00005 nike nike001 1040
00006 ownbrand1(l) owbr001 1001
00007 ownbrand1(m) owbr001 1001
------------------------------
Photo
------------------------------
GeneralId Picture
pum001 pum001.jpg
owbr001 owbr001.jpg
owbr002 owbr002.jpg
nike001 nike001.jpg
在庫商品のみのオプションをクリックすると、ページにはサードパーティの商品が表示され、この場合は自社ブランドの在庫が 0 よりも大きい商品のみが表示されます。
望ましい結果
"puma" = 表示
"nike" = 表示
"ownbrand1" = 表示 (一部のサイズに在庫があるため)
"ownbrand2" = 表示なし (在庫がないため)
今、私は最初にこのクエリを実行してタスクを完了します:
$sql_query = "SELECT stock.*, master.* FROM stock, master WHERE master.ID = stock.ID AND stock.stock > '0'"
次に、マスター テーブルから取得した在庫品目の generalID コードを使用して配列を生成し、次のクエリを生成します。
$sql_query = "SELECT * FROM master WHERE generalID NOT IN $previous_array"
2 つの配列を結合して製品ブランドの全リストを生成し、分類のためのフィルタリングをさらに行った後、この最後のクエリを実行することを示します。
$sql_query = "SELECT * FROM photo WHERE generalID IN $complete_array"
今、この方法で必要な結果が得られますが、2000 を超えるアイテムと 30 以上のブランドで期待できるように、パフォーマンス速度が少し低下します。UNION クエリを実行しようとしましたが、アイデアを理解することができませんでした。
あなたのSQLマスターがこれを理解するのを手伝ってくれるなら、私はとても幸せなバニーになるでしょう.