![]() |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Für einen OUTER JOIN kenne ich keine (offizielle) Variante ohne das Wort JOIN. Was ist denn daran so schlimm?
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
na schlimm ist daran, dass ich mit jeder variante die ich mit join versucht habe, seit 12 stunden programmieren immer nur sql fehler produziert habe, auch mit den varianten aus diesem thread. erst seit ich den umweg ohne join gehe, funktionieren meine abfragen.
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Den JOIN brauchst Du doch nur ein einziges Mal, was sich danach ändert, ist ja nur die Filterbedingung. Wenn Du als Basis das hier nimmst (Tabellen-/Feldnamen ersetzen):
SQL-Code:
entspricht das im Ergebnis (wenn ich keinen Denkfehler mache):
SELECT
A.* FROM Tabelle1 A LEFT JOIN Zwischentabelle B ON B.Fremdschlüsselfeld = A.Primärschlüsselfeld LEFT JOIN Bildertabelle C ON C.Primärschlüsselfeld = B.Fremdschlüsselfeld
SQL-Code:
Interessant wird es nun durch Einfügen/Ändern der WHERE-Klausel.
SELECT
* FROM Tabelle1 |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
das problem kommt dann wenn ich in eine select anweisung 5! tabellen einbauen muss wie eben hier:
Delphi-Quellcode:
if not frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
frmhaupt.CheckBox3.Checked then dm.dsetbilder.SelectSQL.Add('select * from zwbilderprogramme z, '+ 'bilder b, programme p,zwbildertags x, tags t '+ 'where ((b.bid=z.bildid and p.pid=z.programmid) ' + 'and (b.bid=x.bildid and t.tid=x.tagid)) '+ 'and (p.namep containing UPPER(:WERT) or t.namet '+ 'containing upper(:WERT) or x.id is null) order by upper(b.name)'); |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Ob 2, 10 oder 200 Tabellen ist doch syntaktisch egal, das Muster ist immer dasselbe. Du musst da Tippfehler drinhaben oder sowas. Füg doch einfach mal eine nach der anderen Tabelle im JOIN dazu, bis es knallt. Das Statement kannst Du hier posten, dann können wir mal drüberschauen, was da nicht stimmen könnte.
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
also mit 3 tabellen funktioniert es schonmal :) hattest recht.
Delphi-Quellcode:
nur wie füg ich da jetzt noch die anderen beiden dazu?
if frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and
frmhaupt.CheckBox3.Checked then dm.dsetbilder.SelectSQL.Add('select b.* from bilder b left join '+ 'zwbildertags x on x.bildid=b.bid left join tags t '+ 'on t.tid=x.tagid where (t.namet containing UPPER(:WERT) or b.name '+ 'containing upper(:WERT)) order by upper(b.name)'); |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Na, genauso ("LEFT JOIN Tabelle ON ..." vor der WHERE-Bedingung).
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Wie wäre es damit, erstmal die maximale Datenmenge zu ermitteln (ggf. als View speichern):
Code:
Darauf dann dynamisch die Abfrage basteln, weil für alle Kombinationen der Checkboxen eine eigene Abfrage zu basteln ist doch zu aufwendig.
Select b.*,p.*,t.* From bilder b
Left Join zwbilderprogramme zbp on b.bID = zbp.bildID Left Join programme p on zbp.programmID = p.pID Left Join zwbildertags zbt on b.bID = zbt.bildID Left Join tags t on zbt.tagID = t.tID Select bID From (Select ... [s.o.]]) Where //ab hier dynamisch erzeugen Or Or |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Zitat:
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
super das werd ich jetzt angehen hab ein gutes gefühl...
wenn es statisch alles funktioniert bau ich mir die dynamik danach rein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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