sql max-select

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • sql max-select

    hiho leute, nettes forum habt ihr hier

    ich hab ein problem mit folgender abfrage:

    PHP Code:
    SELECT thread,parent,autor,datum FROM forum GROUP by thread having parent=max(parentORDER by datum DESC LIMIT 0,50 
    ihr seht vermutlich, was ich bezwecken will....
    das ist für ein selbstgecodetes forum, das folgende tabelle hat:

    thread | parent | thema | autor | email | reply | datum | text

    ich will also, dass sql nur jeweils die threadnummer von der neusten antwort ausspuckt also der höchste parent der threadnummer

    leider geht das mit der sql-abfrage nicht, weil sql meckert

    könnt ihr mir helfen?


    wenn ihrs nicht versteht, dann postet bitte, dass ihrs nicht versteht

  • #2
    Das wird wohl kaum so gehen ... HAVING ist eine Eingrenzung des aggregierten Ergebnisses.

    Im Normalfall verwendet man für so etwas eine Korreliert-Unterfrage ... oder Du arbeitest in 2 Schritten ...

    Erst:

    SELECT thread, MAX(parent)
    FROM forum
    GROUP BY thread

    Und dann Detailabfragen ...
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Comment


    • #3
      SELECT a.thread,a.parent,a.autor,a.datum
      FROM forum a
      left join forum b on b.thread=a.thread and b.parent>a.parent
      GROUP by a.thread
      having b.parent is NULL
      ORDER by datum DESC LIMIT 0,50
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Comment


      • #4
        Original geschrieben von Titus
        SELECT a.thread,a.parent,a.autor,a.datum
        FROM forum a
        left join forum b on b.thread=a.thread and b.parent>a.parent
        GROUP by a.thread
        having b.parent is NULL
        ORDER by datum DESC LIMIT 0,50
        vielen dank, aber leider bekomm ich beim testen in phpmyadmin folgendes:

        "#1054 - Unbekanntes Tabellenfeld 'b.parent' in having clause."

        Comment


        • #5
          dann bastel doch mal ein wenig an der query rum bis sie passt.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Comment


          • #6
            tut mir leid, aber ich hab leider überhaupt keine ahnung von joins....

            gibt es da vielleicht ne tutorial seite?

            Comment


            • #7
              www.mysql.com bzw. de?

              Ist garnicht so schwer
              Für Rechtschreibfehler übernehme ich keine Haftung!

              Comment


              • #8
                Original geschrieben von snake4ever
                tut mir leid, aber ich hab leider überhaupt keine ahnung von joins....

                gibt es da vielleicht ne tutorial seite?
                http://www.php-resource.de/forum/sho...threadid=28292
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Comment


                • #9
                  Ich sage es ja ungerne ein 2. Mal ... aber HAVING ist eine Eingrenzung auf die aggregierten Ergebnisse ... wie gesagt ... Unterfrage ist die Lösung ...

                  ... allerdings ... bei so Gammeldatenbanken wie der MySQL kann man auch Titus' Ansatz als Basis nehmen ... allerdings nicht mit HAVING sondern mit WHERE wird da was draus ...

                  Code:
                  SELECT b1.thread, b1.parent, b1.author
                    FROM board b1
                    LEFT JOIN board b2
                      ON b1.thread = b2.thread
                     AND b1.parent < b2.parent
                   WHERE b2.parent IS NULL
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Comment


                  • #10
                    Original geschrieben von goth
                    ... bei so Gammeldatenbanken wie der MySQL ...
                    OffTopic:
                    der ist gut


                    Comment


                    • #11
                      Ja ist doch so ... mit auf das fehlenden LIMIT ist mir der MS-SQL-Server auch einige hundert mal lieber als die MySQL ... allerdings wirds ab der 5.0 respektive 5.1 ja besser ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Comment


                      • #12
                        vielen dank leutz, habt mir superdupa geholfen

                        werd das forum weiterempfehlen....


                        ach übrigens: fast 15k posts, RESPEKT

                        Comment


                        • #13
                          Ja ja ... Mister Spam versucht jedem Benutzer ein Posting zu widmen ...
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Comment


                          • #14
                            na ja, aber du bist auch nicht ohne

                            Comment


                            • #15
                              Naja .. mehr als 5 habe ich auch ...
                              carpe noctem

                              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                              Comment

                              Working...
                              X