Entwickler-Ecke
Datenbanken - Datenbank nach Feldwerten durchsuchen...
erich.wanker - Fr 01.02.08 11:40
Titel: Datenbank nach Feldwerten durchsuchen...
Hallo Leute, hab ne Frage betreffend Firebird SQL / Zeos / Delphi7..
In einer Tabelle hab ich 2 Felder
erstes Feld: Objektname (Char(100))
zweites Feld: Verlinkung (Integer)
nun suche ich alle die Objektnamen, die eine Verlinkung mit Nr.:7 und mit Nr.:9 haben
Vielen Dank für die Hilfe..
Erich Wanker
************************************
als Beispiel:
Suche alle objekte, die 7 und 9 als Link besitzen..
Ergebnis: 2 Records -> Objekt1 und Objekt2
ObjName | Verlinkung
--------------------
Object1 13
Object1 21
Object1 44
Object1 501
Object1 7 !
Object1 9 !
Object2 34
Object2 76
Object2 3
Object2 86
Object2 7 !
Object2 134
Object2 9 !
Object3 1
Object3 2
Object3 4
Object3 5
Object3 6
Object3 7 !
Object3 17
Object3 21
************************************
--
Using:
Delphi7 | Jedi | Reportbuilder | LmdTools | Zeos | InfoPower | RXLib | Firebird 2.0
Links:
http://msdn.microsoft.com/library/default.asp
http://www.swissdelphicenter.ch/torry/
http://www.w3schools.com/sql/
http://www.delphi-fundgrube.de/
http://www.schattenbaum.net/php/
zuma - Fr 01.02.08 12:01
wie wär's mit
'Select * from tabelle where Verlinkung in (7,9)' ??
Am besten nen String mit den nr'n der Verlinkung füllen,
z.b. in einer schleife
Delphi-Quelltext
1:
| lString := lString + Verlinkung + ', '; |
den String dann noch eben vom überflüssigen letzen Komma befreien
Delphi-Quelltext
1:
| lString := copy(lString, 0, length(lString)-1); |
und dann mit
Delphi-Quelltext
1:
| Format('Select * from tabelle where Verlinkung in (%s)', [lString]) |
den Sql aufbereiten und abschicken.
Tabelle und Verlinkung musste natürlich durch deine Bezeichner ersetzen ..
erich.wanker - Fr 01.02.08 12:40
Danke für deine schnelle Info,
ganz verstehen tu ich´s aber nicht ;-)
Bei deinem Ansatz wird ja das Feld "Objektname" ignoriert .. oder?
Hab bis dato inner join Lösungswege versuch - aber nix brauchbares gefunden ..
oder steh ich auf der Leitung .. (was ja immer öfters bei mir vorkommt - ich brauch Urlaub ;-) )
LiGrü
Erich
jasocul - Fr 01.02.08 12:47
sorgt dafür, dass alle Felder (also auch Objektname) der Tabelle angezeigt werden. Dafür ist das "*" zuständig.
zuma - Fr 01.02.08 12:57
wie jasocul geschrieben hat ...
sollte deine Tabelle mal breiter werden (sprich, mehr spalten bekommen), wäre eine feldnamenangabe statt des * sicher sinnvoller/performanter.
so ala
Select Objektname, Verlinkung from ....
erich.wanker - Fr 01.02.08 16:13
ich fürchte, ich hab mich nicht richtig ausgedrückt...
Als Lösungsansatz (der !extrem! dumm ist..) könnte ich:
Erste Schleife
**************
Quelltext
1: 2: 3: 4: 5: 6:
| Select Objektname from Tabelle group by Objektname -> (mehrere Vorkommen des gleichen objektnamens unterdrücken) while not eof do begin x=fieldbyname(Objektname) .*******hier kommt die zweite schleife rein next record; end; |
Zweite Schleife
***************
Quelltext
1: 2: 3: 4: 5: 6: 7:
| x:=''; Select Objektname,Verlinkung from Tabelle where Objektname = x order by Verlinkung descending while not eof do begin if fieldbyname(verlinkung) in (3,9) then x:=x+inttostr(fieldbyname(verlinkung)+','); next record; end; if x ='3,9' then = weiß ich, das dieser Objektname zutreffend ist... diese info könnte ich nun in eine hilfstabelle oder in ein zusätzliches feld der Tabelle schreiben.. |
LiGrü
Erich
Moderiert von
jasocul: Code-Tags hinzugefügt
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!