login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Resultaten van een (sub)query joinen met een tabel en daar een query op doen? (Opgelost)

Offline Pieterhendri - 29/07/2011 10:39
Avatar van PieterhendriLid Hoi

Ik zoek even m'n toevlucht tot dit forum want ik kom er niet uit.

Dit is het probleem:

Ik heb twee tables, één met users_id en een user_name,
de tweede heeft users_id en users_id van vrienden.

Als resultaat zou ik graag de namen van de vrienden hebben, ipv de id's ervan. Zo dus:

-------------------------------------
|user_id | user_name |
-------------------------------------
|1 | jan |
|2 | tom |
|3 | fret |
-------------------------------------


-------------------------------------
|user_id | vriend_id |
-------------------------------------
|1 | 3 |
|1 | 2 |
|2 | 1 |
|3 | 1 |
-------------------------------------

result

------------------------------------------------------
|user_id | vriend_id | vriend_naam |
------------------------------------------------------
|1 | 3 | fret |
|1 | 2 | tom |
|2 | 1 | jan |
|3 | 1 | jan |
------------------------------------------------------

result voor één user: bijvoorbeeld wie is vriend van jan? (user1)

result

------------------------------------------------------
|user_id | vriend_id | vriend_naam |
------------------------------------------------------
|1 | 3 | fret |
|1 | 2 | tom |
------------------------------------------------------

Dus uiteindelijk zou ik de "namen" van de vrienden in een result-set willen voor één user_id. Jan heeft user_id 1 en vrienden Fret en Tom hebben user_id 3 resp. 2. De twee tabellen zo combineren dat ik één user_id aan zijn/haar vrienden mét naam kan koppelen lukt me niet. Heeft iemand een suggestie hoe ik de JOIN of subquery moet maken?

Alvast bedankt

3 antwoorden

Gesponsorde links
Offline FrankL - 29/07/2011 12:16
Avatar van FrankL Lid
  1. SELECT user_name FROM users INNER JOIN vrienden WHERE vrienden.user_id = "1" AND users.user_id=vrienden.vriend_id;


Ik dacht dat ie zo moest. Lang geleden dat ik zo'n soort query heb gebruik, maar dat was het volgens mij.
Offline Martijn2008 - 29/07/2011 13:56 (laatste wijziging 29/07/2011 14:02)
Avatar van Martijn2008 PHP beginner Ik heb je opzet even nagemaakt in SQL Server en heb een aantal aannames gedaan bijvoorbeeld je tabelnamen en attributen heb ik kwa naamgeving wat gewijzigd. Het aanmaken van de database en tabellen heeft in SQL Server een andere syntax. De query werkt waarschijnlijk ook goed op MySQL. Laat je even horen of het werkt? Succes!

  1. CREATE DATABASE MemberSystem
  2.  
  3. USE MemberSystem
  4.  
  5. -- Code voor het aanmaken van tabel tblUser
  6. CREATE TABLE tblUser
  7. (
  8. UserID INT NOT NULL PRIMARY KEY IDENTITY,
  9. UserName VARCHAR(50) NOT NULL
  10. )
  11.  
  12. -- Code voor het aanmaken van tabel tblFriend
  13. CREATE TABLE tblFriend
  14. (
  15. FriendID INT NOT NULL REFERENCES tblUser(UserID) ON UPDATE CASCADE ON DELETE CASCADE,
  16. UserID INT NOT NULL REFERENCES tblUser(UserID) ON UPDATE NO ACTION ON DELETE NO ACTION
  17. )
  18.  
  19. -- Code voor het toevoegen van een aantal namen aan tblUser
  20. INSERT INTO tblUser (UserName) VALUES
  21. ('Cindy'),
  22. ('Martijn'),
  23. ('Larissa'),
  24. ('Joel'),
  25. ('Titjes'),
  26. ('Lindsey'),
  27. ('Lisa'),
  28. ('Stijn')
  29.  
  30. -- Code voor het toevoegen voor een paar relaties
  31. INSERT INTO tblFriend (FriendID, UserID) VALUES
  32. (2, 1),
  33. (3, 1),
  34. (4, 1),
  35. (5, 1),
  36. (8, 1)
  37.  
  38. -- De query die je nodig hebt voor het ophalen/tonen van die relaties
  39. -- LET OP! In de WHERE en OR clausule staat een 1. Deze is variabel en dien je dynamisch te vullen.
  40. SELECT u.UserID, f.FriendID, u.UserName AS vriend_naam
  41. FROM tblUser AS u
  42. INNER JOIN tblFriend AS f
  43. ON (u.UserID=f.FriendID)
  44. WHERE (f.FriendID=1)
  45. OR (f.UserID=1)
Offline Pieterhendri - 29/07/2011 17:51
Avatar van Pieterhendri Lid Hallo, bedankt voor de nuttige info! Dit heeft me zeker een eind op weg geholpen!
Martijn, je voorbeeld was heel duidelijk!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s