Beziehung über verschiedene Tabellen

Gifty43

Erfahrenes Mitglied
Moin Jungs (und Mädels? ;-) )

Ich hab hier in Problem mit meiner Spieledatenbank. Gerade arbeite ich am Ausgabescript für die Releaseliste.

Dabei brauche ich folgende Tabellen:

db_games (Hier sind die Spiele gespeichert)
Struktur: ID,titel,releasedate,genreid,herstellerid,publisherid,...

db_genres (Die verschiedenen Genres)
Struktur: ID,genre

db_firmen (Alle Firmen - Hersteller und Publisher)
Struktur: ID,name

Dazu habe ich folgende Abfrage gemacht:
Code:
SELECT * FROM db_games p, db_genres g, db_firmen m WHERE p.releasedate > '$datum'  AND p.genreid = g.id AND p.herstellerid = m.id AND p.publisherid = m.id ORDER BY titel DESC

Es funktioniert nun alles soweit. Nur: Es werden nur die Spiele ausgegeben, bei denen der Hersteller und der Publisher die gleiche ID (Gleiche Firma) haben. Es sollten aber auch Spiele ausgegeben werden, bei welchen der Hersteller nicht auch noch der Publisher ist.

Hat jemand eine Idee wie ich das verwirklichen könnte?

Danke schonmal im voraus.
 
Versuch es mal mit
Code:
SELECT * FROM db_games p, db_genres g, db_firmen m WHERE p.releasedate > '$datum'  AND p.genreid = g.id AND (p.herstellerid = m.id or p.publisherid = m.id) ORDER BY titel DESC
 
Ja das scheint zu funktionieren.

Nur: Jetzt werden alle Spiele, bei denen der Hersteller nicht gleichzeitig der Publisher ist, doppelt angezeigt.

Auch ein DISTINCT kann das Problem nicht lösen.:confused:


EDIT: Das zweite Problem ist, dass unter Hersteller und Publisher nur jeweils die ID, nicht aber der Name aus der anderen Tabelle steht. Da ja beide in der gleichen Tabelle stehen, wie kann ich dem Script jetzt sagen, welchen Namen er zu welcher ID nehmen soll?
 
Zuletzt bearbeitet:
Probier's mal hiermit:
Code:
SELECT
    `games`.*,
    `genres`.`genre`,
    `hersteller`.`name` AS `hersteller`,
    `publisher`.`name` AS `publisher`
FROM
    `db_games` `games`,
    `db_genres` `genres`,
    `db_firmen` `hersteller`,
    `db_firmen` `publisher`
WHERE
    `games`.`genreid` = `genres`.`ID`
AND `games`.`herstellerid` = `hersteller`.`ID`
AND `games`.`publisherid` = `publisher`.`ID`
 
Yehaaaaaaa... klappt wunderbar :)
Und ich versteh jetzt auch wie's gelöst wird. THX nochmals ;)

Eine Frage hätt ich noch:

In der WHERE Klausel will er mit folgendes nicht annehmen:
Code:
STR_TO_DATE(`games.releasedate`, '%d.%m.%Y') > '$datum'

Im Script gibt er mir dann einfach nichts aus.
An was kann das liegen?
 
Vielleicht so?
Code:
STR_TO_DATE(`games`.`releasedate`, '%d.%m.%Y') > '$datum'

Aber warum verwendest du für das Feld releasedate nicht gleich den Datentyp DATE?
 
Zurück