[SQL allgemein] Problem mit LEFT JOIN

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

  • [SQL allgemein] Problem mit LEFT JOIN

    Hallo zusammen

    habe bei folgender Abfrage ein Problem


    PHP:--------------------------------------------------------------------------------
    $query ="SELECT a.objekt_titel as objekt_titel_a, a.objekt_zone as objekt_zone_a, a.objekt_beschreibung as objekt_beschreibung_a, a.objekt_ort as objekt_ort_a, a.objekt_preis as objekt_preis_a, a.objekt_uploadid as objekt_uploadid_a, b.objektbild_pfad as objektbild_pfad_b, b.objektbild_id as objektbild_id_b FROM baur_objekte as a LEFT JOIN baur_objektbilder as b ON a.objekt_uploadid = b.objektbild_uploadid WHERE a.objekt_zone='$zone' GROUP BY a.objekt_uploadid LIMIT $start, $page";

    --------------------------------------------------------------------------------


    Ich frage ja da zwei Tabellen ab. In der einen sind Immobilien-Objekte und in der anderen die dazugehörigen Bilder. Zu jedem Objekt können x-viele Bilder in der Table objektbilder drin sein. Soweit klappt ja auch alles. Wenn ich aber in einer Übersicht mir alle Objekte und jeweils das erste Objektbild anzeigen lassen will, dann klappts nicht. Im Moment zeigt er mir halt irgendein Bild aus den dazugehörigen an. Ich bräuchte aber immer das erste. So mit LIMIT und so hab ich lauter Fehlermeldungen. Habt Ihr da ne Idee ???

    Danke schonmal für die TIPS

  • #2
    ich verstehe dein problem nicht so ganz.

    ich habe mal deine query ein wenig neu formatiert und die beiden limit-werte neu gesetzt.

    teste das mal bitte.

    PHP-Code:
    $start 0;
    $count 1;

    $sql "SELECT
                a.objekt_titel as objekt_titel_a,
                a.objekt_zone as objekt_zone_a,
                a.objekt_beschreibung as objekt_beschreibung_a,
                a.objekt_ort as objekt_ort_a,
                a.objekt_preis as objekt_preis_a,
                a.objekt_uploadid as objekt_uploadid_a,
                b.objektbild_pfad as objektbild_pfad_b,
                b.objektbild_id as objektbild_id_b
            FROM
                baur_objekte as a
                    LEFT JOIN baur_objektbilder as b ON (a.objekt_uploadid = b.objektbild_uploadid)
            WHERE
                a.objekt_zone = '"
    .$zone."'
            GROUP BY
                a.objekt_uploadid
            LIMIT
                "
    .(int)$start.", ".(int)$count
    ausserdem wäre es gut, wenn du mal beschreiben würdest, was dein script so alles macht, was es nicht soll....
    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
      Hi Abraxax,

      danke fürs formatieren Mit der Ordnung bei Coden hab ichs noch nicht so.

      Zum Script : Das ganze Script soll Immobilienobjekt sowohl in einer Übersicht als auch in einer Detailansicht darstellen. Der Teil den ich jetzt hier gepostet habe, ist für die Ansicht in der Übersicht zuständig. Dort sollten eben die Werte aus der tabelle objekt_.. und jeweils das erste dazugehörige Bild in der Tabelle objektbild_.. angezeigt werden. Mein Problem ist eben nun, daß ich nicht weiss wie ich da ne Sortierung bei der Abfrage der Objektbilder reinkriege. Meinem Verständniss nach müßte ich doch "einfach" nur nach dem Wert objektbild_id aufsteigend sortieren. Aber wie ich das hinkriegen soll - keine Ahnung.

      Du hast ja jetzt in deiner geänderten Version des Codes nix an der Sortierung geändert , oder ?

      Kommentar


      • #4
        nein. geändert habe ich nichts. ausser vielleicht den daten für limit.

        was passiert denn bei der abfrage?
        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


        • #5
          Hi,

          naja die Abfrage erzeugt eine Übersicht mit Immobilienobjekten ( Daten sind gespeichert in der Table objekte ). Zu jedem Objekt gibt es mindestens ein, meistens aber mehrere Bilder. In der Übersicht soll jeweils ein Bild und zwar das erste Bild zum jeweiligen Objekt angezeigt werden ( Bilder sind in der Tabelle objektbilder ).

          ich hoffe ich konnte mich verständlich ausdrücken

          Kommentar


          • #6
            du kannst noch ein ORDER BY auf die bilder setzen.

            beim auslesen musst du aber die anderen zeilen ignorieren. anders sehe ich derzeitig keine andere lösung.
            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


            • #7
              Naja, sowas hatte ich auch schon probiert. Wahrscheinlich hatte ich da einen Schreibfehler drin, es gab auf jeden Fall immer ne Fehlermeldung.
              Mein Problem ist nur das ich das ganze auf zwei Arten sortiern sollte : Zum einen sollten die Objekte in der Reihenfolge der objekt_id aufsteigend sortiert werden und zum anderen sollten eben die Bilder auch sortiert werden. Kannst Du mir sagen wo ich diese ORDER BY reinbasteln könnte

              DANKE !

              Kommentar


              • #8
                zwischen GROUP BY und LIMIT.

                weitere infos wie immer im manual. www.mysql.com
                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
                  HI !

                  Ich bin da irgendwie zu blöd zu. Kriegs nicht hin. Jetzt hab ich das Problem aber anders gelöst: Ich lade jetzt zu jedem Objekt einfach ein Vorschaubild in die Tabelle objekte rein und schon brauch ich auch keine so komplizierte Abfrage mehr

                  Trotzdem Danke für die Mühen !!!

                  Kommentar

                  Lädt...
                  X