Question

I have a users table and friends table. The user with ID 1 has 4 friends (with IDs 2,3,4,13). I want to get names and surnames of users 2,3,4 and 13. I can to it with standard queries but it will slow down the process; querying for every friend. I didn't get how and what to use of left, joints, right joints, simple joints, ASs, ONs, ...

enter image description here

Was it helpful?

Solution

If you want to get the names of the friends for a user perhaps try something like so:

SELECT u.firstname, u.surname 
FROM friend f, user u
WHERE (f.Person1 = 1 OR f.Person2 = 1)

This should get a back a list of names in your user table (providing that is what you have named your friends in the user table) that are friends with userID 1

I'm guessing your friend table contains the foreign key IDs of the friends making up the partnership?

OTHER TIPS

I am assuming the friends table has a user_id field that corresponds to the id field in the users table.

Select name, surname from users
where id in 
(select user_id from friends where id=1)

This way, you can just plug the user id in the place where '1' is, and you will get all the respective friends. For example, if you want to find the name and surname of all the friends of the user id 5740 use:

Select name, surname from users
where id in 
(select user_id from friends where id=5740)
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top