Unix Technical Forum

=?iso-8859-15?Q?SELECT_wird_unterschiedlich_ausgef=FChrt?=

This is a discussion on =?iso-8859-15?Q?SELECT_wird_unterschiedlich_ausgef=FChrt?= within the MySQL General forum forums, part of the MySQL category; --> Hallo zusammen! Ich habe die Frage vor ein paar Tagen bereits ins MySQL-Forum gestellt, aber leider hat da noch ...


Go Back   Unix Technical Forum > Database Server Software > MySQL > MySQL General forum

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-27-2008, 10:24 PM
=?iso-8859-15?Q?Peter_St=F6cker?=
 
Posts: n/a
Default =?iso-8859-15?Q?SELECT_wird_unterschiedlich_ausgef=FChrt?=

Hallo zusammen!

Ich habe die Frage vor ein paar Tagen bereits ins MySQL-Forum gestellt, aber leider hat da noch niemand geantwortet. Jetzt versuche ich es mal mit der Liste. Wäre super, wenn mit jemand von Euch helfen könnte, weil ich hier nach Wochen des Probierens nicht weiterkomme:


Ich habe hier ein ganz komisches Verhalten einer Abfrage (Der Code ist unten).

1. Wenn ich die Abfrage direkt auf der DB ausführe, funktioniert sie perfekt
2. Wenn sie innerhalb des Programms mit einem CREATE TABLE oder INSERT INTO abläuft, liefert sie ein anderes Ergebnis:


Ich habe zwei Querys. Die erste liefert mir einer temporary table, die in der zweiten dann per LEFT JOIN eingebunden wird.

Die erste Query macht keine Probleme und liefert z.B. folgendes Ergbnis:
673|2006-11-20|29|NULL|12

Wenn die SELECT der zweiten Anweisung direkt z.B. über PHPMyAdmin abgesetzt wird, arbeitet sie richtig und liefert z.B.:
673|2006-11-20|12|1128|2006-11-12|0|6|6|6|1416|2006-11-24|4|0|2006-11-24|red

Läuft sie dagegen mit einem CREATE TABLE oder INSERT INTO (auch aus PHPMyAdmin heraus) liefert sie:
673|2006-11-20|12|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL|NULL |0|NULL|green

Der Knackpunkt scheint mir die Variable @q3 zu sein, die nicht berechnet wird; nur warum nicht?!?!?!?!?

Ich hoffe, mit kann jemand weiterhelfen!

Kurz noch was zum Hintergrund:
Die erste Abfrage liefert den aktuellen Zustand unserer Produkte sowie dieDauer der einzelnen noch nicht erledigten Tätigkeiten in Stunden.
Die zweite Abfrage soll die Summe der ausstehenden Tätigkeiten errechnen, und daraus mit einem Faktor einen voraussichtliches Enddatum der Produktion errechnen. Es sollen Wochenenden berücksichtigt werden. Fällt das Enddatum auf ein Wochenende, so soll das Enddatum auf den nächsten Werktag verschoben werden.
Wie gesagt, im Pronzip funktioniert das!

MySQL-Version: 4.0.18-max-nt (geht leider nicht anders!)

Ich habe die zweite Abfrage mal so umgebaut, dass keine Variablen mehr vorkommen und nur noch 3 Spalten erzeugt werden. Leider ändert dies aber nichts amVerhalten :-(

Hier der Code:

$query = 'CREATE TEMPORARY TABLE dauertemp1 (INDEX index1 (prozessid,dauer_neu))
SELECT DISTINCTROW
a.id as prozessid,
a.zieltermin,
b.schrittnr_modul,
b.schrittnr_basisschritt,
c.dauer_neu
FROM
prozess a
LEFT JOIN prozessprotokoll b ON (b.prozessid=a.id)
LEFT JOIN basisschritt c ON (c.id=b.basisschrittid)
WHERE
(a.erledigt IS NULL OR (a.erledigt IS NOT NULL AND a.gesperrt IS NOT NULL)) AND b.erledigt IS NULL '.$where;
$db->query($query,__LINE__,__FILE__);

$query = 'CREATE TEMPORARY TABLE dauertemp2 (INDEX index1 (prozessid,endtermin))
SELECT
prozessid,
@z:=zieltermin as zieltermin,
@q1:=SUM(dauer_neu) as SummeStunden,
@q3:=@q1*94 as AnzahlStunden,
@q2:=DATE_ADD(CURRENT_DATE(), INTERVAL ROUND(@q3/24) DAY) as ZielTermin1,
@y1:=YEAR(@q2)-YEAR(CURRENT_DATE()) as JahresVergleich,
@q4_1:=WEEK(@q2,1)-WEEK(CURRENT_DATE(),1) as AnzahlWEGleichesJahr,
@q4_2:=52-WEEK(CURRENT_DATE(),1)+(@y1-1)*52+WEEK(@q2,1) as AnzahlWEDiffJahre,
@q4:=IF(@y1=0,@q4_1,@q4_2) as AnzahlWochenenden,
@q5:=@q3+@q4*48 as AnzahlStundenInclWochenenden,
@q6:=DATE_ADD(CURRENT_DATE(), INTERVAL ROUND(@q5/24) DAY) as ZielTermin2,
@q7:=WEEKDAY(@q6) as ZielWochentag,
@q8:=IF(@q7>4,7-@q7,0) as TageFuerVerschiebungWochenende,
@e:=CAST(DATE_ADD(@q6, INTERVAL @q8 DAY) as DATE) as endtermin,
IF(@z<@e,"red","green") as color
FROM
dauertemp1
GROUP BY
prozessid';
$db->query($query,__LINE__,__FILE__);


Ciao und danke!
Peter
__________________________________________________ _____________________
Viren-Scan für Ihren PC! Jetzt für jeden. Sofort, online und kostenlos.
Gleich testen! http://www.pc-sicherheit.web.de/freescan/?mc=022222

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:29 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com