[JOIN] Wo ist der Fehler?

moggi

Grünschnabel
Hallo Community,

ich habe folgende Tabellen:

pt_ads
Code:
| *ad_id | sec_id | user_id |
|  5691  |  225   |   117   |

pt_picture
Code:
| *pic_id | ad_id | 
|   4494  |  5691 |

Nun möchte ich gerne beide Tabellen miteinander verbinden und zu jedem Artikel die zugehörigen Bilder ausgeben lassen. Irgendwie funktioniert das mit meiner Abfrage nicht und ich kann mir auch nicht erklären wo der Fehler ist. Entweder kann ich mir nur die ad_id ausgeben lassen oder die pic_ad. Beide zusammen aber nicht. Ich brauche unbedingt beide IDs um weiterarbeiten zu können.

Hier mal meine Abfrage:
PHP:
$sql = "SELECT ad_id, picture_id, price, subject, company
            FROM pt_ads
            INNER JOIN pt_users
	          ON pt_ads.user_id = pt_users.user_id
            INNER JOIN pt_picture
              ON pt_ads.ad_id = pt_picture.ad_id
            WHERE FIND_IN_SET('$id', catpath) AND price != '0.00'
            ORDER BY RAND() DESC";
So erhalte ich im Moment keine Ausgabe. Lass ich z.B. die ad_id im SELECT weg werden mir die Daten angezeigt, aber die ad_id = null;

Weiß jemand wo das Problem ist? Liegt es vielleicht am JOIN?

Gruß
Jens
 
Zuerst mal das ganze formatiert schreiben
SQL:
SELECT 
	ad_id, 
	picture_id, 
	price, 
	subject, 
	company
FROM 
	pt_ads
	INNER JOIN pt_users
		ON pt_ads.user_id = pt_users.user_id
	INNER JOIN pt_picture
		ON pt_ads.ad_id = pt_picture.ad_id
WHERE 
	FIND_IN_SET('{$id}', catpath) 
	AND price != '0.00'
ORDER BY 
	RAND() DESC
Und nun sehen wir doch das Problem schon. Im SELECT hast du die ad_id drin. Diese kommt aber in 2 Tabellen vor. Ergo was MySQL nicht, welches der beiden Felder es nehmen soll.
Ergo solltes du im SELECT-Teil bei der ad_id noch die Tabelle voranschreiben. Das gilt übrigens für alle Felder die nicht eindeutig einer Tabelle zugeordnet werden kann

SQL:
SELECT 
	pt_ads.ad_id, 
	picture_id, 
	...
 
Zuletzt bearbeitet von einem Moderator:
Zurück