![]() |
Mengenansicht als SQL-Statement
Hallo,
ich möchte das Folgende als sql-Statement formulieren: 1. Menge Auftrag 2. Menge Position Die beiden Mengen haben eine Schnittmenge. Ich möchte jetzt ein Statement formulieren, welches mir nur Elemente aus der Menge Position liefert. Also alle Elemente 'Position' abzüglich der Schnittmenge. Alles verstanden? Wie müsste ein solches Statement lauten? Danke! |
Re: Mengenansicht als SQL-Statement
Zitat:
Hast Du eine Tabelle mit den Aufträgen und eine mit den Positionen aller Aufträge und möchtest jetzt zu einem Auftrag alle Positionen? |
Re: Mengenansicht als SQL-Statement
Versuche mal
SQL-Code:
...:cat:...
SELECT * FROM [Position] LEFT JOIN [Auftraege] ON [Postion].[RelId] = [Auftraege].[RelId] WHERE [Auftrage].[RelId] = NULL
|
Re: Mengenansicht als SQL-Statement
Hallo,
was ich möchte ist eine allgemeine Beschreibung in einem sql-Stetement, dass mir die Mengenbildung wie beschrieben zurückliefert. Ich habe zwei Mengen, die eine gemeinsame Schnittmenge haben. Ergebnis sollen alle Elemente sein, die nur einer Menge angehören. Jetzt besser? ;) |
Re: Mengenansicht als SQL-Statement
Sorry ich versteh dich immer noch nicht ganz. Poste doch bitte mal ein Datenmodell oder eine Demodatenbank in Access. Ich denke dann wird dir sofort jemand eine passende Antwort geben können.
|
Re: Mengenansicht als SQL-Statement
wenn beide Tabellen (Auftrag und Position jeweils das Schlüsselfeld "idAuftrag" enthalten, dann:
SQL-Code:
Gruß
SELECT * FROM AUFTRAG
WHERE idAuftrag NOT IN (SELECT idAuftrag FROM Position) |
Re: Mengenansicht als SQL-Statement
Hallo Leuselator,
Zitat:
@PhaTTy: Es geht hier um eine theoretische Beschreibung. Es gibt kein Datenmodell! |
Re: Mengenansicht als SQL-Statement
SQL-Code:
SELECT A.*
FROM Auftrag A LEFT OUTER JOIN Position B ON B.idAuftrag = A.idAuftrag WHERE B.idPosition IS NULL
Code:
Gruß
Erläuterung - DB-Engine geht eventuell in anderer Weise vor,
aber für Dich zum nachvollziehen: 1. Schritt: erzeugt Tabelle mit Allen Spalten aus beiden Tabellen 2. Schritt: füllt Tabelle mit allen Zeilen aus Auftrag 3. Schritt: wenn Position mit gleicher idAuftrag vorhanden vorhanden, werden die entsprechenden Zeilen mit den Werten aus Position ergänzt - alle anderen "Positionsspalten" bleiben leer (NULL) 4. Schritt: beschränkt Ergebnis auf die Zeilen, in denen die "Positionsspalten" leer sind (das ist Deine Wunschmenge) 5. Schritt: beschränkt Ergebnisspalten auf die, welche aus Tabelle Auftrag stammen (A.*) Edit: Ich sehe gerade, dass Sakura schon nahe dran war - nur fehlt das "outer" in seinem Join - ohne "outer" kommen nur die Schnittmengenzeilen und nicht alle Positionszeilen in das Ergebnis... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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-2025 by Thomas Breitkreuz