![]() |
Datenbank: paradox • Version: 7 • Zugriff über: Tquery,Ttable
Intersect im Tquery sql
hi warum funktioniert intersect nicht im delphi sql?
gibt es einen vergleichbaren befehl um abfragen zu verknüpfen??? Beispiel:
SQL-Code:
Select * from this
intersect select * from that |
Re: Intersect im Tquery sql
hmmmm 'union' scheint zu funktionieren . ..
|
Re: Intersect im Tquery sql
Du scheinst UNION zu meinen:
SQL-Code:
Select * from this
UNION select * from that |
Re: Intersect im Tquery sql
nein intersect bedeutet schnittmenge - das gibts auch.
|
Re: Intersect im Tquery sql
WARUM muss eigentlich immer nur Mkinzler fürs antworten herhalten?
das ist nicht fair :mrgreen: (aber großes dankeschööön an dich) |
Re: Intersect im Tquery sql
Dann bist du mit einem Join oder subselect gut bedient
|
Re: Intersect im Tquery sql
a-ha join -
ich muss verschidene select abfragen verknüpfen. Jede dieser select anweisungen hebt bestimmte datensätze aus. zum schluss soll aber nur das 'rauskommen', was in allen abfragen gleichzeitig vorhanden ist (schnittmenge aller abfragen) ne idee? |
Re: Intersect im Tquery sql
intersect gehört nicht zum Sprachumfang von local SQL
|
Re: Intersect im Tquery sql
jo.*verdammt* was mach ich denn jetzt am besten ?
|
Re: Intersect im Tquery sql
Wie sieht dies und das aus?
|
Re: Intersect im Tquery sql
ich glaub ich habs. ich erstelle mehrere tquerys und vergleiche den primärschlüssel.
so. das ist wohl die hackebeilmethode - das mach ich wenn keiner es besser weiss :mrgreen: |
Re: Intersect im Tquery sql
Wir müßten die Struktiur der Tabellen kennen um die besser zu helfen. Aber ich glaube eine Subquery sollte hier das Richtige sein.
|
Re: Intersect im Tquery sql
wens interessiert;
mein code:
Delphi-Quellcode:
Query1.Sql.Clear;
gl_kat := combobox2.ItemIndex; // die kombobox bei itemindex 0 liefert nichts zurück if gl_kat = 1 then query1.SQL.Add('select * from exceltabDatabase where gl <= 5'); if gl_kat = 2 then query1.SQL.Add('select * from exceltabDatabase where gl between 6 and 10'); if gl_kat = 3 then query1.SQL.Add('select * from exceltabDatabase where gl between 11 and 15'); if gl_kat = 4 then query1.SQL.Add('select * from exceltabDatabase where gl > 15'); if not((checkbox2.Checked = false) and (checkbox3.checked = false)) then begin if gl_kat > 0 then query1.SQL.Add('Intersect'); // intersect gibts ja nich leider. if checkbox2.Checked = true then begin query1.SQL.Add('Select * from exceltabdatabase where erfolg = 0'); end; if checkbox3.Checked = true then begin query1.SQL.Add('Select * from exceltabdatabase where erfolg = 1'); end; end; |
Re: Intersect im Tquery sql
theoretisch könnte man ja auch eine ganz grosse abfrage machen . .. aber wie all diese sql's verbinden, wenn ich nicht immer weiss ob die vorherige abfrage true war -es muss ja immer select am anfang stehen .. .
|
Re: Intersect im Tquery sql
Wie sollte die Schnittmenge aussehen?
|
Re: Intersect im Tquery sql
naja angenommen die kombobox ist auf itemindex = 1, checkbox2 = true.
dann brauche ich alle einträge die gl(integer) unter 6 haben und dabei GLEICHZEITIG erfolg = 0 haben, keine anderen einträge von exceltabdatabase. versteht ihr mein Problem? |
Re: Intersect im Tquery sql
Das kannst du doch in einer einfachen Abfrage durch Verknüpfung der Bedingungen machen
|
Re: Intersect im Tquery sql
jo ich weiss, aber wie all diese abfragen verbinden ohne irgendwelche sql-grundstrukturen zu brechen?
stell dir vor, ich habe noch viel mehr als die paar abfragen in meinem Beispiel. die müssen alle irgendwie richtig verknüpft werden . . . |
Re: Intersect im Tquery sql
Beispiel: wie soll ich es schaffen, das er den select befehl richtig einträgt - ich könnte den select befehl automatisch am anfang setzen, allerdings was ist, wenn KEINE aller aussagen zutrifft?, dann brauche ich lediglich eine leere sql stringliste
|
Re: Intersect im Tquery sql
ist ein haariges problem. daher werde ich es wohl so machen wie auf seite 1 beschrieben - mit mehreren tquerys. Wie kann ich Datensätze manuell in ein einziges t_query objekt eintragen ?
|
Re: Intersect im Tquery sql
Du könntest mit zwischengespeicherten Abfragen arbeiten und so eine Art Derived Table nachbilden.
Aber was spricht den gegen die Verkettung der Bedingungen? |
Re: Intersect im Tquery sql
ich versuchs mal mit verkettung.
meine lösung werd ich dann posten - (das versuch ich übrigens immer zu machen, denn ich mags nicht wenn leute einfach sagen 'hat sich erledigt' und nicht die lösung posten :mrgreen: ) |
Re: Intersect im Tquery sql
Delphi-Quellcode:
funktioniert so. allerdings mal schaun wie ich ALLE abfragen unter einen hut bekomm'
Query1.Sql.Clear;
query1.SQL.Add('select * from exceltabdatabase '); gl_kat := combobox2.ItemIndex; if gl_kat = 1 then query1.SQL.Add('where gl <= 5'); if gl_kat = 2 then query1.SQL.Add('where gl between 6 and 10'); if gl_kat = 3 then query1.SQL.Add('where gl between 11 and 15'); if gl_kat = 4 then query1.SQL.Add('where gl > 15'); if not((checkbox2.Checked = false) and (checkbox3.checked = false)) then begin if gl_kat > 0 then query1.SQL.Add('and') else query1.SQL.Add('where'); if checkbox2.Checked = true then begin query1.SQL.Add(' erfolg = 0'); end; if checkbox3.Checked = true then begin query1.SQL.Add(' erfolg = 1'); end; end; |
Re: Intersect im Tquery sql
Delphi-Quellcode:
so wirds gemacht - danke an alle die mir tipps gegeben haben!
Query1.Sql.Clear;
query1.SQL.Add('select * from exceltabdatabase '); start := true; gl_kat := combobox2.ItemIndex; if gl_kat <> -1 then begin start := false; query1.sql.add(' where '); if gl_kat = 1 then query1.SQL.Add(' gl <= 5'); if gl_kat = 2 then query1.SQL.Add(' gl between 6 and 10'); if gl_kat = 3 then query1.SQL.Add(' gl between 11 and 15'); if gl_kat = 4 then query1.SQL.Add(' gl > 15'); end; if not((checkbox2.Checked = false) and (checkbox3.checked = false)) then begin if start = false then query1.SQL.Add('and') else begin query1.SQL.Add('where'); start := false; end; if checkbox2.Checked = true then begin query1.SQL.Add(' erfolg = 0'); end; if checkbox3.Checked = true then begin query1.SQL.Add(' erfolg = 1'); end; end; if checkbox4.Checked = true then begin if start = false then query1.SQL.add(' and ') else begin query1.SQL.add(' where '); start := false; end; query1.SQL.Add(' abrechnung_erfasst = 1'); end; if checkbox1.Checked = true then begin if start = false then query1.SQL.add(' and ') else begin query1.SQL.add(' where '); start := false; end; query1.SQL.Add(' nur_beratung = 1'); end; memo1.Lines := query1.SQL; memo1.Lines.Add(inttostr(combobox2.ItemIndex)); refresh(false); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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-2025 by Thomas Breitkreuz