[MySQL] zwei LEFT JOIN

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

  • [MySQL] zwei LEFT JOIN

    Hallo,

    Ich hab ein Problem mit LEFT JOIN,
    und zwar wenn ich 2 LEFT JOINs benutze, kommen falsche werte raus.

    meine MYSQL-Abfrage sieht so aus:
    Code:
    SELECT a.*, DATE_FORMAT(a.date, '%d.%m.%y %H:%i') as 'fdate', COUNT(b.id) as 'comments', COUNT(c.id) as 'updates'
    FROM news a LEFT JOIN comments b ON b.newsid = a.id LEFT JOIN news_updates c ON c.newsid = a.id
    GROUP BY a.id ORDER BY a.id DESC LIMIT 0, 16
    Zuerst werden alle daten der news abgefragt, mit formatierten datum-zeit,
    dann die comments und die updates pro news.

    wenn ich die updates wegmache funktioniert es einwandfrei, und es kommt ein rchtiger comments wert raus, umgekehrt auch.

    wenn ich beide lasse, kommt bei beiden das produkt von beiden, also beide werden multipliziert.

    Wie kann ich das problem lösen?

    danke

    sasuki

  • #2
    du solltest mal ein wenig an deiner formatierung von queries arbeiten.
    Code:
    SELECT
        a.*,
        DATE_FORMAT(a.date, '%d.%m.%y %H:%i') as 'fdate',
        COUNT(b.id) as 'comments',
        COUNT(c.id) as 'updates'
    
    FROM
        news a
            LEFT JOIN comments b ON b.newsid = a.id
            LEFT JOIN news_updates c ON c.newsid = a.id
    
    GROUP BY
        a.id
    
    ORDER BY
        a.id DESC
    
    LIMIT
         0, 16
    desweiteren brauchst/darfst du das 'as' nicht machen. das aber nur am rande.

    das a.* sollte auch nicht sein. gib die felder einzeln an.

    dann wäre es auch interessant zu wissen, wie die tabelles aussehen. -> PMA-export
    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 |


    Kommentar


    • #3
      du solltest mal ein wenig an deiner formatierung von queries arbeiten.
      OffTopic:
      Genau, das passt doch alles in eine Zeile!

      Kommentar


      • #4
        die formatierung is doch mir eigentlich sher egal,
        wichtig ist das es funktioniert.

        Tabellenstruktur:
        die news tabelle hat das id feld das int ist.
        die beiden anderen tabellen haben jeweils eine id und eine newsid, beide int.

        mehr gibt da nicht an struktur die wichtig ist,

        Und warum sollte man kein as benutzen???
        Und warum soll ich felder einzeln angeben???


        danke

        sasuki

        Kommentar


        • #5
          @Abraxax
          OffTopic:
          desweiteren brauchst/darfst du das 'as' nicht machen. das aber nur am rande


          Warum nicht AS? Ist doch Teil der Sprachdefinition!
          chansel0049
          ----------------------------------------------------
          if you've reached the bottomline - dig further!
          Übersetzer gesucht? http://www.babelport.com

          Kommentar


          • #6
            Original geschrieben von chansel0049
            @Abraxax
            OffTopic:
            desweiteren brauchst/darfst du das 'as' nicht machen. das aber nur am rande


            Warum nicht AS? Ist doch Teil der Sprachdefinition!
            nein, AS gehört nicht zum ANSI Standard, und der MSSQL Server meckert da zB auch rum
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              nein, AS gehört nicht zum ANSI Standard, und der MSSQL Server meckert da zB auch rum
              Ist dennoch Teil der MySQL Sprachreferenz (Habs grade in zwei dicken Handbüchern nachgeschlagen, weil mich ds hier plötzlich verwirrt) !
              chansel0049
              ----------------------------------------------------
              if you've reached the bottomline - dig further!
              Übersetzer gesucht? http://www.babelport.com

              Kommentar


              • #8
                dann nutze es weiterhin mit 'as' und freue dich irgendwann über ungeklärte fehlermeldungen.
                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 |


                Kommentar


                • #9
                  Original geschrieben von TBT
                  nein, AS gehört nicht zum ANSI Standard, und der MSSQL Server meckert da zB auch rum
                  ACCESS läuft doch auf MSSQL? Des meckert nur, wenn da kein AS dabei ist!
                  Für Rechtschreibfehler übernehme ich keine Haftung!

                  Kommentar


                  • #10
                    was gäbe es als alternative zu as.

                    und hat jemand eine lösung zu meinem problem??


                    danke

                    sasuki

                    Kommentar


                    • #11
                      Kann sich vielleicht nochmal jemand mit Ahnung zur Lösung des Problems äussern? Ich hab nämlich ein ähnliches

                      Kommentar


                      • #12
                        @And1: Ich denke, die Frage hab ich dir grad schon woanders beantwortet

                        Einfach beide Male
                        COUNT (DISTINCT ...
                        verwenden, dann sollte es gehen.

                        Und das 'as' einfach weglassen und durch nix ersetzen - hat die gleiche Funktion.
                        hopka.net!

                        Kommentar


                        • #13
                          Ich dacht mir ich frag nochma hier, weil in dem anderen Board laufen nich so kompetente Leute rum :P Aber ich geh mal da den Thread schliessen ^^

                          /edit
                          Das 'as' war mal weg, weiss nich warum ich es hingeschrieben hab.
                          Zuletzt geändert von And1; 14.05.2004, 22:57.

                          Kommentar


                          • #14
                            Das 'as' war mal weg, weiss nich warum ich es hingeschrieben hab.
                            das ist das beste!

                            Vermutlich weil du einen alias vergeben wolltest. um die query transportabel zu machen, spart man sich das as.

                            Kommentar

                            Lädt...
                            X