• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Join über mehrere Tabellen

Status
Für weitere Antworten geschlossen.

seblon

Mitglied
Moin,
ich habe ein Problem und zwar funktioniert die folgende Abfrage nicht:
PHP:
$query = sprintf("SELECT a.*,b.price,b.currency,b.hide_price,b.is_producer,b.article_no ,
(SELECT IF(BB_Photos.path IS NOT NULL,concat(BB_Photos.url,BB_Photos.path),BB_Photos.url)) AS photo,  
(SELECT z.logo FROM BB_Entries z WHERE z.BB_Accounts_id = a.BB_Accounts_id AND z.BB_Languages_id = $site_langid) as vendorlogo 
FROM BB_Objects a 
INNER JOIN BB_Products b ON a.id = b.BB_Objects_id 
LEFT JOIN BB_Objects_has_BB_Photos o_photo ON o_photo.BB_Objects_id = a.id 
LEFT JOIN BB_Photos ON BB_Photos.id = o_photo.BB_Photos_id WHERE b.article_no = '%s'",$art);
$query .= sprintf(" AND a.approved = 1 AND a.expired = 0 AND a.BB_Languages_id = %d",$site_langid);
Der Fehler ist:
Alles wird richtig ausgegeben ausser dem photo!

Weiss jemand wie die Abfrage korrekt sein müsste?
Bin für jede Hilfe dankbar.

Gruß,
Christoph

Wenn es euch hilft hier nochmal eine Abfrage die funktioniert, das ganze soll ja auch so bleiben nur das anstatt a.id ($pid), b.article_no ($art) als bedingung erfüllt sein muss:

PHP:
$query = sprintf("SELECT a.*,b.price,b.currency,b.hide_price,b.is_producer,b.article_no ,
(SELECT IF(BB_Photos.path IS NOT NULL,concat(BB_Photos.url,BB_Photos.path),BB_Photos.url)) AS photo,
(SELECT z.logo FROM BB_Entries z WHERE z.BB_Accounts_id = a.BB_Accounts_id AND z.BB_Languages_id = $site_langid) as vendorlogo 
FROM BB_Objects a 
INNER JOIN BB_Products b ON a.id = b.BB_Objects_id 
LEFT JOIN BB_Objects_has_BB_Photos o_photo ON o_photo.BB_Objects_id = a.id 
LEFT JOIN BB_Photos ON BB_Photos.id = o_photo.BB_Photos_id WHERE a.id = %d",$pid);
$query .= sprintf(" AND a.approved = 1 AND a.expired = 0 AND a.BB_Languages_id = %d",$site_langid);
Bin echt langsam am verzweifeln, hab doch alles genauso nur "a.id = %d",$pid" gegen "b.article_no = '%s'",$art" ausgetauscht.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Es werden alle Daten korrekt ausgelsen, ausser die spalte photo. Dort kommt ein anderes Bild, welches garnicht dazu gehört.
 
Werbung:
ich denke, das sollte aber so heissen:
PHP:
"b.article_no = %s",$art"
sonst müsste dir %s als string verwendet werden.
 
Naja eigentlich hast du recht, nur hab ich vergessen zu erwähnen, dass in $art auch sonderzeichen drin sind wie zB.: | oder -

Okay sry das ich euch so gequält hab mit der Abfrage,
die Abfrage war garnicht fehlerhaft sondern die Funktion die das Ergebnis ausgewertet hat.

Danke nochmal an alle die versucht haben zu helfen!
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben