Group by

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

  • Group by

    hi Leute

    Habe wieder einmal einen Hänger!
    Folgendes Probelm:

    Habe eine MySQL Tabelle mit unter anderem der Spalte id und der Spalte date.
    z.bsp.
    ID Date
    1 1234567891
    1 1234567881
    1 1234567871
    2 1234567831
    2 1234567851

    Nun würde ich gerne mittels Select lediglich den aktuellsten Datensatz pro Gruppe auswählen.
    Nicht lachen.....
    In meiner Unwissenheit meinte ich es mit group by id und order by Date zu versuchen. Leider ohne Erfolg.

    Weiss hier jemand Rat?
    Danke René

  • #2
    Ups, hab das pro Gruppe überlesen, also nochmals hier der richtige...

    SELECT max( id ) , max( date )
    FROM TabellenName
    GROUP BY id
    Zuletzt geändert von Günni; 21.04.2005, 01:04.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Danke, das funktioniert, nur ich vergass zu erwähnen das ich die komplette Tabelle mit * auslese.

      Und brauche ich kein order by mehr? Ist demnach max der höchste und min der kleinste Wert in den Felder, so wie asc und desc?

      Mit Deiner Version muss ich alle Felder nun einzeln hinzufügen, geht es auch anders?

      mein erster Ansatz war dieser:
      PHP-Code:
      $abfrage mysql_query ("SELECT * FROM $tab where id_seite = '$ids' &&
       update_time <= '
      $datum_jetzt' group by id_partner asc "); 
      soweit so gut, nur dass ich keinen Einfluss auf die Ausgabe der Reihenfolge von id_partner habe. Denn ich will das nur jeweils der aktuellste der jeweiligen Gruppe angezeigt wird.

      Jetzt gruppiert er wild und gibt einfach eines der Felder pro Gruppe aus!
      Zuletzt geändert von rönee; 21.04.2005, 01:52.

      Kommentar


      • #4
        du mußt die tabelle mit sich selbst joinen, auf partner_id und datum2 > datum1. du nimmst nen JOIN, der NULL erzeugt, wenn die bedingung nicht zutrifft (LEFT/RIGHT) und wählst dann die aus, wo NULL vorkommt.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Danke erstmal für den Ansatz, in der Umsetzung stockt es noch!

          Habe mir die Ref auf http://dev.mysql.com/doc/mysql/de/join.html angeschaut.

          leider steige ich noch nicht ganz dahinter.

          Kommentar


          • #6
            http://www.php-resource.de/forum/sho...threadid=28292

            Da steht das mit LEFTund RIGHT JOIN und dem NULL und dme ganzen anderen Zeug, was derHund dir vorgeschlagen hat.

            musst es nur noch auf dienen konkreten Fall übertragen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Sorry ich raffe es nicht mit join und right /left usw.

              Und das alles nur weil eine einfache zusatzfunktion nicht vorhanden ist, welche innerhalb group sortieren kann! Shit ich sehe nicht mehr durch.

              Muss mir wohl ein anderes Konstrukt schaffen - mit 2 Abfragen oder so....weiss es noch nicht...habe aber schon zuviel Zeit damit verschwendet.

              gruss René

              Kommentar


              • #8
                Das funktioniert nicht so. Was mache ich falsch?

                PHP-Code:
                SELECT  t1.id_partnerdate1.update_timedate2.update_time 
                FROM tab LEFT JOIN tab t1 ON date1 
                date2 

                Kommentar


                • #9
                  Nun bin ich der Verzweiflung nahe!

                  Es ist doch nicht möglich, dass eine so einfache Abfrage in MSQL nicht umgesetzt werden kann!!!!!!!!

                  Nur eine, die aktuellste, der selben id anzuzeigen!

                  Kommentar


                  • #10
                    also,

                    ich erkläre es nochmal ganz langsam, es ist total banal und wenn man mal ruhig drüber nachdenk, leuchtet es sofort ein.

                    geh doch einfach schritt für schritt vor.

                    LEFT JOIN zwischen der tabelle, bedingung ist die gleichheit der partner_id und das time2 > time1 ist.

                    jetzt schau dir das ergebnis an. dort, wo time1 am größten ist, wurde NULL gejoint, weil eben keine größere zeit vorhanden ist.

                    wenn du jetzt mittels WHERE IS NULL auswählst, hast du jeweils den aktuellen eintrag pro gruppe.

                    wenn du natürlich etwas ganz anderes machst, als vorgeschlagen, kannst du das gewünschte ergebnis vielleicht nicht erreichen.
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Ja, es ist mir logisch nur kann ich den select nicht richtig erstellen.

                      Schau was bi mir heraus kommt!

                      PHP-Code:
                      SELECT id1.id_partnert1.update_timet2.update_time,titel
                       FROM tab LEFT JOIN tab id1 
                      id1 and  t1 t2 where tab is Null 
                      Ich wäre Dir äusserst dankbar wenn Du mir kurz den korrekten String schreiben könntest.

                      Kommentar


                      • #12
                        Wiso kann mir hier nicht jemand rasch helfen????????????????????

                        Ich habe das Prinzip ja begriffen, weiss aber nicht wie arrangieren!
                        Ich habe auch schon so viel versuch! BItte Bitte.......

                        Bei mir funktioniert es einfach nicht und ich bin zu doof dazu, also seit so lieb und erlöst mich von den Qualen!!

                        Kommentar


                        • #13
                          Original geschrieben von rönee
                          SELECT id1.id_partner, t1.update_time, t2.update_time,titel
                          FROM tab LEFT JOIN tab id1 = id1 and t1 < t2 where tab is Null
                          Nach deinem SELECT zu urteilen hast du weder das Prinzip begriffen, noch die Syntax (http://dev.mysql.com/doc/mysql/de/select.html) geprüft, noch http://www.php-resource.de/forum/sho...threadid=50454 gelesen und das ist schade
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Anstatt mich zu beschimpfen könntest Du mir dem kleinen String doch schreiben, wäre der selbe energieaufwand für Dich.

                            Sowas ist doch ein klacks für Euch, wiso plagt Ihr mich deswegen?

                            Kommentar


                            • #15
                              hör' jetzt augenblicklich auf mit dem gejammer und dem gemecker, sonst wandert der thread auf den müllhaufen.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X