tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
16
ZUGRIFFE
502
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    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
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

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

    Zitat Zitat von MySQL-Handbuch
    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.
     

  3. #3
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    mmh okay und hast du eine möglichkeit wie ich das umgehen kann?
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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 )
     

  5. #5
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    wo muss ich das dann hinschreiben?
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Vor der 1.Anweisung(also der, die bisher den Fehler verursacht hat)...halt ein SET-Statement:

    Code sql:
    1
    
    SET @variable='wert';
     

  7. #7
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    mmh iwi bekomm ich das nicht hin... der sagt immer fehler fehler fehler O.o
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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
     

  9. #9
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    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)
     

  10. #10
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Keine Ahnung, was für ein Query du dort ausführst, die Fehlermeldung
    Code :
    1
    
    You have an error in your SQL syntax [......] [B]near 'SELECT      id,      name,      status,      DATE_FORMAT(enddate, '%Y-%m-' at line 1[/B]

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

  11. #11
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    Na ich habe das Statement von mir Oben ausgeführt. Allerdings habe ich über das erste SELECT dann deinen vorgeschlagenen SET-Befehl geschrieben...

    Wenn ich das obere Statement in Aqua Data Studio ausführe kommt mit dem SET-Befehl der Fehler "You have an error in your SQL syntax.." und bei der Ausführung ohne den Befehl bekomme ich den Fehler: "Very low memory", was ja aber nichts mit TOS zu tun haben kann. Im Oracle SQL Developer passieren ähnlich Dinge Ich bin am verzweifeln
     

  12. #12
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von Prengepower Beitrag anzeigen
    Allerdings habe ich über das erste SELECT dann deinen vorgeschlagenen SET-Befehl geschrieben...
    Eventuell hast du es falsch darüber geschrieben.

    Folgendes kannst du gerne mal in PHPMyAdmin testen:
    Code :
    1
    2
    
    SET    @variable ='wert';
    SELECT @variable as variable;
    ...und du wirst sehen: kein Fehler, sondern eine im SELECT verfügbare Variable.
     

  13. #13
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    Also wenn ich jetzt nur zum Probieren genau deinen Code ausprobiere kommt folgendes:

    Code :
    1
    2
    
    >[Error] Script lines: 1-2 --------------------------
     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 @variable as variable' at line 2
     

  14. #14
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hast du das Statement so in PHPMyAdmin probiert?

    Falls ja, welche MySQL-Version nutzt du?

    Falls nein: dann musst du die beiden Statements in separaten Queries ausführen.

    PHP-Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <?php
    $link=mysql_connect('server','user','passwort')     or die(mysql_error());
     
    //Variable setzen
    mysql_query("SET    @variable ='wert'")             or die(mysql_error());
     
    //Variable benutzen
    $result=mysql_query("SELECT @variable as ergebnis") or die(mysql_error());
     
    echo mysql_result($result, 0);
    //Ausgabe: [B]wert[/B]
    ?>
     

  15. #15
    Prengepower Prengepower ist offline Mitglied Silber
    Registriert seit
    Aug 2003
    Beiträge
    78
    ähm wie gesagt ich arbeite NICHT mit php sondern mit Java und will das ganze Spielchen dort benutzen...
     

Ähnliche Themen

  1. SQL Statement auslösen und Ergebnis auslesen
    Von Rico82 im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 03.09.10, 12:01
  2. MySQL 5 - Tabelle verliert Datensätze nach komplexen Statement ?
    Von TuxCommander im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 22.09.08, 21:18
  3. Antworten: 3
    Letzter Beitrag: 30.10.07, 08:52
  4. Antworten: 15
    Letzter Beitrag: 10.05.07, 12:03
  5. PHPMyAdmin / Mysql 4.1.2 -> Daten nach SQL Statement exportieren
    Von Mik3e im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 24.08.05, 11:11