Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verschachtelte SQL Abfrage (https://www.delphipraxis.net/167569-verschachtelte-sql-abfrage.html)

MCOP2001DE 6. Apr 2012 07:33

Datenbank: SQL Server • Version: 2008 • Zugriff über: ADO

Verschachtelte SQL Abfrage
 
Guten Morgen,

Ich glaube ich Stehe auf dem Schlauch.
Problem:
3 Tabellen
1 Besatzung
Felder Fahrzeug_ID
Personal_ID
Activ
2 Fahrzeug
3 Personal

ich möchte jetzt aus der 1 Tabelle nur die Daten mit einer Ausgewählten Fahrzeug_ID und Active = 1 heraus Filtern.
Es sollen dann nur die Personaldaten von den Personen Angezeigt werden die Der Fahrzeug_ID zugewiesen sind und die den Status Active 1 haben.

folgendes habe ich schon versucht:

Delphi-Quellcode:
var
  Fahrzeug : String;
begin
  try
   Fahrzeug := Dateneingabe.TAB_Fahrzeuge.FieldByName('Fahrzeug_ID').Value;
   with Dateneingabe.QRY_Besatzung do
    begin
      close;
      SQL.Clear;
      SQL.Text := 'SELECT * from Besatzung inner Join Personal on Peronal_ID=Personal_ID where Active=1 and Fahrzeug_ID=:Fahrzeug_ID';
      Parameters.ParamByName('FahrzeugID').Value := Fahrzeug;
      open;
    end;
und

Delphi-Quellcode:
 Fahrzeug : String;
begin
  try
   Fahrzeug := Dateneingabe.TAB_Fahrzeuge.FieldByName('Fahrzeug_ID').Value;
   with Dateneingabe.QRY_Besatzung do
    begin
      close;
      SQL.Clear;
      SQL.Text := 'SELECT Personal.*, Besatzung.*, Besatzung.Fahrzeug_ID AS Expr1, Besatzung.Active AS Expr2 FROM Besatzung CROSS JOIN Personal WHERE (Besatzung.Fahrzeug_ID = Fahrzeug_ID) AND (Besatzung.Active = 1)';
      Parameters.ParamByName('FahrzeugID').Value := Fahrzeug;
      open;
    end;
Bei beiden Abfragen bleibt die Tabelle leer

Kann mir jemand Helfen?

Gruß

Mcop2001de

Bummi 6. Apr 2012 07:59

AW: Verschachtelte SQL Abfrage
 
Peronal_ID=Personal_ID muss eigentlich immer True ergeben
und hier
Parameters.ParamByName('FahrzeugID').Value := Fahrzeug;
passt der Name nicht zur Deklaration
Fahrzeug_ID=:Fahrzeug_ID

so sollte es gehen, wenn die Spalten so heißen wie ich es verstanden habe


Code:
Select p.*
from Besatzung b
Join Fahrzeug f on f.Fahrzeug_ID = b. Fahrzeug_ID
Join Personal p on p.Personal_ID = b.Personal_ID
Where b.Active=1 and b.Fahrzeug_ID=:FahrzeugID
Delphi-Quellcode:
Parameters.ParamByName('FahrzeugID').Value := Fahrzeug;

MCOP2001DE 6. Apr 2012 10:27

AW: Verschachtelte SQL Abfrage
 
Danke für die schnelle Antwort.

jetzt Funktioniert es auch Danke:-D

Mcop2001de

himitsu 6. Apr 2012 10:55

AW: Verschachtelte SQL Abfrage
 
Beim Zweiten fehlt irgendwie der : bei Fahrzeug_ID.

DeddyH 6. Apr 2012 12:09

AW: Verschachtelte SQL Abfrage
 
Nö, da ist nur ein Leerzeichen zuviel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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