Heim >Datenbank >MySQL-Tutorial >Wie filtere ich MySQL-Inner-Join-Ergebnisse effizient über mehrere Tabellen hinweg?
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:
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!