Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit sql abfrage (https://www.delphipraxis.net/93837-problem-mit-sql-abfrage.html)

Fridolin 12. Jun 2007 08:17

Datenbank: mysql • Version: 5.2.3 • Zugriff über: mydac

Problem mit sql abfrage
 
Guten Morgen,

ich habe ein Problem bei der Umsetzung dieser Abfrage:

Delphi-Quellcode:
 myquery2.SQL.Text:=(
SQL-Code:
'select andocname,anpdfname from andocblob,anpdfblob,anzt where anzt.bid = '''+bezid+''' and andocblob.andb_id = anzt.andb_id xor anpdfblob.anpb_id = anzt.anpb_id)'
Delphi-Quellcode:
;
Als Ergebnis, sollen alle doc-namen aus andocblob und alle pdf-namen aus anpdfblob in einem dbgrid angezeigt werden.

andocblob:
andb_id -integer;
andocname -varchar;
andocblo -mediumblob;

anpdfblob:
anpb_id -integer;
anpdfname -varchar;
anpdfblo -mediumblob;

anzt:
bid -integer;
andb_id -integer;
anpb_id -integer;

MfG
Fridolin

DeddyH 12. Jun 2007 08:40

Re: Problem mit sql abfrage
 
SQL-Code:
'select andocname,anpdfname from andocblob,anpdfblob,anzt where anzt.bid = '''+bezid+''' and (andocblob.andb_id = anzt.andb_id or anpdfblob.anpb_id = anzt.anpb_id))'

Fridolin 12. Jun 2007 08:42

Re: Problem mit sql abfrage
 
Funktioniert so leider nicht, hatte ich auch schon probiert... :cry:

mkinzler 12. Jun 2007 08:49

Re: Problem mit sql abfrage
 
SQL-Code:
select
    d.andocname,
    p.anpdfname
from
    a.anzt join andocblob d on d.andb_id = a.andb_id
           join anpdfblob p on d.anpb_id = a.anpb_id
where
    anzt.bid = :bezid;

Fridolin 12. Jun 2007 09:02

Re: Problem mit sql abfrage
 
Zitat:

Zitat von mkinzler
SQL-Code:
select
    d.andocname,
    p.anpdfname
from
    a.anzt join andocblob d on d.andb_id = a.andb_id
           join anpdfblob p on d.anpb_id = a.anpb_id
where
    anzt.bid = :bezid;

Geht leider auch nicht. Fehlermeldung: ...'a.anzt' doesn't exist...

mkinzler 12. Jun 2007 09:07

Re: Problem mit sql abfrage
 
Muß anzt a heißen

Fridolin 12. Jun 2007 09:22

Re: Problem mit sql abfrage
 
Funktioniert wieder nicht... er gibt zwar keine Fehlermeldung, zeigt aber auch keine Daten an. Ich werd einfach zwei dbgrids und zwei Abfragen nehmen, damit klappts. Trotzdem danke...

mkinzler 12. Jun 2007 09:25

Re: Problem mit sql abfrage
 
Hast du den Parameter bezid auch gesetzt?

Fridolin 12. Jun 2007 09:32

Re: Problem mit sql abfrage
 
Ja, hab ich.... :(

mkinzler 12. Jun 2007 09:36

Re: Problem mit sql abfrage
 
Zeig mal deinen Code.

Fridolin 12. Jun 2007 10:05

Re: Problem mit sql abfrage
 
Delphi-Quellcode:
  myquery1.SQL.text:=('select ant_id from anhaengertypen where anhaengertyp = '''+typ+'''');
  myquery1.Execute;
  typid:=myquery1.Fields[0].AsString;

  myquery1.SQL.text:=('select ang_id from angg where angesamtgewicht = '''+gg+'''');
  myquery1.Execute;
  ggid:=myquery1.Fields[0].AsString;

  myquery1.SQL.text:=('select anv_id from anvolumina where anvolumen = '''+vol+'''');
  myquery1.Execute;
  volid:=myquery1.Fields[0].AsString;

  myquery1.SQL.Text:=('select anr_id from anradstaende where anradstand = '''+rad+'''');
  myquery1.Execute;
  radid:=myquery1.Fields[0].AsString;

  myquery1.SQL.Text:=('select anrs_id from anrschraenke where anrschrank = '''+rschr+'''');
  myquery1.Execute;
  rschrid:=myquery1.Fields[0].AsString;

  myquery1.SQL.Text:=('select anus_id from anuschraenke where anuschrank = '''+uschr+'''');
  myquery1.Execute;
  uschrid:=myquery1.Fields[0].AsString;

  myquery1.SQL.Text:=('select bid from anbezeichnungen where ant_id = '''+typid+''' and ang_id = '''+ggid+''' and anv_id = '''+volid+''' and anr_id = '''+radid+''' and anrs_id = '''+rschrid+''' and anus_id = '''+uschrid+'''');
  myquery1.Execute;
  bezid:=myquery1.fields[0].asstring;

  myquery2.SQL.Text:=('select andocname,anpdfname from anzt a join andocblob d on d.andb_id = a.andb_id join anpdfblob p on p.anpb_id = a.anpb_id where a.bid = :bezid');
  myquery2.Execute;

mkinzler 12. Jun 2007 10:10

Re: Problem mit sql abfrage
 
Du solltest dir nochmal die Grundlagen von DB-Programmierung durchlesen
-Warum die Klammern bei der .SQL.Text-Zuweisung?
-Warum Setzen des Parameters vor der Zuweisung des Abfragestrings?

Fridolin 12. Jun 2007 10:13

Re: Problem mit sql abfrage
 
:wiejetzt: Bis jetzt hat ja alles auf diese Weise funktioniert...

Jelly 12. Jun 2007 10:30

Re: Problem mit sql abfrage
 
Wenn ich dich richtig verstanden habe müsste das eher über den UNION Befehl gehen. Joinen zwischen de Tabellen andocblob und anpdfblob hilft da nicht weiter.

Fridolin 12. Jun 2007 10:46

Re: Problem mit sql abfrage
 
Zitat:

Zitat von Jelly
Wenn ich dich richtig verstanden habe müsste das eher über den UNION Befehl gehen. Joinen zwischen de Tabellen andocblob und anpdfblob hilft da nicht weiter.


Super Geil, dass funktioniert...

Danke


:-D :dp:

mkinzler 12. Jun 2007 11:00

Re: Problem mit sql abfrage
 
Zitat:

Bis jetzt hat ja alles auf diese Weise funktioniert...
Bei der Verwendung von Parametern und automatischer Erzeugung der Parameter aus dem Statement aber nicht.

Hab deine Anforderung nicht richtig verstanden und anzt als Verknüpfungstabelle angesehen

Fridolin 12. Jun 2007 11:43

Re: Problem mit sql abfrage
 
"anzt" wird ja auch als Verknüpfungstabelle genutzt...

Wie gesagt, mit UNION funktionierts. :thumb:

mkinzler 12. Jun 2007 11:44

Re: Problem mit sql abfrage
 
Zitat:

"anzt" wird ja auch als Verknüpfungstabelle genutzt...
Aber dir kommt es nicht auf diese Verknüpfung an

Fridolin 12. Jun 2007 11:54

Re: Problem mit sql abfrage
 
Ich versuch mal sämtliche Klarheiten zu beseitigen:

ich habe 6 Tabellen:
Typen - ant_id,typ
GG - ang_id,angesamtgewicht
Volumina - anv_id,anvolumen
Radstaende - anr_id,radstand
rschraenke - anrs_id,rschrank
uschraenke - anus_id,uschrank

dann habe ich die tabelle "bezeichnungen", welche sich zusammensetzt aus:
bid; ant_id, ang_id, anv_id, anr_id, anrs_id, anus_id, bezeichnung

jetzt noch die beiden tabellen für doc's und pdf's:
docblob:
andb_id,andocname,andocblo

pdfblob:
anpb_id,anpdfname,anpdfblo


aus der tabelle bezeichnungen, wird die "bid" weitergegeben an "anzt" und aus den blob-tabellen jeweils die andb_id und die anpb_id.

Meiner Meinung nach, hab ich damit die Verknüpfung zwischen dem Datensatzt und den Dateien...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz