Heim > Datenbank > MySQL-Tutorial > Wie kann man mehrere Tabellen in MySQL effizient verknüpfen, um verwandte Daten abzurufen?

Wie kann man mehrere Tabellen in MySQL effizient verknüpfen, um verwandte Daten abzurufen?

Barbara Streisand
Freigeben: 2024-12-19 14:37:11
Original
557 Leute haben es durchsucht

How to Efficiently Join Multiple Tables in MySQL to Retrieve Related Data?

Verknüpfen mehrerer Tabellen in MySQL mit Inner Join

In MySQL können Sie mit der INNER JOIN-Anweisung Datensätze aus mehreren Tabellen basierend auf a kombinieren gemeinsame Spalte. Um einen Multi-Table-Join durchzuführen, können Sie die folgende Syntax verwenden:

SELECT columns
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column
[...]
INNER JOIN table_n
ON table_n-1.column = table_n.column;
Nach dem Login kopieren

Stellen Sie sich das folgende Szenario vor: Sie haben vier Tabellen:

  • Bestellungen: (user_id, pricing_id)
  • products_pricing: (id, Produkt_ID)
  • Produkte: (ID, Name)
  • Einträge: (ID, Benutzer_ID, URL)

Sie möchten alle Produkte für einen bestimmten Benutzer (user_id = 7) und Hyperlinks für jedes Produkt mithilfe der entsprechenden URL aus dem abrufen Auflistungstabelle.

Ursprüngliche Abfrage:

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';
Nach dem Login kopieren

Diese Abfrage gibt alle Produkte für den Benutzer mit der ID 7 zurück, enthält jedoch nicht die URL für jedes Produkt .

Überarbeitete Abfrage:

Sie können die URL für jedes Produkt angeben Fügen Sie der Auflistungstabelle einen weiteren INNER JOIN hinzu:

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 
  AND l.url = 'test.com';
Nach dem Login kopieren

In dieser Abfrage haben wir:

  • INNER JOIN-Auflistungen AS l ON l.user_id = o.user_id: Dies verbindet Die Listings-Tabelle wird basierend auf der Spalte „user_id“ in die Orders-Tabelle verschoben.
  • WHERE o.user_id ='7': Dies filtert die Die Ergebnisse umfassen nur Zeilen, bei denen die user_id in der Auftragstabelle gleich 7 ist.
  • AND l.id = 233 AND l.url = 'test.com': Dadurch werden zusätzliche Filter hinzugefügt, um sicherzustellen, dass nur Zeilen mit Eine bestimmte ID (233) und URL ('test.com') sind im Ergebnis enthalten.

Mit dieser überarbeiteten Abfrage können Sie die Produkte für erfolgreich abrufen angegebenen Benutzer, zusammen mit den entsprechenden URLs zur Verlinkung.

Das obige ist der detaillierte Inhalt vonWie kann man mehrere Tabellen in MySQL effizient verknüpfen, um verwandte Daten abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage