![]() |
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 |
Re: SQL-Abfrage ueber 2 Tabellen
Zitat:
Greetz alcaeus |
Re: SQL-Abfrage ueber 2 Tabellen
Hmm... OK! Habe ich mir schon fast gedacht! Aber trotzdem Danke!
|
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.
|
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?
|
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ß |
Re: SQL-Abfrage ueber 2 Tabellen
Ok, kein Problem!
Code:
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!)
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 Ich hab dieses beispiel gewaehlt, weil es vielleicht etwas anschaulicher ist! |
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:
Zweite tabelle wird deine jetzige Tabelle 1, allerdings wird statt dem Gruppenname die ID aus der vorherigen Tabelle abgespeichert.
ID Name
1 Fahrstunde 2 ... Tabelle 2 beinhaltet 3 Spalten:
Code:
Beim Select musst du dann nur noch sagen
Klasse Gruppe Preis
A 1 11 ...
SQL-Code:
Und das wars dann auch schon.
SELECT Preis FROM Tabelle2 WHERE Tabelle1.Klasse=Tabelle2.Klasse and Tabelle1.Gruppe=Tabelle2.Gruppe
Greetz alcaeus |
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!
|
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 21:52 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