Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tquery variabel die zweite (https://www.delphipraxis.net/167360-tquery-variabel-die-zweite.html)

mkinzler 26. Mär 2012 13:18

AW: Tquery variabel die zweite
 
http://www.delphipraxis.net/167343-a...-new-post.html

vagtler 26. Mär 2012 13:19

AW: Tquery variabel die zweite
 
Zitat:

Zitat von DeddyH (Beitrag 1158630)
Zitat:

Zitat von vagtler (Beitrag 1158623)
Bei Google suchenSQL UNION :gruebel:

Hätte ich auch vorgeschlagen. Allerdings sollte man vielleicht dazusagen, dass Anzahl und Typ der Felder dabei exakt übereinstimmen müssen. Hat eine der beiden Tabellen weniger Felder, muss man dann eben Konstanten einfügen.

Da der Threadersteller mit ausreichend Informationen hinter dem Berg hält, wie z.B.
Zitat:

Zitat von fl63 (Beitrag 1158626)
[...] Ich möchte zwei unabhängige Tabellen nacheinander Abfragen und das Ergebnis in einem DBGrid darstellen.

könnte man hier vorsorglich alles bekannte Wissen über UNION noch erläutern.

Aber dafür gibt es Google. ;)

Sinnvoll wäre für den Threadersteller meiner Meinung erst einmal die Absolvierung eines fundierten SQL-Basiskurs.

fl63 26. Mär 2012 13:20

AW: Tquery variabel mit Firebird
 
Delphi-Quellcode:
... = '' then Combobox1.Text := ' Tabelle1 union Tabelle2';
bringt auch nur Fehler 104.

@DeddyH

Tabellen haben identische Struktur.

DeddyH 26. Mär 2012 13:24

AW: Tquery variabel die zweite
 
Dann bau doch erst einmal außerhalb von Delphi einen syntaktisch korrekten SQL-Befehl zusammen, der das gewünschte Ergebnis liefert. Erst wenn der funktioniert, macht es IMHO Sinn, ihn dynamisch zusammenzustellen.

fl63 26. Mär 2012 13:36

AW: Tquery variabel mit Firebird
 
Zitat:

Zitat von DeddyH (Beitrag 1158637)
Dann bau doch erst einmal außerhalb von Delphi einen syntaktisch korrekten SQL-Befehl zusammen, der das gewünschte Ergebnis liefert. Erst wenn der funktioniert, macht es IMHO Sinn, ihn dynamisch zusammenzustellen.

Werd ich machen, Danke.

p80286 26. Mär 2012 14:16

AW: Tquery variabel die zweite
 
Wenn ich mir den den ersten Beitrag ansehe scheint doch ungefähr dies hier gewünscht:

Delphi-Quellcode:
const
  SQLTEXT1='Select irgendwas from tabelle1 where diese Bedingung';
  SQLTEXT2='Select irgendwas from tabelle2 where diese Bedingung';

begin
  myquery.close;
  if bedingung then
    myquery.sql.text:=SQLTEXT1 
  else
    myquery.sql.text:=SQLTEXT2;
  ...
Wenn die Dynamik über den Inhalt einer Combobox kommt, dann habe ich ein sehr ungutes Gefühl dabei.
(SQL injection)

Gruß
K-H

fl63 26. Mär 2012 16:36

AW: Tquery variabel die zweite
 
Zitat:

Zitat von p80286 (Beitrag 1158661)
Wenn ich mir den den ersten Beitrag ansehe scheint doch ungefähr dies hier gewünscht:

[DELPHI]const
SQLTEXT1='Select irgendwas from tabelle1 where diese Bedingung';
SQLTEXT2='Select irgendwas from tabelle2 where diese Bedingung';

Nein, ungefähr so etwas:
Delphi-Quellcode:
SQl.Text := 'select * from tabelle1 und tabelle2 where feld1....
// wobei ..tabelle1 und tabe... ein einschließendes und darstellen soll

DeddyH 26. Mär 2012 16:40

AW: Tquery variabel die zweite
 
Aber ohne JOIN, oder? Da bietet sich wie gesagt die UNION an.
SQL-Code:
SELECT Feld1, Feld2, Feld3, ... FROM Tabelle1
UNION ALL
SELECT Feld1, Feld2, Feld3, ... FROM Tabelle2
Das soll jetzt nur eine grobe Orientierung sein.

shmia 26. Mär 2012 17:30

AW: Tquery variabel die zweite
 
Zitat:

Zitat von fl63 (Beitrag 1158597)
Ich habe 2 Tabellen in einer Firebird Datenbank.

Sind die beiden Tabellen von gleicher Feldstruktur?
Falls ja, liegt fast immer ein fehlerhaftes Datenbankdesign vor.
Dann gibt es zwei Möglichkeiten:
a.) Datenbankdesign verbessern und plötzlich werden Abfragen, die vorher ein Problem dargestellt haben ganz einfach
b.) weitermachen wie bisher

Hier noch ein Beispiel für mangelhaftes Datenbankdesign
Code:
Tabelle Frauen
==================================================================
IdGirl| Vorname | Nachname | Geburtstag | PLZ | Ort | Geburtsname

Tabelle Maenner
==================================================================
IdBoy| Vorname | Nachname | Geburtstag | PLZ | Ort
Das Beispiel ist natürlich eine klare Fehlkonstruktion.
Selbst wenn Männer üblicherweise keinen abweichenden Geburtsnamen haben (Ausnahmen bestätigen die Regel) sollte doch klar sein, dass alle Daten in eine gemeinsame Tabelle gehören
Code:
Tabelle Personen
=================================================================================
IdPerson | Vorname | Nachname | Geburtstag | PLZ | Ort | Geschlecht |Geburtsname

fl63 26. Mär 2012 18:08

AW: Tquery variabel die zweite
 
Und hier die funktionierende Lösung:

Delphi-Quellcode:
SQL.Add('Select * from tabelle1 union all select * from tabelle2 where feld001 Like :text1 ');
SQL.Add('And Upper (feld002) Like Upper (:text2) ');
Diese zwei Zeilen in die Vergleichszeilen vom Quelltext Beitrag 1 kopiert und es funktioniert.

Danke an alle, FL63


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.
Seite 2 von 3     12 3      

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