Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[SQL allgemein] Problem mit LEFT JOIN [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[SQL allgemein] Problem mit LEFT JOIN


 
creative4web
13-09-2003, 15:38 
 
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

 
Abraxax
13-09-2003, 19:40 
 
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.

$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....

 
creative4web
14-09-2003, 11:38 
 
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 ?

 
Abraxax
14-09-2003, 12:23 
 
nein. geändert habe ich nichts. ausser vielleicht den daten für limit.

was passiert denn bei der abfrage?

 
creative4web
14-09-2003, 14:02 
 
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 :)

 
Abraxax
14-09-2003, 14:14 
 
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.

 
creative4web
14-09-2003, 14:19 
 
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 !

 
Abraxax
14-09-2003, 14:23 
 
zwischen GROUP BY und LIMIT.

weitere infos wie immer im manual. www.mysql.com

 
creative4web
15-09-2003, 18:38 
 
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 !!!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:38 Uhr.