Delphi-PRAXiS
Seite 2 von 2     12   

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 10:08

Re: SQL-Abfrage ueber 2 Tabellen
 
Eine DB-Aenderung von diesem Ausmass halte ich persoenlich zu diesem Zeitpunkt noch fuer vertretbar. Ich werde mal sehen, was sich da machen laesst!
Allerdings wuerde ich eine reine SQL-Server-Loesung (ohne DB-Aenderung) vorziehen. (z. bsp. ueber eine StoredProcedure)

Gruesse
Delphi-Coder

jensw_2000 15. Feb 2005 10:41

Re: SQL-Abfrage ueber 2 Tabellen
 
Beim MSSQL kannst du das so machen ...

SQL-Code:
  // Leeren String deklarieren
  declare @SQL varchar(1000)
  // Die Variable "@Field" (für gewünschten Feldnamen) deklarieren
  declare @Field varchar(50)

  // Die Variable "@Field" mit Feldnamen füllen
  SELECT @Field='Vorname'


  set @SQL = 'Select '+@Field+' from Adressen'

  Exec(@SQL)

  MSSQL führt dann SELECT Vorname FROM Adressen aus :zwinker:
Damit kannst du dir eine SP basteln.
Eine Alternative zur SP wäre eine Funktion (mit RETURNS TABLE), die du dann via SUB-SELECTS einbindest




Schöne Grüße,
Jens

:hi:

Delphi-Coder 15. Feb 2005 10:51

Re: SQL-Abfrage ueber 2 Tabellen
 
@jensw_2000 Vielen Dank! Ich kann es leider erst heute abend probieren. Aber nur fuer den Fall, dass ich damit ueberhaupt nicht klarkomme: Wie funktioniert denn das mit der Funktion und den Sub-Selects?

Viele Gruesse
Delphi-Coder

jensw_2000 15. Feb 2005 11:06

Re: SQL-Abfrage ueber 2 Tabellen
 
Kann es auch grade nicht testen :mrgreen:
theoretisch aber so ...


SQL-Code:
-- eine Funktion erstellen, die dir eine virtuelle Tabelle zurückliefert

CREATE FUNCTION DynamicSQL (@Fieldname VARCHAR(20),@Tablename VARCHAR(40))
  RETURNS TABLE
AS
  -- SQL STRING
  declare @SQL varchar(1000)

  -- Funktionsparameret "verbauen"
  set @SQL = 'Select '+@Fieldname+' from '+@Tablename

  RETURN Exec(@SQL)

Aufruf ...

SELECT * FROM DynamicSQL(@Fieldname=(Select IrgendwasPlausibles FROM TABELLE A), @Tablename='Adressen')
Schöne Grüße,
Jens

:hi:

Delphi-Coder 15. Feb 2005 11:13

Re: SQL-Abfrage ueber 2 Tabellen
 
Erstmal Danke! So auf die Schnelle steige ich da nicht hinter! Aber ich werde mich heute abend ausgiebig damit beschaetigen!

jensw_2000 15. Feb 2005 11:14

Re: SQL-Abfrage ueber 2 Tabellen
 
Falls das
SQL-Code:
RETURN EXEC(@SQL)
nicht functionieren sollte, must du eine
temporäre Tabelle erstellen, füllen, ausgeben und wieder Droppen ....



SQL-Code:
  EXEC (@SQL)
    INTO #TempTable

  RETURN #TEMpTable

Leuselator 15. Feb 2005 12:47

Re: SQL-Abfrage ueber 2 Tabellen
 
Nun - was von dem DB-Design zu halten ist, weißt Du ja nun - hier eine Lösung ohne Stored Procedure:
SQL-Code:
    SELECT Kat.Klasse
         , Kat.Gruppe
         , CASE Kat.Gruppe
             WHEN 'normale Fahrstunde'  THEN P.fahrstunde
             WHEN 'Autobahnfahrt'       THEN P.autobahn
             WHEN 'Fahrt bei Dunkelheit' THEN P.dunkelheit
             WHEN 'Landstrassenfahrt'   THEN P.landstrasse
           END AS Preis
      FROM Tabelle1 Kat
INNER JOIN Tabelle2 P
        ON P.Klasse = Kat.Klasse
Gruß

jensw_2000 15. Feb 2005 12:58

Re: SQL-Abfrage ueber 2 Tabellen
 
@Leuselator
Wie immmer eine einfache und brilliante Lösung ... :mrgreen:
Warum komme ich nie auf sowas ? :wall:


Schöne Grüße,
Jens

:hi:

Delphi-Coder 15. Feb 2005 14:28

Re: SQL-Abfrage ueber 2 Tabellen
 
Vielen Dank fuer die Loesung! Es funktioniert!

Ich werde aber die DB-Aenderung versuchen durchzusetzen!

Gruss aus Dubai,
Delphi-Coder


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Seite 2 von 2     12   

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