-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
@jobo
kann ich das im ibexpert machen? also sql befehle direkt eingeben?
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
also habe jetzt die where klauseln eingefügt vor der letzten klammer. funktioniert alles. danke nochmal.
SELECT * FROM bilder WHERE bid IN(
SELECT DISTINCT b.bid FROM bilder b
left join zwbildertags x on x.bildid=b.bid
left join tags t on t.tid=x.tagid
left join zwbilderprogramme z on z.bildid=b.bid
left join programme p on p.pid=z.programmid
where b.name containing upper(:WERT)
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
ok also mit der klammer funktionierts, doch an welcher stelle müsste ich jetzt die where klauseln einfügen?
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
man bin ich doof hast recht seh ich jetzt erst...
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
SELECT * FROM bilder b WHERE b.bid IN(
SELECT DISTINCT b.bid FROM bilder b
left join zwbildertags x on x.bildid=b.bid
left join tags t on t.tid=x.tagid
left join zwbilderprogramme z on z.bildid=b.bid
left join programme p on p.pid=z.programmid
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
so da haben wirs wieder :wall:
sql error -104
as aproximate floating point values in sql dialect1, but as 64 bit
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
ja hat sie und zwar b.bid
select * from bilder b
left join zwbildertags x on x.bildid=b.bid
left join tags t on t.tid=x.tagid
left join zwbilderprogramme z on z.bildid=b.bid
left join programme p on p.pid=z.programmid
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
select * from bilder b left join zwbildertags x on x.bildid=b.bid left join tags t on t.tid=x.tagid left join zwbilderprogramme z on z.bildid=b.bid left join programme p on p.pid=z.programmid
where b.name containing upper(:WERT)
ps: wie macht man sql tags?
-
Forum: Datenbanken
Delphi
by Serienchiller,
17. Jun 2011
so jetzt hab ich doch noch ein problem. und zwar zeigt er mir seit heute früh für jede verbindung die in der zwischentabelle steht, jeden ds einmal an. also habe ich jetzt teilweise 4 oder bis zu 8 mal die selben bilder untereinander stehen. :( gestern nachmittag war das irgendwie nicht so...
hier meine anzeigen prozedur zum jetzigen zeitpunkt:
procedure anzeigen(befehl: String);
var
...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
war halt eher ein kommunikationsproblem...
aber jetzt wo ich das mit den joins richtig verstanden habe kann ich mein programm auch um einige datasets erleichtern :) war ne schwere geburt aber hat sich gelohnt...
danke nochmal an alle die so fleißig mitgeraten haben :D
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
so es hat endlich funktioniert. hab auch ein bisl dynamik schon reingebaut. dank dir für deine geduld. das mit dem left join das hätte mir gestern mal jemand sagen müssen...
procedure anzeigen(befehl: String);
begin
dm.dsetbilder.Close;
dm.dsetbilder.SelectSQL.Clear;
if befehl = 'alleanzeigen' then
begin
dm.dsetbilder.SelectSQL.Add('select * from bilder b order '+
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
super das werd ich jetzt angehen hab ein gutes gefühl...
wenn es statisch alles funktioniert bau ich mir die dynamik danach rein.
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
also mit 3 tabellen funktioniert es schonmal :) hattest recht.
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 '+
...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
das problem kommt dann wenn ich in eine select anweisung 5! tabellen einbauen muss wie eben hier:
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)...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
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.
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
aber da ist ja wieder das join drin... das muss doch auch ohne das join gehen...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
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?
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
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 :)
// wenn nach bild und tag gesucht wird
if frmhaupt.CheckBox1.Checked and not frmhaupt.CheckBox2.Checked and
...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
super es funktioniert!!! dank der klammer! danke danke danke
endlich bin ich einen schritt weiter...
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...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
@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.:
if frmhaupt.CheckBox1.Checked and...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
@kinzler
könntest du das noch mal etwas näher erläutern? also sind die felder teil der feldliste?
würde das mit tstringlist machen...
-
Forum: Datenbanken
Delphi
by Serienchiller,
16. Jun 2011
also habe jetzt mal die union variante ausprobiert, aber die funktioniert ja nur, wenn ich bei beiden abfragen genau die gleiche anzahl an spalten habe. das geht deshalb nicht weil ich in der ersten abfrage ja nur eine tabelle brauche und in der 2. schon 3...
werde jetzt mal den tipp von kinzler versuchen. danke an alle die mir versuchen zu helfen. hab noch bis morgen nachmittag zeit dann muss...
-
Forum: Datenbanken
Delphi
by Serienchiller,
15. Jun 2011
SELECT * FROM Bilder b
WHERE name containing upper(:WERT)
OR b.bid IN ( SELECT * FROM bilder c WHERE c.bid IN ( SELECT c1.bid FROM BILDER c1 JOIN zwbilderprogramme z ON z.bildid = c1.bid JOIN programme t ON t.pid = z.programmid WHERE UPPER(t.namep) CONTAINing UPPER(:WERT)))
jetzt kriege ich den fehler: count of column list and variable list do not match
-
Forum: Datenbanken
Delphi
by Serienchiller,
15. Jun 2011
ich bin leider noch nicht so firm in sql daher frage ich ja. diese struktur muss sein da ich die verbindung über zwtabelle und mastertabelle herstellen muss. nur wie ich die beiden selects syntaktisch richtig miteinander verknüpfe, weiß ich nicht. jede für sich alleine tut genau was sie soll.
-
Forum: Datenbanken
Delphi
by Serienchiller,
15. Jun 2011
ok war mein fehler. habs jez in ein memo gepackt
SELECT * FROM Bilder b
WHERE name containing upper(:WERT)
OR (select * from bilder c where c.bid in (select c1.bid from BILDER c1 join zwbilderprogramme z on z.bildid = c1.bid join programme t on t.pid = z.programmid where Upper(t.namep) containing UPPER(:WERT)))