Entwickler-Ecke
Datenbanken - Sql-Befehl falsch
D. Annies - Mo 06.04.09 12:30
Titel: Sql-Befehl falsch
Hi, Delpher,
warum ist der folgende SQL-Befehl falsch? Es gibt kein "Meckern", aber er "Hängt sich auf".
Delphi-Quelltext
1: 2: 3: 4: 5:
| SQL.Text := format('select B.Titel, count(*) as Anzahl, B.Klasse, L.Kuerzel ' + 'from "%s" B, "%s" L ', [TbArtikel.tablename, TbLk.tablename])+ 'where (B.Klasse between ''1%'' and ''9%'') or (B.Klasse = ''DaZ'') ' + ' and (B.Klasse = L.Klasse) ' + 'group by B.Klasse, B.Titel, L.Kuerzel'; |
Wo sind die Spezis - ich habe keine Ahnung,
Detlef
mkinzler - Mo 06.04.09 12:51
Welches DBMS?
Ich würde es mal mit einem expliziten Join versuchen:
Delphi-Quelltext
1: 2: 3: 4:
| SQL.Text := format('select B.Titel, count(b.ID) as Anzahl, B.Klasse, L.Kuerzel ' + 'from "%s" B join "%s" L on L.Klasse = B.Klasse ', [TbArtikel.tablename, TbLk.tablename])+ 'where (B.Klasse between ''1%'' and ''9%'') or (B.Klasse = ''DaZ'') ' 'group by B.Klasse, B.Titel, L.Kuerzel;'; |
Im Allgemeinen würde ich mal über den Einsatz von (SQL-)Parametern nachdenken
D. Annies - Mo 06.04.09 14:20
Danke, Markus
BenBE - Mo 06.04.09 14:24
In Formatstrings sollte man % escapen (also doppelt schreiben), wenn man ein % im resultierenden String haben möchte.
D. Annies - Mo 06.04.09 19:54
Danke auch an dich, Benny,
Detlef
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!