[MySQL] Nach erster Ausführung von Statement Ergebnis = null, danach richtig

Prengepower

Mitglied
Moin!

ich bin langsam am verzweifeln. ich habe hier ein SQL-Statement.
Wenn ich das ausführe kommt nach der ersten Ausführung als Ergebnis immer "null".
Nach der 2. Ausführung sind die richtigen Ergebnisse da. Aber ich will das automatisieren und da kann ich keine "null"s gebrauchen.

Woran liegt das?!

Hier das Statement:

Code:
SELECT
    id,
    name,
    status,
    DATE_FORMAT(enddate, '%Y-%m-%d %T') as enddate
FROM
    (
        SELECT
            id,
           status,
            enddate,
            name
        FROM
            (
                SELECT
                    id, 
                    name,
                    status,
                    @enddate := IF(@lastid = id, @tempdate, datum) AS enddate,
                    @tempdate := datum,
                    @lastid := id,
                    @lastname := name
                FROM
                    (SELECT @lastid:='', @lastname = '', @enddate = '', @tempdate = (Select datumFrom (Select * FROM test order by ID asc, datum desc limit 2) roh Order by id asc,  datum asc limit 1)) AS vars,
                    (SELECT * FROM test ORDER BY id asc, datum desc) AS daten
            ) AS daten
    ) AS daten
WHERE status NOT LIKE 'TEST'
AND owner LIKE 'TEST%'
Order by id ASC

Danke schonmal ;)
 
Moin,

ich würde das Problem auf den 1. Blick hierauf zurückführen:

MySQL-Handbuch hat gesagt.:
Allgemein gesagt darf man niemals einer Benutzervariablen in einem Teil einer Anweisung einen Wert zuweisen und dieselbe Variable in einem anderen Teil derselben Anweisung verwenden. Vielleicht erhalten Sie die erwarteten Ergebnisse, aber dies ist nicht sicher.

Genau das tust du aber...du setzt in einem Query die Variablen und im selben Query willst du auch darauf zugreifen...was fehlschlagen dürfte.
Beim 2. Versuch sind dann die Variablen gesetzt.
 
Keine Ahnung, ob das in deinem Fall hilfreich ist, aber du könntest die Variablen vor dem 1. Versuch mit einem Standardwert belegen (geht über SET )
 
Vor der 1.Anweisung(also der, die bisher den Fehler verursacht hat)...halt ein SET-Statement:

SQL:
SET @variable='wert';
 
Angesichts deiner detaillierten Fehlermeldung kann ich dir bei deinem Problem nicht weiterhelfen.

Wo ich dir aber weiterhelfen kann, ist bei dem Hinweis auf eine erwünschte Benutzung der SHIFT-Taste im Forum, was dich bei erfolgreicher Umsetzung in Zukunft vor einer Löschung deiner Beiträge bewahren wird.

Danke
 
Okay bitte entschuldige. Werde ich in Zukunft beachten..

Also ich weiß ja nicht ob du Talend Open Studio kennst, aber wenn ich das obere SQL-Statement mit dem SET ausführen will, kommt folgender Fehler:

Code:
Exception in component tMysqlInput_2
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT      id,      name,      status,      DATE_FORMAT(enddate, '%Y-%m-' at line 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1027)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2938)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1601)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1710)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2430)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:2359)
	at com.mysql.jdbc.Statement.executeQuery(Statement.java:1227)
 
Keine Ahnung, was für ein Query du dort ausführst, die Fehlermeldung
Code:
You have an error in your SQL syntax [......] near 'SELECT      id,      name,      status,      DATE_FORMAT(enddate, '%Y-%m-' at line 1

.....bezieht sich jedenfalls nicht auf das von mir vorgeschlagene SET-Statement
 

Neue Beiträge

Zurück