there is no unique constraint matching given keys for referenced table
Mehr als eine Zeile von einer Subquery als Ausdruck zurückgegeben
Manchmal, wenn wir mit Datenbanken arbeiten, möchten wir komplexere Abfragen erstellen, um genau die Daten zu erhalten, die wir benötigen. Eine Möglichkeit dies zu tun ist, indem man mehr als eine Zeile mit einer Subquery als Ausdruck zurückgibt. Aber was genau bedeutet das und wie funktioniert es? Lass uns das gemeinsam herausfinden!
Subquery-Typ | Beschreibung | Beispiel |
---|---|---|
Skalar Subquery | Ergebnis als einzelner Wert. | SELECT COUNT(*) FROM users; |
Tabellen Subquery | Ergebnis als Tabelle mit mehreren Zeilen. | SELECT * FROM users WHERE country = ’Germany’; |
Inline View Subquery | Ergebnis als temporäre Tabelle in einer FROM-Klausel. | SELECT c.* FROM (SELECT a.*, ROW_NUMBER() OVER (ORDER BY a.id) AS position FROM users a) c WHERE c.position BETWEEN 1 AND 10; |
Existenz-Subquery | Testet, ob bestimmte Bedingungen erfüllt sind. | SELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE user_id = users.id); |
Wie verwenden wir Subqueries, um mehrere Zeilen zurückzugeben?
Um mehr als eine Zeile mit einer Subquery als Ausdruck zurückzugeben, können wir Tabellen Subqueries oder Inline View Subqueries verwenden. Tabellen Subqueries sind hilfreich, wenn wir Daten aus mehreren Zeilen innerhalb einer Query kombinieren möchten. Inline View Subqueries sind nützlich, wenn wir temporäre Tabellen erstellen möchten, um Vergleiche oder Berechnungen durchzuführen.
Beispielszenario
Angenommen, wir haben eine Benutzerdatenbank und möchten alle Benutzer abrufen, die in den Top 10% der aktivsten Benutzer sind. Um dies zu tun, verwenden wir eine Inline View Subquery, um eine temporäre Tabelle der aktiven Benutzer zu erstellen und anschließend die Ergebnisse abzurufen.
Einblicke in die Anwendung von Subqueries
Subqueries sind ein leistungsstarkes Werkzeug, aber es ist wichtig, sie mit Bedacht zu verwenden, um die Leistung der Datenbank nicht zu beeinträchtigen. Denken Sie an die folgenden Punkte:
- Verwenden Sie Subqueries, um spezifische Informationen zu filtern.
- Indem Sie die richtige Joins-Technik wählen, kann die Effizienz der Query erhöht werden.
- Achten Sie auf die Lesbarkeit und Wartbarkeit Ihres Codes.
Subqueries können unsere SQL-Abfragen vereinfachen und sie effizienter gestalten. Indem wir mehrere Zeilen als Ausdruck einer Subquery zurückgeben, können wir eine größere Flexibilität bei der Abfrage unserer Datenbank erzielen und genau die Daten erhalten, die wir benötigen.