PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei der Abfrage zweier Tabellen mit verwaisten Inhalt


cl-griffin
29.04.2008, 19:15:20
Hallo allerseits,

ich bin PHP/MySQL Rookie und bastle seit einiger Zeit an einem Script für eine Sponsorenverwaltung für Affiliates. Dazu habe ich zwei Tabellen erstellt. In der Tabelle "sponsors" befindet sich der Ref-Code, die ID und der Name des Sponsors, in der Tabelle "banners" die Daten für das zugehörige Werbemittel, also die Banner URL, Banner-Abmessungen und die ID der "sponsors"-Tabelle zur Zuordnung der Datensätze.

Mein Problem ist: Wenn ich aus der "banners"-Tabelle einen Datensatz lösche, habe ich einen"verwaisten" Datensatz bei den Sponsoren, dem kein Banner zugeordnet ist. Wie kann ich diese Datensätze aufrufen?

Mein letzter Versuch war diese LEFT JOIN Abfrage:

$result = mysql_query("SELECT * FROM sponsors LEFT JOIN banners ON sponsors.id = banners.id");
Damit erhalte ich eigentlich genau die Übersicht die haben möchte, mit allen Einträgen aus beiden Tabellen; korrekt verknüpft. Allerdings fehlt die ID bei den verwaisten Datensätzen!
Soweit logisch, da ja keine Zuordnung (sponsors.id = banners.id) wie oben angegeben stattfinden kann, denn in der Tabelle "banners" gibt es diese ID ja nicht mehr...

Also muß ein anderer Ansatz her, allerdings bin ich nach tagelangem rumprobieren mit meinem Latein am Ende. Ich hoffe ich habe mich verständlich ausgedrückt und es kann mir jemand auf die Sprünge helfen.

Vielen Dank im Voraus,
Carsten

Franzx
29.04.2008, 23:09:22
Hallo cl-griffin und herzlich Willkommen im Forum!

Warum sollen die verwaisten DS aufgerufen werden? Wie hängen diese DS mit den anderen Daten zusammen?

Warum löscht Du diese sogenannten verwaisten DS nicht, sobald in der banner Tabelle der DS gelöscht wird?

Grüße, Franzx

cl-griffin
30.04.2008, 09:26:29
Hallo Franzx,

es sollen einem Sponsor mehrere Banner zugeordnet werden können. Diese werden von Zeit zu Zeit auch gelöscht oder durch andere ersetzt. Sicher könnte man das Problem auch mit einer if/else-Anweisung lösen, so dass immer einem Sponsor mindestens ein Banner zugeordnet werden muss. Aber ich glaube eine Datenbankabfrage wäre die elegantere Lösung. So hätte ich die komplette Übersicht über alle Datensätze und kann einem Sponsor ohne Banner auch nachträglich noch eins hinzufügen.

Wäre schön, wenn es dafür eine Lösung gäbe...

Vielen Dank,
Carsten

Franzx
30.04.2008, 10:25:11
Moin,

wenns nur um die Anzeige der DS mit ohne Zuordnung zur banner.id geht:


$result = mysql_query("SELECT * FROM (sponsors,banners) WHERE sponsors.id = banners.id AND sponsors.id != banners.id");


Grüße, Franzx