Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Abfrage ueber 2 Tabellen (https://www.delphipraxis.net/40397-sql-abfrage-ueber-2-tabellen.html)

Delphi-Coder 15. Feb 2005 06:54

Datenbank: MS SQL-Server • Version: 2000 • Zugriff über: ADO

SQL-Abfrage ueber 2 Tabellen
 
Guten Morgen,

ich steh gerade ein wenig auf'm Schlauch bezueglich einer SQL-Abfrage. Vielleicht koennt ihr mir ja helfen!
Ich habe eine Tabelle 1 mit einer Spalte "Klasse" und eienr Spalte "Gruppe", diese Spalte enthaelt gewisse Werte. Und dann habe ich eine Tabelle 2, die die Spalten "a", "b", "c", "d" und "klasse" enthaelt. In diesen Spalten werden Preise abgelegt.

Nun zu dem Problem: Ich will, dass per SQL aus der Tabelle 1 die Spalten "Gruppe" und "Klasse" wiedergegeben werden. Und: jenachdem, was in Spalte "Gruppe" der Tabelle 1 steht, soll die entsprechende Spalte in Tabelle 2 angesteuert werden und der Preis dazu ausgelesen werden. (Das Ganze dann natuerlich noch mit Tabelle1.Klasse = Tabelle2.Klasse!).

Die Schwierigkeit liegt u.a. darin, das die Werte in der Spalte "Gruppe" der Tabelle 1 nicht genau so lauten, wie die Spalten (a-d) in Tabelle 2!

Gibt es da irgendwie eine Moeglichkeit, das trotzdem per SQL zu machen?

(Ich hoffe, ich hab mich jetzt verstaendlich ausgedrueckt! Und sorry, wenn der Titel ein wenig nichtssagend ist - wusste nicht, wie ich es kurz beschreiben sollte!)

Vielen Dank schonmal fuer eure Muehe!

Gruss,
Delphi-Coder

alcaeus 15. Feb 2005 06:57

Re: SQL-Abfrage ueber 2 Tabellen
 
Zitat:

Zitat von Delphi-Coder
Die Schwierigkeit liegt u.a. darin, das die Werte in der Spalte "Gruppe" der Tabelle 1 nicht genau so lauten, wie die Spalten (a-d) in Tabelle 2!

Und genau darin liegt das Problem. Außerdem, du willst also wenn in "Gruppe" der Wert "Gemüse" steht, willst du auf Spalte "a", wenn der Wert "Obst" steht, dann auf Spalte "b" usw.? AFAIK ist das mit SQL nicht möglich, das musst du in deinem Programm lösen.

Greetz
alcaeus

Delphi-Coder 15. Feb 2005 07:09

Re: SQL-Abfrage ueber 2 Tabellen
 
Hmm... OK! Habe ich mir schon fast gedacht! Aber trotzdem Danke!

Xabbu 15. Feb 2005 07:15

Re: SQL-Abfrage ueber 2 Tabellen
 
Hmmmm... also mit reinem SQL hast du da in der Tat schlechte Karten. SQL ist ja eine mengenorientierte Sprache und sieht kein Fallunterscheidungen vor. Die von dir gewünschte Logik mußt du also entweder in deinem Programm nachbauen oder über Stored Procedures des MSSQLServer realisieren.

Delphi-Coder 15. Feb 2005 07:18

Re: SQL-Abfrage ueber 2 Tabellen
 
Mit StoredProcedures kenne ich mich uebrhaupt nicht aus! Haettet ihr/du da vielleicht ein kleines Beispiel, an dem ich das nachbauen koennte?

Leuselator 15. Feb 2005 07:40

Re: SQL-Abfrage ueber 2 Tabellen
 
gib mal bitte Beispieldaten - 2 Zeilen aus Tabelle 1, 4 aus Tabelle 2 - dann kann man eher helfen
Gruß

Delphi-Coder 15. Feb 2005 08:04

Re: SQL-Abfrage ueber 2 Tabellen
 
Ok, kein Problem!

Code:
Tabelle 1:

Klasse  Gruppe
============================
   A    normale Fahrstunde
   A    Autobahnfahrt
   B    normale Fahrstunde
   B    Fahrt bei Dunkelheit


Tabelle 2:

Klasse  fahrstunde  autobahn  dunkelheit  landstrasse
=========================================================
   A      11,00       13,00       11,00        13,00
   B      12,00       15,00       12,00        14,00
So! Nun sollte zu jedem Wert der Spalte "Gruppe" aus Tabelle 1 der passende Preis aus Tabelle 2 geholt werden! (die Klassen muessen natuerlich uebereinstimmen!)
Ich hab dieses beispiel gewaehlt, weil es vielleicht etwas anschaulicher ist!

alcaeus 15. Feb 2005 08:21

Re: SQL-Abfrage ueber 2 Tabellen
 
Hallo Delphi-Coder,

so wie du die Tabellen jetzt hast wird das nichts.
Ein Vorschlag: definier dir eine Tabelle mit einer ID und den Bezeichnungen Gruppen:
Code:
ID   Name
1     Fahrstunde
2     ...
Zweite tabelle wird deine jetzige Tabelle 1, allerdings wird statt dem Gruppenname die ID aus der vorherigen Tabelle abgespeichert.

Tabelle 2 beinhaltet 3 Spalten:
Code:
Klasse Gruppe Preis
A      1       11
...
Beim Select musst du dann nur noch sagen
SQL-Code:
SELECT Preis FROM Tabelle2 WHERE Tabelle1.Klasse=Tabelle2.Klasse and Tabelle1.Gruppe=Tabelle2.Gruppe
Und das wars dann auch schon.

Greetz
alcaeus

Delphi-Coder 15. Feb 2005 08:25

Re: SQL-Abfrage ueber 2 Tabellen
 
@alcaeus Vielen Dank fuer den Vorschlag! Leider habe ich die DB so vorgegeben und kann sie erstmal nicht aendern! Ich werde deinen Vorschlag aber im Hinterkopf behalten!

alcaeus 15. Feb 2005 09:59

Re: SQL-Abfrage ueber 2 Tabellen
 
Hallo Delphi-Coder,

ich würde den Vorschlag nicht nur im Hinterkopf behalten, sondern evtl. vorschlagen/erzwingen. Wenn ihr jetzt noch eine Autobahnfahrt bei Dunkelheit braucht, dann müsst ihr wieder das DB-Layout ändern (neue Spalte), und das Programm anpassen. Bei meinem Vorschlag müssen nur noch 2-3 Records eingetragen werden, und das wars auch schon wieder.

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.
Seite 1 von 2  1 2      

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