Hallo Leute, komme eifnach nicht weiter mit meiner Query:
Ich möchte ALLE Fotos eines bestimmten Benutzers anzeigen lassen, exklusive derer, die in einer Berechtigungsgruppe sind.
Folgende Tabellen:
USERS - userID name nick .........
GALLERYGROUPS - groupID name alias .........
GALLERYGROUP2USERS - groupID userID
GALLERYGROUP2FOTO - groupID fotoID
GALLERYFOTOS - fotoID userID(=erstellerID) ..........
Semantik:
.) Wenn in GALLERYGROUP2FOTO zu einem Foto KEIN eintrag existiert -> Foto ist für ALLE Sichtbar (= auf jeden fall auslesen und anzeigen lassen)
.) Wenn in GALLERYGROUP2FOTO zu einem Foto ein eintrag mit groupID = 0 existiert -> Foto ist für ALLE Sichtbar
.) existiert hingegen mindestens ein Eintrag in dieser Tabelle zu einem Foto -> Foto ist genau für diese Gruppe sichtbar (es kann zu einem Foto auch mehrere Gruppen/Einträge geben)
Hier meine versuchte Query (leider bekomme ich dazu immer ein Empty 0 Rows)
Umgeschrieben (für einige besser leslich):
Ich komm einfach nicht mehr weiter, nach Stundenlangen Testen bekomme ich entweder 20000 rows heraus (bei momentan 10 Testbildern) oder Empty (0).
bin für jede hilfe dankbar!
Ich möchte ALLE Fotos eines bestimmten Benutzers anzeigen lassen, exklusive derer, die in einer Berechtigungsgruppe sind.
Folgende Tabellen:
USERS - userID name nick .........
GALLERYGROUPS - groupID name alias .........
GALLERYGROUP2USERS - groupID userID
GALLERYGROUP2FOTO - groupID fotoID
GALLERYFOTOS - fotoID userID(=erstellerID) ..........
Semantik:
.) Wenn in GALLERYGROUP2FOTO zu einem Foto KEIN eintrag existiert -> Foto ist für ALLE Sichtbar (= auf jeden fall auslesen und anzeigen lassen)
.) Wenn in GALLERYGROUP2FOTO zu einem Foto ein eintrag mit groupID = 0 existiert -> Foto ist für ALLE Sichtbar
.) existiert hingegen mindestens ein Eintrag in dieser Tabelle zu einem Foto -> Foto ist genau für diese Gruppe sichtbar (es kann zu einem Foto auch mehrere Gruppen/Einträge geben)
Hier meine versuchte Query (leider bekomme ich dazu immer ein Empty 0 Rows)
Code:
SELECT a.fotoID, a.name, a.alias, unix_timestamp(a.changeTime), a.teaserImgType, a.description FROM GALLERYFOTOS=a JOIN GALLERYGROUP2FOTO=g1 ON ((a.fotoID=g1.fotoID AND g1.groupID=0) OR (a.fotoID=g1.fotoID AND g1.groupID IS NULL)) JOIN GALLERYGROUP2USERS=g2 ON (a.fotoID = g1.fotoID AND g1.groupID = g2.groupID AND g2.userID = $Session(UserID)) WHERE a.userID='$photoCreatorID'
Umgeschrieben (für einige besser leslich):
PHP:
$sql = 'SELECT
a.fotoID,
a.name,
a.alias,
unix_timestamp(a.changeTime),
a.teaserImgType,
a.description
FROM
GALLERYFOTOS AS a
JOIN
GALLERYGROUP2FOTO AS g1
ON
((a.fotoID = g1.fotoID AND g1.groupID = 0)
OR
(a.fotoID = g1.fotoID AND g1.groupID IS NULL))
JOIN
GALLERYGROUP2USERS AS g2
ON
(a.fotoID = g1.fotoID
AND
g1.groupID = g2.groupID
AND
g2.userID = ' . $_SESSION['UserID'] . ')
WHERE
a.userID = ' . $photoCreatorID;
Ich komm einfach nicht mehr weiter, nach Stundenlangen Testen bekomme ich entweder 20000 rows heraus (bei momentan 10 Testbildern) oder Empty (0).
bin für jede hilfe dankbar!