Left Join Problem

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

  • Left Join Problem

    Code:
    $sql = "SELECT a.*, b.* FROM announce a LEFT JOIN attachment b ON  (a.id = b.messageID) 
    WHERE b.messageType = 'announceAttachment' AND b.isImage = 1 AND a.frei = 1
    AND a.cat = ".$_REQUEST['catID'];
    Klappt so wunderbar die Abfrage solange nur 1 Treffer in der Tabelle attachment erfolgt.

    Nun zu meinem Problem:

    - wie kann ich Tabelle attachment zwingen nur einen Eintrag zu holen
    - wenn in attachment kein Treffer erfolgt wird mir garnichts angezeigt

  • #2
    steht hier drin:
    http://www.php-resource.de/forum/sho...threadid=28292

    Kommentar


    • #3
      Das habe ich mir schon durchgelesen bekomme es damit aber nicht hin.
      Die Beispiele beziehen sich ja mehr auf USING das ich aber nicht nutzen kann.
      Noch dazu habe ich noch nicht soviel mit JOIN gemacht

      Verstehe ja das solche Fragen auf dauer nerven.

      Kommentar


      • #4
        Das ist eigentlich ganz einfach.

        Das Beispiel
        alle quadrate auslesen und die wurzel dazu, sofern vorhanden
        sollte dir helfen.

        Und USING() kannst du natürlich auch einfach mit ON x=y ersetzen.
        ICH BIN ICH!!!

        Kommentar


        • #5
          OK habe es nun hinbekommen das er mir auch anzeigt wenn in der 2ten Tabelle kein Treffer vorhanden ist.

          Code:
          $sql = "SELECT a.*, b.* FROM attachment b RIGHT JOIN
           announce a ON a.id = b.messageID AND b.messageType = 'announceAttachment' 
          AND b.isImage = 1 WHERE frei = 1 AND cat = ".$_REQUEST['catID']
          Und ich bekomme immer noch alle Einträge von attachment obwohl ich da nur den ersten möchte.
          Setze ich ein Limit gilt das ja für alle das heißt er holt mir ja dann generell nur die die ich als Limit angebe.

          Habe das gefunden und weis nicht ob es richtig ist bzw. wie ich es anwenden muß das kenne ich garnicht.

          http://archives.postgresql.org/pgsql...0/msg01540.php
          Zuletzt geändert von Michael8576; 07.12.2007, 21:17.

          Kommentar


          • #6
            Habe es hinbekommen.

            Code:
            $sql = "SELECT a.*, b.* FROM attachment b 
            RIGHT JOIN announce a 
            ON a.id = b.messageID AND b.messageType = 'announceAttachment' AND b.isImage = 1 
            WHERE frei = 1 AND cat = ".$_REQUEST['catID']." GROUP BY messageID ORDER BY datum DESC";

            Kommentar


            • #7
              Hallo, leider klappt es doch nicht richtig mit meiner Abfrage.

              Wenn in der zu dem Eintrag in der Tabelle announce kein Anhang in Tabelle attachment vorhanden ist, dann liest er mir nur einen Eintrag ohne Anhang aus obwohl mehrere vorhanden sind.

              Gibt es allerdings ein oder mehrere Anhänge für Announce klappt es wunderbar.

              Ich sehe nur den Fehler nicht wieso er mir da nur einen Treffer zeigt und nicht alle.

              Code:
              $sql = "SELECT a.*, b.*, count(b.attachmentID) AS wieviele 
              FROM attachment b RIGHT JOIN announce a 
              ON a.id = b.messageID AND b.messageType = 'announceAttachment'
              WHERE a.frei = 0 GROUP BY b.messageID ORDER BY a.datum DESC";

              Kommentar


              • #8
                GROUP BY b.messageID -> GROUP BY a.messageID

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Ich habe es jetzt mit UNION lösen können.

                  Kommentar

                  Lädt...
                  X