Mysql JOIN vraag voor de specialist.
Ik heb twee tabellen die ik will koppelen en dat lukt me maar niet.
Vandaar de vraag voor hulp.
Ik heb twee Mysql tabellen:
note
------------------------------------
| id | user_id | type | note |
------------------------------------
relation
----------------------------------
| id | user_id | following |
----------------------------------
Nu wil ik alle notes van een gebruiker ophalen, zeg user_id = 5
Maar ik wil ook alle notes ophalen van de mensen waar ik een relatie mee heb. dus waar following = 5 (of wellicht beter following = user_id)
Nu heb ik de volgende query gemaakt.
SELECT n.id, n.user_id, n.type, n.note
FROM note AS n
LEFT JOIN relation AS r ON n.user_id = r.user_id
WHERE n.user_id = 5
OR n.user_id = r.following
GROUP BY n.id
Dit werk niet, ik krijg alleen mijn eigen notes te zien dus de notes met user_id = 5
Kan iemand me vertellen hoe de join er uit zou moeten zien?
thanks!
Gewijzigd op 01/01/1970 01:00:00 door Auke Jongbloed
Wellicht interesant...
SELECT n.id, n.user_id, n.type, n.note
FROM note AS n
LEFT JOIN relation AS r ON n.user_id = r.user_id
WHERE n.user_id = 5
OR n.user_id IN (SELECT r.following FROM relation r WHERE r.following = n.user_id)
ORDER BY n.created_at DESC
Mochten er op of aanmerkingen zijn hoor ik ze natuurlijk graag
(n.user_id = 5 OR n.user_id = r.following)
zou moeten werken
Volgens mij als je die manier van jou gebruikt gaat het ook niet goed. Zoeken naar r.following = n.user_id kan wel, maar Je moet iedereen hebben waarbij de r.following ook 5 is.
Volgens mij moet dat op zo'n manier kunnen als hieronder.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sql = '
SELECT n.id, n.user_id, n.type, n.note
FROM note AS n
LEFT JOIN relation AS r ON n.user_id = r.user_id OR n.user_id = r.following
WHERE n.user_id = 5
GROUP BY n.id
ORDER BY
n.created_at DESC';
?>
$sql = '
SELECT n.id, n.user_id, n.type, n.note
FROM note AS n
LEFT JOIN relation AS r ON n.user_id = r.user_id OR n.user_id = r.following
WHERE n.user_id = 5
GROUP BY n.id
ORDER BY
n.created_at DESC';
?>
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Mijn tweede post is de query die wel werkt.
Ik wilde hem alleen even delen en laten weten dat ik een oplosisng had.
@robbert, Ik heb jou oplossing ook nog geprobeerd maar die werkt niet.
Sorry nogmaals voor de onduidelijkheid. Mijn code werkt dus.
ik hoor echter natuuurlijk graag op of aanmerkingen. ;-)