Mysql JOIN vraag voor de specialist.
Hoi mensen,
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!
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
Ok, voor de liefhebbers. Ik heb de volgende oplossing gevonden.
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
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
probeer eens de OR tussen haakjes
(n.user_id = 5 OR n.user_id = r.following)
zou moeten werken
(n.user_id = 5 OR n.user_id = r.following)
zou moeten werken
@daan
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.
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
sorry dat ik niet duidelijk genoeg ben.
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. ;-)
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. ;-)




