This "cross" of data is aptly named a "JOIN". There are different flavors of JOINs, but for you, a simple "inner" join should suffice:
SELECT
f.*
FROM
FRIENDS f
JOIN
USERS u
ON
r.FRIEND_ID = u.USER_ID
WHERE
f.FRIEND_ID = ...
سؤال
I have two tables.
TABLE FRIENDS
- Columns/Values
ID, FRIEND_ID, FRIEND_NAME
1, 34, DAMON
1, 17, RICHARD
1, 56, DANIEL
1, 65, CHARLIE
2, 15, PRISCILA
2, 17, RICHARD
2, 45, JOHN
2, 56, DANIEL
TABLE USERS
- Columns/Values
USER_ID, NAME
1, JUNIOR
2, SAMANTHA
15, PRISCILA
45, JOHN
56, DANIEL
How do I do a SELECT
that query all the rows from table FRIENDS
where friends.USER_ID = X
and cross reference with all the rows in table USERS
where the friends.FRIEND_ID = users.USER_ID
.
Basically I want to query all the friends of a user(from table FRIENDS
, identified by friend_id
) that also exist in the table USERS
(if they exist in the table friends.FRIEND_ID
= users.USER_ID
).
Sorry for the bad english, it's not my native language.
المحلول
This "cross" of data is aptly named a "JOIN". There are different flavors of JOINs, but for you, a simple "inner" join should suffice:
SELECT
f.*
FROM
FRIENDS f
JOIN
USERS u
ON
r.FRIEND_ID = u.USER_ID
WHERE
f.FRIEND_ID = ...
نصائح أخرى
First solution : using JOIN
SELECT f.*
FROM friends f JOIN users u ON u.USER_ID = f.FRIEND_ID
AND u.USER_ID = '?'
Second solution : using EXISTS
SELECT f.*
FROM friends f
WHERE EXISTS (SELECT *
FROM users
WHERE USER_ID = f.FRIEND_ID
AND USER_ID = '?')