AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Select mit FK und where-Klausel in einer einzigen Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Select mit FK und where-Klausel in einer einzigen Tabelle

Ein Thema von Nils S. · begonnen am 6. Mai 2015 · letzter Beitrag vom 6. Mai 2015
Antwort Antwort
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#1

SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 13:29
Guten Tag zusammen,

ich stehe vor einem, für mich, etwas komplizierterem Rätsel.

Ich arbeite mit einer SQL-Datenbank und habe dort eine Tabelle mit Artikeln.
Diese enthält unter anderem die Spalten

ID --- Artikelnummer --- Revision --- Vorgängerartikel_FK(Enthält ID des Vorgängerartikels)

Nun will ich ein select ausführen, wessen Ergebnis die ID, Artikelnummer, Revision und Artikelnummer + Revision des Vorgängerartikels enthält.

Ich kann also ein

Select
ID,
Artikelnummer,
Revision,
from
Artikel;

ausführen, um den leichten Teil zu erledigen. Klappt natürlich auch wunderbar.

Wenn ich mir das Ganze so umbaue

Select
ID,
Artikelnummer,
Revision,
Artikelnummer + ' - ' + Revision as Vorgängerartikel (die "SQL-und-Zeichen" kriege ich hier nicht hin, deswegen das "+")
from
Artikel
where
Artikel.ID = Artikel.Vorgängerartikel;

funktioniert das nicht, ist ja auch einleuchtend...

Aber wie kann ich das realisieren, ohne eine zweiite Tabelle zu haben, bzw. geht das überhaupt oder macht man sowas lieber erst gar nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 13:38
Grundsätzlich kannst Du die gleiche Tabelle natürlich mehrmals abfragen, mit verschiedenen Aliasen halt

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 13:56
Grundsätzlich kannst Du die gleiche Tabelle natürlich mehrmals abfragen, mit verschiedenen Aliasen halt

Sherlock
Ich ergänze noch, dass deine Notation zwar möglich ist, ein outer join aber wahrscheinlich geeigneter, schneller je nach Datenbanksystem.
Nicht jeder Artikel hat wohl einen Vorgänger, selbst wenn der Shop aus der Steinzeit ist.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 13:59
So Vieleicht?

SQL-Code:
Select
  A.ID,
  A.Artikelnummer,
  A.Revision,
  V.Artikelnummer + ' - ' + V.Revision as Vorgängerartikel
From
  Artikel A
Left Join
  Artikel V
On
  V.ID = A.Vorgängerartikel_FK
Hättest das auch gut in der Datenbank-Sektion posten können.
Ralph
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#5

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 14:41
Uhi, das ging ja schnell...xD
Danke für die ganzen Lösungen.

Das mit den Aliases ist ne coole Sache, aber über ein einfaches select fehlen dann die Einträge, wo es keinen Vorgänger gibt.
Das meine jobo wohl.

Der Left Join gefällt mir.

Danke.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 14:44
Zitat:
Das mit den Aliases ist ne coole Sache, aber über ein einfaches select fehlen dann die Einträge, wo es keinen Vorgänger
gibt.
Das hat nichst mit den Aliasen zu tun, sondern das der implizite Join immer ein inner Join ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#7

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 15:07
Ok.

Gibt es denn eine Möglichkeit, dass ich noch eine where Klausel für eine Zusätzliche Bedingung einbauen kann?
Oder gehen alle zusätzlichen Bedingungen jetzt ebenfalls nur noch über einen Join?
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#8

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 15:25
einfach where-clause hinten anhängen
Thomas Breitkreuz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SQL Select mit FK und where-Klausel in einer einzigen Tabelle

  Alt 6. Mai 2015, 15:25
Im Join (on) sollten nur die Bedingungen für disen stehen und die anderen Einschränkungen wie gehabt in der where clause.
Markus Kinzler
  Mit Zitat antworten Zitat
6. Mai 2015, 15:25
Dieses Thema wurde am "06. May 2015, 15:25 Uhr" von "TBx" aus dem Forum "Programmieren allgemein" in das Forum "Datenbanken" verschoben.
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 07:20 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