Datenbank Forum - für Anfänger und Profis

Willkommen im Datenbank Forum von Datenbanken-verstehen.de - Das Datenbank, Data Warehouse & Business Intelligence Forum!

Das Datenbank Forum für Anfänger und Profis ist eine Community zu den Themen Datenbanken, Data Warehouse & Business Intelligence. Nimm teil an der Community von Datenbanken-verstehen.de und tausch dich mit deinen Fragen und Lösungen mit anderen Nutzern aus.

Als registrierter Benutzer genießt Du viele Vorteile, wie

  • den vollen Zugang zu allen Foren und Unterforen
  • Kostenloses Lernmaterial inkl. Lösungen zum Thema Datenbanken
  • Zugriff auf DB-Tutorials, Best Practices und SQL-Snippets

Bevor Du einen Beitrag verfassen möchtest, kannst Du dich einfach kostenlos registrieren.

oder Einloggen mit



Beachte bitte die Forenregeln von Datenbanken-verstehen.de. Wir wünschen Dir viel Spaß im Datenbank Forum! - Dein Datenbanken-verstehen.de-Team

SQL Anfrage - Äquivalente Ausdrücke?

Alles zum Thema Datenbankentwicklung...

SQL Anfrage - Äquivalente Ausdrücke?

Beitragvon S_Q_L_ » So 10. Jan 2016, 14:57

Hallo

ich habe in dem Skript meiner Universität folgende SQL-Anweisung vorgefunden:

Für welche Bestellungen wurden die zughörigen Produktinformationen bereits gelöscht.

Lösung:

(SELECT BestNr
FROM Bestellungen LEFT JOIN Produkte ON Bestellungen.ProdNr = Produkte.ProdNr)
EXCEPT
(SELECT BestNr FROM Bestellungen NATURAL JOIN Produkte)

Ist der linke äußere Join in diesem Fall nicht überflüssig?


Ich hätte den Befehl wie folgt geschrieben:
(SELECT BestNr
FROM Bestellungen)
EXCEPT
(SELECT BestNr FROM Bestellungen NATURAL JOIN Produkte)

Die BestNr stellt den Schlüssel dar. Durch die erste Anfrage erhält man nun jedes Tupel aus Bestellungen. In dem zweiten Ausdruck werden die Bestellungen herausgesucht, die mit einem Produkt assoziiert werden. Anschließend folgt eine Projektion auf BestNr. Man erhält durch die gegebene zweite Anfrage alle Bestellungen (durch den Schlüssel), die mit einem Produkt eine Beziehung eingehen. Im ersten Befehl werden alle Tupel der Bestellung ermittelt.
Nun werden die Bestellungen (charakterisiert durch den Schlüssel) von der Liste aller Bestellungen gelöscht, die in der zweiten Anfrage ermittelt wurden (durch except).

Somit müssten doch beide Anfragen äquivalent sein oder habe ich irgendwo einen Denkfehler übersehen?

liebe Grüße
S_Q_L_
S_Q_L_
 
Beiträge: 3
Registriert: Fr 1. Jan 2016, 15:09

Re: SQL Anfrage - Äquivalente Ausdrücke?

Beitragvon SQLUnion » So 17. Jan 2016, 10:41

Also das T-SQL Except subtrahiert Mengen aus Obermengen.

Zum Beispiel:

Menge A
Except
Menge B

Alles was von Menge B in Menge gefunden wird, wird aus der Abfrage entfernt, nicht gelöscht.
Hast Du schon mal das Ganze mit einem kleinen Data Set ausprobiert?

Kannst uns gerne deine Ergebnisse zur Verfügung stellen...
Gruß,
SQLUnion
SQLUnion
 
Beiträge: 157
Registriert: Fr 1. Nov 2013, 15:54


Zurück zu Datenbankentwicklung Allgemein

 


  • Related topics
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
  • Jetzt Fan werden
  • Newsletter abonnieren? Hier anmelden!

    Alle Informationen aus dem Portal, Blog und Forum in einem Newsletter!

    E-Mail-Adresse: