![]() |
Datenbank: PostgreSQL • Version: 8.3 • Zugriff über: ZeosLib
Simple SQL-Abfrage mit Fremdschlüssel
Für die meisten von euch, die halbwegs SQL-bewandert sind, ist meine Frage sicherlich ziemlich banal. Da ich aber schon lange nicht mehr mit SQL konfrontiert war, komme ich einfach nicht auf die richtige Lösung.
Ich habe eine simple Tabelle, z.B. "kunden", bestehend aus den Spalten "kunden_id" und "kundenname". Diese Tabelle wird von einer anderen genutzt mittels Fremdschlüssel. Nennen wir sie "bestellungen". Einer Bestellung kann ein Kunde mittels Fremdschlüssel zugeordnet werden, muss aber nicht (Fremdschlüssel-Spalte darf also NULL sein). Nun möchte ich mittels SQL alle Bestellungen abfragen und gleichzeitig dazu den zugehörigen Kundennamen, falls ein Kunde angegeben wurde. Wie mache ich das? Bisher hab ich sowas immer in die WHERE-Klausel gepackt:
SQL-Code:
Nur wenn jetzt in der Tabelle "bestellungen" mal kein Kunde angegeben ist, wird diese Bestellung übersprungen. Sie soll aber trotzdem zurück gegeben werden, dann halt mit leerem Namensfeld. Wie geht das nochmal? Sicherlich trivial, aber ich komm nicht drauf.
SELECT b.bestellungsnummer, k.kundenname
FROM bestellungen b, kunden k WHERE b.kunden_id = k.kunden_id; |
Re: Simple SQL-Abfrage mit Fremdschlüssel
Du benötigst einen OUTER JOIN. Dies geht aber nur mit einem expliziten Join ( implizite, wie in deinem Beispiel sind immer INNER JOINS)
SQL-Code:
SELECT
b.bestellungsnummer, k.kundenname FROM bestellungen b left join kunden k on k.id = b.kunden.id; |
Re: Simple SQL-Abfrage mit Fremdschlüssel
Zitat:
Ich sage vielen Dank! EDIT: "LEFT JOIN" ist das gleiche wie "LEFT OUTER JOIN" nur kürzer? Oder gibts Unterschiede (konnte zumindest keine feststellen)? |
Re: Simple SQL-Abfrage mit Fremdschlüssel
Zitat:
|
Re: Simple SQL-Abfrage mit Fremdschlüssel
Dumme Nachfrage:
was ist mit
SQL-Code:
;
WHERE b.kunden_id = k.kunden_id(+)
So sollte es (zumindestens unter Oracle) auch funktionieren. Gruß K-H |
Re: Simple SQL-Abfrage mit Fremdschlüssel
Zitat:
|
Re: Simple SQL-Abfrage mit Fremdschlüssel
Danke!
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz