[MySQL] Ausgabe typ der SELECT

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL] Ausgabe typ der SELECT

    hello,

    habe folgenden Auszug aus meiner MySQL Query:
    PHP-Code:
     SELECT     
        TRIM
    (
                    
    LEADING     MAX(admin_AuftragStatusLog.date_add
                    
    FROM         MAX(concat(admin_AuftragStatusLog.date_add,admin_AuftragStatusLog.status))
                ) 

    mir geht es darum dass ich die summe der werte bilde mittels SUM() und Group By.
    es schreibt ständig "#1111 - Invalid use of group function ".
    schätze es leigt daran dass die ausgabe kein integer vom typ ist, sondern eher ein char und er somit nicht sie summe bilden kann.
    wie kann ich es in diesem query - OHNE PHP - setzen das die ausgabe als INT zu verstehen ist ?
    ein INT(x) dafür bringt nichts.

    danke!
    bei fragen immer
    windows - pc: Start -> Ausführen -> cmd (command) - format c:
    linux : lass es , es hat sicher einen sinn so
    --
    php-forum.at


    >>>>dont ask me why<<<<

  • #2
    weil du so ein Experter bist und solche Tipp gibst:
    bei fragen immer windows - pc: Start -> Ausführen -> cmd (command) - format c:
    bekommst du von mir nun den Tipp bei solchen Probleme
    PHP-Code:
    DROP DATABASE deine_DB_Name 

    Kommentar


    • #3
      aha,...

      darf ich also annehmen dass dir keine lösung einfällt da du einen lächerlichen, "ich muss unbedingt etwasSchreiben" eintrag hinterlässt, der überhaupt nichts mit meiner frage zu tun hat !?

      gut zu wissen dass scheinbar dieses forum auch nicht mehr das selbe wie früher ist und so manche leute daranschuld sind - schade.
      bei fragen immer
      windows - pc: Start -> Ausführen -> cmd (command) - format c:
      linux : lass es , es hat sicher einen sinn so
      --
      php-forum.at


      >>>>dont ask me why<<<<

      Kommentar


      • #4
        kann es sein, dass deine abfrage
        1. syntaktisch ziemnmlich, naja kreativ ist ind
        2. nicht zur problembeschreibung passt?

        ich sehe zumindest in der abfrage nirgends das von dir erwähnte SUM und das hinter FROm sieht auch nicht wie ein tabellenname aus...
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mickey
          aha,...

          darf ich also annehmen dass dir keine lösung einfällt
          das stimmt, denn was soll man denn zu den Konstrukt FROM MAX(..) noch sagen ausser DROP DATABASE zu empfehlen, da du offensichtlich nicht weißt, was du mit einer DB anfangen kannst

          Kommentar


          • #6
            ;-)

            nein ist wie gesagt ein auszug der abfrage, die komplette abfrage sieht so in etwa aus:

            PHP-Code:
            SELECT     
                TRIM
            (
                            
            LEADING     MAX(admin_AuftragStatusLog.date_add
                            
            FROM         MAX(concat(admin_AuftragStatusLog.date_add,admin_AuftragStatusLog.status))
                        ) as `
            LastStatus`,
                
            FROM     shop_adminUser AS shop_adminUser_1 
                RIGHT JOIN 
            (((admin_AuftragLst 
                    INNER JOIN admin_AuftragStatusLog ON admin_AuftragLst
            .AuftrLstID admin_AuftragStatusLog.AuftrLstID
                    
            INNER JOIN admin_AuftragUEB ON admin_AuftragLst.AuftrUEBID admin_AuftragUEB.AuftrUebID
                
            LEFT JOIN shop_adminUser ON admin_AuftragStatusLog.user_add shop_adminUser.user_id
                
            ON shop_adminUser_1.user_id admin_AuftragUEB.user_add 
            GROUP     BY admin_AuftragStatusLog
            .AuftrLstID 
            und sollte so aussehen das ein SUM(beim TRIM Syntax) steht , nur leider sitmmt schienbar der type bei der ausgabe nicht...
            somit kann keine summe aus dem resultat der funktionen gebildet werden.
            ist leider auch nicht anders möglich, zumindest glaube ich es da die tabellen so aussehen:

            PHP-Code:
            mysqlSELECT FROM admin_AuftragStatusLog;
            +------------+--------+----------------+----------+
            AuftrLstID status date_add       user_add |
            +------------+--------+----------------+----------+
            |          
            |    255 20041109060015 |        |
            |          
            |    230 20041109060844 |        |
            |          
            |     18 20041109060854 |        |
            |          
            |    255 20041109072806 |        |
            |          
            |    255 20041109072806 |        |
            |          
            |    255 20041109072806 |        |
            |          
            |    230 20041109084634 |        |
            +------------+--------+----------------+----------+
            7 rows in set (0.00 sec
            in der table:
            PHP-Code:
            mysqlSELECT FROM admin_AuftragLst;
            +------------+------------+
            AuftrLstID AuftrUEBID 
            +------------+------------+
            |          
            |          
            |          
            |          |
            |          
            |          |
            |          
            |          |
            +------------+------------+
            4 rows in set (0.00 sec
            sind die übersichten etc. drinnten, dass heißt er sucht den letzten eingetragenen (anhand des datums) status von admin_AuftragStatusLog und soll den ausgeben.
            habe leider keinen anderne weg, ausser mit temp'S so wie es auf
            http://dev.mysql.com/doc/mysql/de/ex...group-row.html
            beschrieben ist, da wird allerdigns auch der andere weg erwähnt (unten).
            bei fragen immer
            windows - pc: Start -> Ausführen -> cmd (command) - format c:
            linux : lass es , es hat sicher einen sinn so
            --
            php-forum.at


            >>>>dont ask me why<<<<

            Kommentar


            • #7
              Original geschrieben von asp2php
              das stimmt, denn was soll man denn zu den Konstrukt FROM MAX(..) noch sagen ausser DROP DATABASE zu empfehlen, da du offensichtlich nicht weißt, was du mit einer DB anfangen kannst

              und dir rate ich mal dich bevor du solche äusserungen auslässt,
              1. genau zu lesen, es steht dort es handelt sich um einen auszug des query und nicht das komplette query! (auszug != komplett)
              2. dir mal die darin enthaltenen funktionen genauer ansiehst!
              hier mal zum lernen: http://dev.mysql.com/doc/mysql/de/String_functions.html ca.mitte funktion "TRIM" !
              bei fragen immer
              windows - pc: Start -> Ausführen -> cmd (command) - format c:
              linux : lass es , es hat sicher einen sinn so
              --
              php-forum.at


              >>>>dont ask me why<<<<

              Kommentar


              • #8
                http://www.php-resource.de/forum/sho...threadid=31056
                http://www.php-resource.de/forum/sho...threadid=42179

                such da mal nach meinen beiträgen, ich glaube, dass ist das was du suchst
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  OK, ist noch was früh, habe überlesen, dass es nur ein Teil war ...

                  schau dir mal CAST oder CONVERT an.

                  Kommentar


                  • #10
                    okay, werde ich mir näher ansehen!
                    vielen dank euch!
                    bei fragen immer
                    windows - pc: Start -> Ausführen -> cmd (command) - format c:
                    linux : lass es , es hat sicher einen sinn so
                    --
                    php-forum.at


                    >>>>dont ask me why<<<<

                    Kommentar


                    • #11
                      okay, habe alles durch...

                      @mrhappiness:
                      diene seiten kannte ich shcon, diese beinhalten allerdings nur einge lin abfragen, darum geht es im prinzip nicht - aber trozdem danke - idt leider so nur die einzige möglichkeit wie man diese aufgabe lösen kann.

                      @asp2php:
                      danke für die infos, diese beziehen sich aber auf die spalte selbst. diese habe ich ja nciht. die ausgabe der abfrage entsteht durch einem datumsfeld und einem int feld => entsteht daraus ein char feld.
                      mit einem char feld kann eine sum() funktion allerdings nichts anfangen.

                      offenbar ist MySQL noch nicht so weit dass es diese funktionen unterstützt.

                      werde es anders lösen indem ich einfach ein last_insert_id() in die eine table mache und mich anhand dem letzten eintrag dann direkt orientiere.
                      bei fragen immer
                      windows - pc: Start -> Ausführen -> cmd (command) - format c:
                      linux : lass es , es hat sicher einen sinn so
                      --
                      php-forum.at


                      >>>>dont ask me why<<<<

                      Kommentar


                      • #12
                        wenn ich mich nicht irre (bin nun vorsichtig ), dann willst du doch das Ergebnis von trim(...) aufsummieren, also warum machst du nicht einfach:

                        sum(cast(trim(...) as int))

                        da du das Datum durch trim schon entfernt hast.

                        Kommentar


                        • #13


                          ja genau stimmt!

                          diese funktoin gibt es voll nicht im DE Manual, naja. back to the english words ;-)

                          DANKE!

                          allerdings passt ihm scheinbar etwas anderes nicht in der SUM funktion -> die fehlermeldung scheint wieder zu kommen.. aber okay. wäre ein anderer thread.
                          bei fragen immer
                          windows - pc: Start -> Ausführen -> cmd (command) - format c:
                          linux : lass es , es hat sicher einen sinn so
                          --
                          php-forum.at


                          >>>>dont ask me why<<<<

                          Kommentar


                          • #14
                            poste mal das Statement und die Fehlermeldung

                            Kommentar


                            • #15
                              ;-)

                              PHP-Code:
                              SELECT 
                                          AVG

                                                 
                              Cast
                                                          
                              TRIM
                                                                    
                              LEADING MAXadmin_AuftragStatusLog.date_add 
                                                                    
                              FROM MAXconcatadmin_AuftragStatusLog.date_addadmin_AuftragStatusLog.status ) ) 
                                                        ) AS 
                              SIGNED 
                                                ) AS `
                              LastStatus
                              FROM admin_AuftragLst
                              INNER JOIN admin_AuftragStatusLog ON admin_AuftragLst
                              .AuftrLstID admin_AuftragStatusLog.AuftrLstID
                              GROUP BY admin_AuftragLst
                              .AuftrUEBID

                              #1111 - Invalid use of group function 
                              bei fragen immer
                              windows - pc: Start -> Ausführen -> cmd (command) - format c:
                              linux : lass es , es hat sicher einen sinn so
                              --
                              php-forum.at


                              >>>>dont ask me why<<<<

                              Kommentar

                              Lädt...
                              X