hallo allemaal,
ik zit met een probleem in mijn MySQL code waar ik niet uitkom.
ik heb 2 columns in mijn MySQL data base
column 1 posts:
id, user_id, type, text, time
en column 2 friends:
id, user_id, user_id_2, time

nu wil ik graag dat er op de home pagina een overzicht komt geselecteerd op tijd met posts van je vrienden en jezelf
ik heb het volgende:

SELECT *
FROM `friends`, `posts`
WHERE friends.user_id="' . $user_id . '" AND friends.status="friends"
OR friends.user_id_2="' . $user_id . '" AND friends.status="friends"
OR posts.user_id="'.$user_id.'"
ORDER BY `time`

waarbij $user_id de id van de ingelogde gebruiker bevat
maar dit zorgt ervoor dat als je geen vrienden hebt dat je je eigen posts niet ziet.
misschien zitten er verdere bugs in maar omdat ik er niet mee verder kom kan ik deze nog niet vinden
weet iemand hoe dit kan?
alvast bedankt

SELECT u.id, u.name, p.text, p.time, u.profilepic, u.lastname, p.created FROM posts p
JOIN users u
ON p.user_id=u.id
WHERE p.user_id IN(
    SELECT u.id FROM users u
    JOIN friends f
    ON u.id=f.user_id OR u.id=f.user_id_2
    WHERE f.status="friends" AND (f.user_id="$user_id" OR f.user_id_2="$user_id")
    GROUP by u.id
)
ORDER BY p.created DESC';

Dit is wat ik op dit moment heb maar het is hier toch niet mogelijk om tussen de in() iets toe te voegen? Aangezien je hier vrienden selecteert.
Mja, maar als je geen vrienden hebt dan levert de SELECT van regel 5 t/m 9 niets op, waardoor je IN() effectief leeg is.
Msql is niet mijn beste taal maar achter in() moet komen

OR p.user_id="$user_id"

is dat een goede oplossing?
Als dat werkt dan is dat een goede oplossing :). Of je gaat voor de verdeel-en-heers strategie, waarbij je je probleem opdeelt in verschillende deelproblemen.
Perfect! Het werkt nu zoals ik het graag wou. Bedankt voor jullie tijd, moeite en hulp! :)

Reageren