AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ORDER in Unterselect sehr langsam

ORDER in Unterselect sehr langsam

Ein Thema von Gruber_Hans_12345 · begonnen am 13. Okt 2009 · letzter Beitrag vom 15. Okt 2009
Antwort Antwort
Seite 3 von 5     123 45   
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#21

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 08:41
@webcss: Das liefert auch die falschen daten

Ich brauche eine Liste von Personal, und zusätzlich brauche ich zu jedem Personal den Auftrag, den er zuletzt gestempelt hat (die letzte Stempelung ist jene, wo BUCHUNG am größten ist)

SQL-Code:
  for execute statement
    'select ID FROM PERSONALinto ID1
  DO begin
    ID = ID1;
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ID INTO MBID;
    suspend;
  end
so funktioniert das aber nicht?

so auch nicht
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO MBID; wie kann ich da das Where aufbauen?

@hoika
ja TB.Buchung hat beide Indexe (hatte einen Screenshott von IBConsole drauf)

@omata:
es ist mal egal ob die Personal ohne aufträge angezeigt werden oder nicht

nur die 1te Abfrage dauert ca 4Minuten (und liefert irgendwie komische daten )
die 2te dauert auch ca 4min
die 3te dauert auch ca. 4min
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 09:02
Hallo,

SQL-Code:
for select ID FROM PERSONAL into ID1
  DO begin
    ID = ID1;
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM
    TERMINAL_BUCHUNGEN TB
    WHERE TB.PERSONALID = ID
    
    order by TB.Buchung Desc //// das hatte noch gefehlt

    INTO MBID;

    suspend;
  end
Was kommt denn für eine Fehlermeldung ?

Wenn er wegen einer Variablen meckert, immer ein : davor

Zum Arbeiten empfehle ich IBExpert (gibt es auch als kostenlose Personal)


Heiko
Heiko
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#23

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 09:18
Zitat von hoika:
Hallo,

SQL-Code:
for select ID FROM PERSONAL into ID1
  DO begin
    ID = ID1;
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM
    TERMINAL_BUCHUNGEN TB
    WHERE TB.PERSONALID = ID
    
    order by TB.Buchung Desc //// das hatte noch gefehlt

    INTO MBID;

    suspend;
  end
Was kommt denn für eine Fehlermeldung ?

Wenn er wegen einer Variablen meckert, immer ein : davor

Zum Arbeiten empfehle ich IBExpert (gibt es auch als kostenlose Personal)


Heiko

hmmm, also bei dem hier, kommen flasche daten raus (er lädt gar nix rein .... )

SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ID INTO MBID; und bei dem
SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO MBID; kommt ein Fehler wegen dem ":"

Code:
Dynamic SQL Error
SQL error code = -901
undefined message number
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 16:24
Hallo,

zeige doch nch mal den kompletten Quellcodce der SP.

Message-Number:
Kann es sein, dass du mehrere Firebird-Installationen auf deinem Rechner hast ?
Der scheint in der falschen firebird.msg zu suchen.


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 16:26
Bzw scheint der Client nicht zum Server zu passen.
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#26

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 17:05
oh, ja, der client passt nicht zum server, ist ne alte IBConsole ...

SQL-Code:
set term #;

execute block
returns (ID INTEGER, MBID INTEGER)
as
declare variable ID1 INTEGER;
begin
  for execute statement
    'select ID FROM PERSONALinto ID1
  DO begin
    ID = ID1;
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO MBID;
    suspend;
  end
end

#
set term ;#
Das ist die SP, wobei es sich nur am :ID Parameter spiesst, habe statt dem auch ID1 probiert, geht auch nicht

SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ID1 INTO MBID; wenn ichs so verwende, dann meckert er, das er ID1 nicht kennt

wenn ichs so verwende
SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ID INTO MBID; dann läuft es durch, aber verwendet natrülich das Feld ID von TERMINAL_BUCHUNGEN, und läuft deshalb falsch ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#27

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 17:48
Müsste dann auch
SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID1 INTO :MBID; heissen
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#28

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 18:27
Hallo,

@Gruber_Hans_12345

momentan begreife ich nicht ganz, was Du möchtest:

Dein erstes Select sieht für mich so aus:

Gesucht wird der erste Satz, bei absteigender Sortierung nach BUCHUNG, aus der Tabelle TERMINAL_BUCHUNGEN, zu dem PERSONALID mit der ID aus der Tabelle PERSONAL übereinstimmt.

Das dürfte dann doch eigentlich sowas sein:
SQL-Code:
select FIRST 1 P.ID, TB.AUFTRAGID, TB.BUCHUNG
from PERSONAL P, TERMINAL_BUCHUNGEN TB
where P.ID = TB.PERSONAL_ID
ORDER BY TB.BUCHUNG DESC
oder liege ich da falsch?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#29

Re: ORDER in Unterselect sehr langsam

  Alt 14. Okt 2009, 19:11
Hallo,

lade dir doch endlich mal IBExpert runter, Mensch !!!


SQL-Code:
set term #;

execute block
returns (ID INTEGER, MBID INTEGER)
as
declare variable ID1 INTEGER;
begin
  for execute statement
    'select ID FROM PERSONALinto ID1
  DO begin
    ID = ID1;
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO MBID;
    suspend;
  end
end

#
set term ;#
execute block
was zum Teufel ist das denn ???
OK, ich weiss, was es ist
Aber das hat hier nichts zu suchen.

SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO MBID; wo ist das order by buchung desc ?


Vorschlag

SQL-Code:
CREATE PROCEDURE SP_Bla
RETURNS (
    ID INTEGER,
    MBID INTEGER)
AS
begin
  for select ID FROM PERSONAL into :ID
  DO begin
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID
    FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ID
    order by tb.buchung desc
    INTO :MBID
    suspend;
  end
end


Heiko

[edit=mkinzler]SQL-Code in SQL-Tags gepackt Mfg, mkinzler[/edit]
Heiko
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#30

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 07:56
@hoika

mach ich dann gleich

oh, stimmt das order by viel weg ...
das problem bei deiner SQL ist, das er beim WHERE TB.PERSONALID = ID, nicht den ID von den variablen her nimmt, sondern den von TB ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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