AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mengenansicht als SQL-Statement
Thema durchsuchen
Ansicht
Themen-Optionen

Mengenansicht als SQL-Statement

Ein Thema von barnti · begonnen am 18. Mai 2004 · letzter Beitrag vom 19. Mai 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 10:00
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!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 10:40
Zitat von barnti:
.... Alles verstanden?....
Ehrlichgesagt: NEIN
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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 10:44
Versuche mal
SELECT * FROM [Position] LEFT JOIN [Auftraege] ON [Postion].[RelId] = [Auftraege].[RelId] WHERE [Auftrage].[RelId] = NULL ......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 10:57
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?
Gruß,

Barnti
  Mit Zitat antworten Zitat
PhaTTy

Registriert seit: 16. Mai 2004
Ort: Laupheim
40 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 18:03
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.
Make it idiot-proof and someone will invent a better idiot...
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Mengenansicht als SQL-Statement

  Alt 18. Mai 2004, 18:47
wenn beide Tabellen (Auftrag und Position jeweils das Schlüsselfeld "idAuftrag" enthalten, dann:
SQL-Code:
SELECT * FROM AUFTRAG
WHERE idAuftrag NOT IN (SELECT idAuftrag
                          FROM Position)
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Mengenansicht als SQL-Statement

  Alt 19. Mai 2004, 07:33
Hallo Leuselator,


Zitat von Leuselator:
wenn beide Tabellen (Auftrag und Position jeweils das Schlüsselfeld "idAuftrag" enthalten, dann:
SQL-Code:
SELECT * FROM AUFTRAG
WHERE idAuftrag NOT IN (SELECT idAuftrag
                          FROM Position)
Gruß
Das ist mein Gedanke. Leider unterstützt mysql (noch) keine Unterabfragen. Daher auch nicht 'intersect'. Lediglich 'Union' wird bereitgestellt.

@PhaTTy:
Es geht hier um eine theoretische Beschreibung. Es gibt kein Datenmodell!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#8

Re: Mengenansicht als SQL-Statement

  Alt 19. Mai 2004, 09:01
SQL-Code:
         SELECT A.*
           FROM Auftrag A
LEFT OUTER JOIN Position B
             ON B.idAuftrag = A.idAuftrag
          WHERE B.idPosition IS NULL
Code:
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.*)
Gruß

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...
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz