Heim >Datenbank >MySQL-Tutorial >Wie filtere ich MySQL-Inner-Join-Ergebnisse effizient über mehrere Tabellen hinweg?

Wie filtere ich MySQL-Inner-Join-Ergebnisse effizient über mehrere Tabellen hinweg?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 02:25:09349Durchsuche

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

MySQL Inner Join fragt mehrere Tabellen mit zusätzlicher Filterung ab

Sie versuchen, mehrere Tabellen in MySQL mithilfe von Inner Joins zu verknüpfen. Sie versuchen insbesondere, Informationen zu Produkten, Preisen und Angeboten für einen bestimmten Benutzer abzurufen. Das Einbeziehen der Auflistungstabelle in Ihre Abfrage führt jedoch zu zusätzlichen, unerwünschten Daten in der Ausgabe.

Lassen Sie uns Ihre Abfrage analysieren und sie ändern, um das Problem zu beheben:

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'

Diese Abfrage ruft ab Alle Datensätze für Benutzer-ID „7“ aus der Bestelltabelle, einschließlich der zugehörigen Preis- und Produktinformationen.

Um die Auflistungstabelle einzuschließen und die Ergebnisse auf eine bestimmte Auflistung zu beschränken, müssen Sie Es muss eine zusätzliche Bedingung hinzugefügt werden:

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

Diese geänderte Abfrage fügt der WHERE-Klausel zwei Bedingungen hinzu:

  • l.id = 233 filtert die Ergebnisse so, dass nur die Auflistung mit enthalten ist id '233'.
  • l.url = 'test.com' filtert die Ergebnisse weiter, um nur Einträge mit der spezifischen URL einzuschließen 'test.com'.

Diese aktualisierte Abfrage sollte Ihnen die gewünschte Ausgabe liefern: eine Tabelle mit Informationen zu Produkten, Preisen und Angeboten für den Benutzer mit der Benutzer-ID „7“, gefiltert nach dem spezifischen Auflistungsbedingungen.

Das obige ist der detaillierte Inhalt vonWie filtere ich MySQL-Inner-Join-Ergebnisse effizient über mehrere Tabellen hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn