Problem:
Beim Auswählen von Daten aus mehreren Tabellen in MySQL mit einem einfachen JOIN ohne Angabe von Tabellen Unter bestimmten Bedingungen kann es zu doppelten Zeilen kommen, da für jeden übereinstimmenden Schlüssel mehrere Zeilen verbunden werden. Wie können wir diese Duplikate beseitigen und eindeutige Zeilen für jedes Getränk abrufen, einschließlich aller zugehörigen Fotos?
Lösung:
Um dieses Problem zu lösen, müssen wir Gruppierungs- und Aggregationsfunktionen verwenden Kombinieren Sie doppelte Zeilen und wählen Sie daraus einen gewünschten Wert aus.
Zuerst gruppieren wir die Zeilen nach der Drinks_ID, um jeweils nur eine Zeile zu erhalten Getränk:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Dieser Ansatz gibt eine Zeile pro Getränk mit nur einem Foto zurück. Um alle zugehörigen Fotos einzuschließen, können wir die Funktion GROUP_CONCAT verwenden, um die Namen der Fotodateien in einer einzigen Zeichenfolge zu verketten:
SELECT name, price, GROUP_CONCAT(photo, ',') FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Diese Abfrage generiert eine Tabelle mit eindeutigen Getränkezeilen und einer verketteten Zeichenfolge, die alle enthält Fotodateinamen für jedes Getränk.
Beachten Sie, dass GROUP_CONCAT eine MySQL-spezifische Funktion ist und in anderen Datenbanksystemen möglicherweise nicht unterstützt wird. In solchen Fällen müssen möglicherweise alternative Ansätze wie Unterabfragen oder Array-Datentypen in Betracht gezogen werden.
Das obige ist der detaillierte Inhalt vonWie vermeide ich doppelte Zeilen beim Zusammenführen mehrerer Tabellen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!