2017-07-02 59 views
-1

我有一个项目的表,它有一个user_email作为它属于谁的关键。通常我sql select然后从哪里选择

SELECT * FROM items WHERE user_email = $1 

我想添加一个表,其中包含用户的朋友。然后,ID希望能够通过第一做这样

SELECT friends_email FROM friends WHERE user_email = $1 

东西于是我会回来的一组friends_email(S)来改变我的查询得到什么,我想继续我的查询像

SELECT * FROM items WHERE user_email = (any of the friends_emails from the friends query) 

但我不知道如何设置。我搜索了'嵌套查询',一直没能找到类似的东西。我可能正在努力去做不可能的事情,但似乎我应该能够在逻辑上做到这一点。任何建议表示赞赏。由于

+0

你有这方面的任何代码在你的问题,包括好吗? – Serjio

+0

您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/Database)? –

回答

0

我想你想使用标准加入这样

SELECT i.* 
FROM friends f 
LEFT JOIN items i 
ON f.friends_email = i.user_mail 
WHERE f.user_email = $1 

参考: https://dev.mysql.com/doc/refman/5.7/en/join.html

+0

甜蜜的谢谢你。我结束了使用SELECT * FROM 项目 LEFT JOIN朋友 ON friends.friend_email = items.user_email WHERE friends.user_email = $ 1 –

+0

和你一样,但我的初级开发者的头脑更加清晰 –

+0

是的,它的可读性,但你很快会进入多个连接和子选择,这有助于习惯别名。 –