Mysql JOIN vraag voor de specialist.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Auke Jongbloed

auke Jongbloed

06/12/2009 15:42:00
Quote Anchor link
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!
Gewijzigd op 01/01/1970 01:00:00 door Auke Jongbloed
 
PHP hulp

PHP hulp

16/11/2024 10:54:17
 
Auke Jongbloed

auke Jongbloed

07/12/2009 08:53:00
Quote Anchor link
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
 
Daan

daan

07/12/2009 09:06:00
Quote Anchor link
probeer eens de OR tussen haakjes
(n.user_id = 5 OR n.user_id = r.following)

zou moeten werken
 
Robert Deiman

Robert Deiman

07/12/2009 09:22:00
Quote Anchor link
@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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'
;
?>
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Auke Jongbloed

auke Jongbloed

07/12/2009 09:30:00
Quote Anchor link
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. ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.