ホームページ >データベース >mysql チュートリアル >複数のテーブルにわたって MySQL 内部結合結果を効率的にフィルタリングする方法

複数のテーブルにわたって MySQL 内部結合結果を効率的にフィルタリングする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 02:25:09351ブラウズ

How to Efficiently Filter MySQL Inner Join Results Across Multiple Tables?

追加のフィルタリングを使用して複数のテーブルをクエリする MySQL 内部結合

内部結合を使用して MySQL の複数のテーブルを結合しようとしています。特に、特定のユーザーの製品、価格、リストに関する情報を取得しようとしています。ただし、クエリにリスト テーブルを含めると、出力に不要なデータが追加されることになります。

クエリを分析し、問題に対処するためにクエリを変更しましょう:

SELECT *
FROM orders
  INNER JOIN products_pricing
    ON orders.pricing_id = products_pricing.id
  INNER JOIN products
    ON products_pricing.product_id = products.id
WHERE orders.user_id = '7'

このクエリは次の内容を取得します。関連する価格設定や製品情報を含む、orders テーブルからの user_id '7' のすべてのレコード。

lists テーブルを含めて、結果を特定のものに制限するには

SELECT
  p.id,
  p.name,
  l.url,
  o.user_id,
  o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp
  ON o.pricing_id = pp.id
INNER JOIN products AS p
  ON pp.product_id = p.id
INNER JOIN listings AS l
  ON l.user_id = o.user_id
WHERE
  o.user_id = '7'
  AND l.id = 233  -- Add condition to filter by specific listing
  AND l.url = 'test.com'  -- Add condition to filter by specific url

この変更されたクエリは、WHERE 句に 2 つの条件を追加します。

  • l.id = 233 は、結果のみを含むようにフィルター処理します。 ID '233' のリスト。
  • l.url = 'test.com' で結果がさらにフィルタリングされ、次のリストのみが含まれます。特定の URL 'test.com'。

この更新されたクエリにより、目的の出力が提供されます。製品、価格、および user_id '7' のユーザーのリストに関する情報を含むテーブル (フィルター処理済み)特定の出品条件による。

以上が複数のテーブルにわたって MySQL 内部結合結果を効率的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。