AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi If-Verzweigungen in SQL-Queries?

If-Verzweigungen in SQL-Queries?

Ein Thema von mjenke · begonnen am 19. Jun 2006 · letzter Beitrag vom 19. Jun 2006
 
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

If-Verzweigungen in SQL-Queries?

  Alt 19. Jun 2006, 08:52
Datenbank: MySQL • Version: 3.23.55 • Zugriff über: ODBC
Guten Morgen, alle miteinander!


Folgendes Problem stellt sich mir:

Ich habe eine Datenbank, in der unter anderem Gesetze und Normenketten in zwei Tabellen liegen (tgesetze, tnormen).
Diese Normen und die Gesetze sind über IDs miteinander verknüpft:


tgesetze
--------
ID - Schlüssel des Gesetzes
THESNR - Thesaurusnummer die auch zur Sortierung herangezogen wird
GESETZ - Name des Gesetzes (z. B. EStG 1997, LStR 1996 etc.)

tnormen
-------
IDGESETZ - Fremdschlüssel. Ist die ID aus tgesetze
THESNR - Thesaurusnummer. KANN besetzt sein (ist sie leer, ist sie nicht NULL, sondern -1).


Jetzt muss ich eine Liste von Normen aus der Datenbank ziehen, die nach der Thesaurusnummer (und damit indirekt auch nach dem Gesetzesnamen aus tgesetze) sortiert ist. Dabei gilt aber folgende Regel:
  • Wenn in tnormen KEINE THESNR angegeben ist, soll die Verbindung zu tgesetze über IDGESETZ hergestellt werden.
  • Wenn allerdings eine THESNR in tnormen ANGEGEBEN ist, muss die Verbindung zu tgesetze über diese THESNR hergestellt werden. Diese THESNR ist eine nachträglich manuell hergestellte Verbindung von der Norm zum Gesetz, die in jedem Fall Vorrang hat.

Meine Frage ist nun:

Wie kann ich in EINER einzigen Query eine Abfrage so gestalten, dass entschieden wird, über welches Feld aus tnormen (IDGESETZ oder THESNR) nun die Verbindung zu tgesetze hergestellt wird? Oder ist dies gar nicht möglich und ich muss mir einen ganz anderen Weg überlegen?

So nach dem Motto:

SQL-Code:
SELECT t1.*, t2.gesetz FROM
tnormen t1
if t1.THESNR <> -1 then LEFT JOIN tgesetze t2 ON t1.THESNR = t2.THESNR
else LEFT JOIN tgesetze t2 ON t1.IDGESETZ = t2.ID
ORDER BY ...

An der Struktur der Datenbank kann ich hier nichts ändern, da dies vom Kunden so vorgegeben wurde. Ich muss nur einen Weg finden, mich da durchzuboxen.


Falls jemand eine Möglichkeit weiss, wie ich das bewerkstelligen könnte, wäre ich echt dankbar. Es brennt mir nämlich ein bisschen auf den Nägeln, da ich heute morgen erst drangehen konnte, aber auch heute fertig werden muss.



Matthias
Matthias Jenke
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:36 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