![]() |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
@deddyh
du hast es richtig verstanden. man sucht aber immer nach bildern, nie direkt nach programmen oder tags, sondern nur nach bildern, die über zwischentabellen mit den programmen/tags, die den suchbegriff enthalten, verbunden sind. habe jetzt etwas anderes probiert. ist zwar erstmal statisch aber habe erstmalig keinen sql fehler(!!!!) erhalten.:
Delphi-Quellcode:
das einzige problem dabei ist, dass ich nun die datensätze doppelt und dreifach sehe, wollte das mit distinct b.name lösen, aber das programm braucht ja auch die ganzen anderen felder aus der tabelle bilder.
if frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and
not frmhaupt.CheckBox3.Checked then dm.dsetbilder.SelectSQL.Add('select * from zwbilderprogramme z, '+ 'bilder b, programme p '+ 'where b.bid=z.bildid and p.pid=z.programmid ' + 'and p.namep containing UPPER(:WERT) or b.name '+ 'containing upper(:WERT)'); |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Zitat:
Code:
Gruß
'where b.bid=z.bildid and p.pid=z.programmid ' +
'and (p.namep containing UPPER(:WERT) or b.name '+ 'containing upper(:WERT)')); K-H |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
super es funktioniert!!! dank der klammer! danke danke danke
endlich bin ich einen schritt weiter...
Delphi-Quellcode:
nun muss ich nur noch die anderen abfragen miteinander verbinden, mal schauen ob ich das hinkriegeif frmhaupt.CheckBox1.Checked and frmhaupt.CheckBox2.Checked and not frmhaupt.CheckBox3.Checked then dm.dsetbilder.SelectSQL.Add('select * from zwbilderprogramme z, '+ 'bilder b, programme p '+ 'where b.bid=z.bildid and p.pid=z.programmid ' + 'and (p.namep containing UPPER(:WERT) or b.name '+ 'containing upper(:WERT)) order by upper(b.name)'); |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Korrekt, AND hat eine stärkere Bindung als OR.
|
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
so habe mein neu erworbenes wissen jetzt versucht auf die anderen kombinationsmöglichkeiten zu übertragen, was schon teilweise funktionierte. leider gab er mir diesmal nur eine handvoll datensätze aus und ignorierte alle anderen... aber immerhin gabs keinen sql fehler :)
Delphi-Quellcode:
habe die lösung: ich habe nur 2 ds, die überhaupt mit einem tag verknüpft sind also zeigt es nur 2 an. ich würde aber gerne auch die anzeigen lassen, wo garkein tag verlinkt ist...// wenn nach bild und tag gesucht wird if frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and frmhaupt.CheckBox3.Checked then dm.dsetbilder.SelectSQL.Add('select * from zwbildertags x, '+ 'bilder b, tags t '+ 'where b.bid=x.bildid and t.tid=x.tagid ' + 'and (t.namet containing UPPER(:WERT) or b.name '+ 'containing upper(:WERT)) order by upper(b.name)'); // wenn nach programm und tag gesucht wird 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)) order by upper(b.name)'); |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Im Moment machst Du einen INNER JOIN über 3 Tabellen, das bedeutet, dass Du nur DS gelistet bekommst, die über alle Tabellen verknüpft sind. Was Du also brauchst, ist ein OUTER JOIN.
SQL-Code:
Gibt es in Tabelle2 bzw. Tabelle3 keine entsprechenden DS, haben deren Felder dann durchgängig NULL-Werte.
SELECT
Feldliste FROM Tabelle1 A LEFT JOIN --oder auch LEFT OUTER JOIN, ist es aber automatisch Tabelle2 B ON B.FK = A.PK LEFT JOIN --oder auch LEFT OUTER JOIN, ist es aber automatisch Tabelle3 C ON C.FK = B.PK |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
super danke hab das halt mit der schreibweise mit diesem join noch nicht so ganz verinnerlicht. ich probiers mal...
allerdings hatte ich mit den joins immer sql fehler... mit dieser variante allerdings nicht. ist es evtl. möglich, einen mit dieser variante zu formulieren? z.b. mit or statt and? |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
In der
![]() |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
Sry, ich hatte das Edit nicht gesehen. Ja, das geht, das wäre dann Deine Where-Klausel.
SQL-Code:
SELECT
Feldliste FROM Tabelle1 A LEFT JOIN Tabelle2 B ON B.FK = A.PK --Verknüpfungsbedingung(en) WHERE A.Feld1 = 'Dings' OR B.Feld1 = 'Bums' --Filterbedingung(en) |
AW: bin am verzweifeln... select abfragen miteinander kombinieren???
aber da ist ja wieder das join drin... das muss doch auch ohne das join gehen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 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