For at få alle indlæggene fra en given bruger (id=145) og alle de brugere den følger indlæg, sammen med brugeroplysningerne for hvert indlæg, ville jeg omskrive forespørgslen til at bruge union
i stedet for eller, hvilket forenkler logikken. Det første udvalg får indlæggene fra den givne bruger, det andet får indlæggene fra de brugere, det følger:
(SELECT P.id as postid,
P.caption,
P.date,
U.id as userid,
U.fullname,
U.username,
FROM USERS AS U
INNER JOIN Posts AS P ON P.userid = U.id
WHERE U.id = 145)
UNION
(SELECT P.id,
P.caption,
P.date,
U.id,
U.fullname,
U.username,
FROM Activity AS A
INNER JOIN USERS AS U ON A.IdOtherUser=U.id
INNER JOIN Posts AS P ON P.userid = U.id
WHERE A.id = 145)
ORDER BY postid DESC
Forudsætninger:
-
Activity.id-feltet repræsenterer brugeren, som følger den anden bruger. Hvis ikke, skal du ændre feltnavnet til det relevante.
-
Opfandt brugerid-feltet i tabellen Indlæg, der repræsenterer den bruger, der sendte indlægget. Venligst brug det korrekte feltnavn i stedet.