Gruppierte Werte nach bestimmter Zeile aufsteigend ordnen

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

  • Gruppierte Werte nach bestimmter Zeile aufsteigend ordnen

    Hallo ich habe hier eine MySql - Abfrage: Es soll immer der niedrigste Wert der Zeile 'folge' aufgerufen werden. Leider wird jedoch immer der niedrigste Wert der Zeile menue.id ausgegeben. Wie kann ich das manipulieren?

    PHP-Code:


    SELECT
                    sprachen
    .sprache,
                    
    menue.id as firstid
                  FROM
                    sprachen
    ,
                    
    menue,
                    
    menue_area
                 WHERE
                    sprachen
    .id menue.sprache AND
                    
    menue_area.menue_area 'Kopf-Navigation' AND
                    
    menue.menue_area menue_area.id
                    
              GROUP BY
                    menue
    .sprache
              ORDER BY
                    menue
    .folge ASC
                 LIMIT
                    4

    Zuletzt geändert von sanktusm; 04.03.2010, 13:38.

  • #2
    Hallo,

    nimmst du bitte den PHP-Code weg, das hier ist das SQL-Forum?

    Danke


    Edit: da ist zwar immer noch PHP-Session-Kram drin (den du bitte rausnimmst), aber ok:

    Du sortierst zwar danach, aber es fehlt in den Spaltenreferenzen (zwischen SELECT und FROM), daher ist es im Ergebnis nicht dabei.

    Amica
    Zuletzt geändert von AmicaNoctis; 04.03.2010, 13:17.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      ich möchte ja menue.id ausgeben

      wenn ich die Anweisung so schreibe, gibt es das selbe problem:

      PHP-Code:
      SELECT
                      sprachen
      .sprache,
                      
      menue.id as firstid,
                      
      menue.folge
                    FROM
                      sprachen
      ,
                      
      menue,
                      
      menue_area
                   WHERE
                      sprachen
      .id != '' AND
                      
      sprachen.id menue.sprache AND
                      
      menue_area.menue_area 'Kopf-Navigation' AND
                      
      menue.menue_area menue_area.id
                      
                GROUP BY
                      menue
      .sprache
                ORDER BY
                      menue
      .folge ASC
                   LIMIT
                      4

      Kommentar


      • #4
        Dann musst du es genauer erklären. Mehr war aus deiner Anfrage nicht rauszuholen.

        Vermutung/Tipp: http://dev.mysql.com/doc/refman/5.0/...functions.html
        Zuletzt geändert von AmicaNoctis; 04.03.2010, 13:47.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Also hier die Erklärung

          Es geht hier darum, dass immer die erste ID unter der jeweiligen Sprache angewählt wird. Eben dieser Menuepunkt dessen Wert in der Zeile folge am kleinsten ist.

          So wie es hier programmiert wurde, wird immer der kleinste Wert der Zeile id angewählt.

          Also:

          id folge
          1 3
          2 1 <= dieser Wert soll ausgegeben werden
          3 2


          PHP-Code:
          SELECT
                          sprachen
          .sprache,
                          
          menue.id as firstid,
                          
          menue.folge
                        FROM
                          sprachen
          ,
                          
          menue,
                          
          menue_area
                       WHERE
                          sprachen
          .id != '' AND
                          
          sprachen.id menue.sprache AND
                          
          menue_area.menue_area 'Kopf-Navigation' AND
                          
          menue.menue_area menue_area.id
                          
                    GROUP BY
                          menue
          .sprache
                    ORDER BY
                          menue
          .folge ASC
                       LIMIT
                          4

          Kommentar


          • #6
            Ok, dann schau dir mal den Link in meinem letzten Beitrag an.

            Ansonsten noch ein Tipp: Verwende die korrekte Terminologie, sonst versteht man dich schlecht. Folge ist keine Zeile, sondern eine Spalte (oder Attribut) der Tabelle (oder Relation) menue
            Zuletzt geändert von AmicaNoctis; 04.03.2010, 14:27.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              ich werde da nicht schlau drauss

              welche funktion soll ich denn nun benutzen und wie

              Kommentar


              • #8
                Ich dachte da an min, denn du willst ja das Minimum der Werte. Wir sind wohl ein bisschen lesefaul?
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  hab ich schon ausporbiert

                  Ich will ja einen bestimmten Wert der Zeile, dessen spalte folge am kleinsten ist.
                  kann ich min auch in der WHERE clause benutzen?

                  Kommentar


                  • #10
                    Dort macht es keinen Sinn. Das gehört in die Spaltenreferenzen. Statt menue.folge schreibst du einfach min(menue.folge).

                    Edit: achso, du willst trotzdem die zugehörige ID? Dann geht es doch nicht so. Dann ist das hier was für dich, ich empfehle die Variante ganz unten mit dem left join.
                    Zuletzt geändert von AmicaNoctis; 04.03.2010, 14:45.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Vielen Dank so klappt es

                      PHP-Code:

                       SELECT
                                      sprachen
                      .sprache,
                                      
                      menue.id as firstid
                                    FROM
                                      menue
                      ,
                                      
                      sprachen,
                                      
                      menue_area
                                    WHERE
                                      sprachen
                      .id != '".$_SESSION['sprachen_id']."' AND
                                      
                      sprachen.id menue.sprache AND
                                      
                      menue_area.menue_area 'Kopf-Navigation' AND
                                      
                      menue.menue_area menue_area.id AND
                                      
                      menue.folge = (SELECT
                                                        min
                      (menue.folge
                                                       
                      FROM
                                                        sprachen
                      ,
                                                        
                      menue,
                                                        
                      menue_area
                                                       WHERE
                                                        sprachen
                      .id != '".$_SESSION['sprachen_id']."' AND
                                                        
                      sprachen.id menue.sprache AND
                                                        
                      menue_area.menue_area 'Kopf-Navigation' AND
                                                        
                      menue.menue_area menue_area.id
                                                    GROUP BY
                                                        menue
                      .sprache
                                   
                      ) ; 

                      Kommentar


                      • #12
                        Hm, da hast du dich also für die ineffizienteste Variante von den dreien entschieden... Hoffe, du hast nicht so viele Datensätze.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar

                        Lädt...
                        X