Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 查询以显示已登录的用户及其朋友的残片?_Sql Server 2008 - Fatal编程技术网

Sql server 2008 查询以显示已登录的用户及其朋友的残片?

Sql server 2008 查询以显示已登录的用户及其朋友的残片?,sql-server-2008,Sql Server 2008,我创建了3个表: 登录(名字、姓氏、年龄、性别、电子邮件) Scraps(电子邮件、Scraps、posttime) 请求(电子邮件、frnemail、frnshpstatus、frnpic) 我需要一个连接这三个表的查询,以显示用户以及frnshpstatus为“Y”的人员就其请求表中的电子邮件发布的碎片。您可以尝试加入查询 DECLARE @usrEmail varchar(255) // Set the users email you are getting. SELECT l.*,

我创建了3个表:

  • 登录(名字、姓氏、年龄、性别、电子邮件)
  • Scraps(电子邮件、Scraps、posttime)
  • 请求(电子邮件、frnemail、frnshpstatus、frnpic)

我需要一个连接这三个表的查询,以显示用户以及frnshpstatus为“Y”的人员就其请求表中的电子邮件发布的碎片。

您可以尝试加入查询

DECLARE @usrEmail varchar(255) // Set the users email you are getting.

SELECT l.*, s.scrap, s.posttime
FROM Login l
LEFT JOIN Scraps s
ON l.email = s.email
WHERE l.email = @usrEmail

// Use a UNION query to also get scraps left by the users friend.
// Im assuming the friends would have entries in the login column as well.
UNION ALL

SELECT l.*, s.scrap, s.posttime
FROM Login l
LEFT JOIN Scraps s
ON l.email = s.email
WHERE l.email IN (SELECT frnshpEmail FROM requests WHERE email = @usrEmail AND frnshpStatus = 'Y') // This will create a list of all the users that are also have a frnshp with the user.
我不确定您是如何使用请求表的。如果你能给我更多的细节,我会尽力帮助你了解细节,但就我所拥有的,这应该会让你知道该怎么做。

试试这个:

select * from scraps where email in(
select r.frnemail
from [Login] l inner join requests r
on l.email=r.email and r.frnshpstatus = 'Y'
where l.email=@useremail)

您需要对您的数据库结构更具体一点。请求表中可能存在对同一用户的多个请求?了解您如何看待输出的结构会很有帮助。你想在“请求”列中列出一组人,还是将其与主查询分开?我只想知道我的个人信息的结构,比如facebook。多个请求的问题已经解决。默认frnshp状态为n。现在,用户向其他用户发送frnrqst,而如果用户接受其请求,则会向上查询请求表。“更新请求设置frnshpstatus='Y',其中Email='“+会话[“用户名”]+”,frnemail='“+str+”。请求表有冒号[电子邮件],[frnemail],[message],[frnshpstatus],[frnpic],[FRNSUPDATE]我修改了查询以使用联合查询从初始用户的朋友处获取所有片段。我会尝试使用变量而不是串接字符串。这在尝试避免sql注入时非常有帮助。谢谢,先生。这些答案更有用,但它只是显示用户朋友发布的片段,而不是发布的片段由他自己提出。你确定你抓住了这两个查询吗?有两个查询通过UNION语句连接。第一个查询将从用户处获取碎片,第二个查询将从朋友处获取碎片。在这里创建变量@useremail并设置值