根据常用电子邮件地址加入SQL结果集

时间:2018-03-14 03:38:56

标签: sql sql-server

我有一个table,其中包含学生和家长记录。父记录和学生记录中都有一个与记录匹配的公共字段(电子邮件地址)(父母和学生具有相同的电子邮件地址)。

  

我希望我的查询找到常见的电子邮件地址并返回每个地址   学生记录但它还必须包括一个字段(Mifare)   父母记录。

所以我试图加入和哪里的条款,但我得到了疯狂的结果。我也在考虑使用with子句。

预期结果是

enter image description here

基本脚本是:

Select   extid,  first_name,  last_name,  commonemail, designation,mifare  
from students  

请协助一个基本的编码 - 没有程序等...只是为新手提供简单的帮助!

谢谢大家!

4 个答案:

答案 0 :(得分:1)

以下是您的问题的解决方案:

SELECT stud.ExtId,
stud.FirstName, 
stud.LastName, 
stud.CommonEmail,
stud.Designation,
stud.Mifare,
prnt.Mifare
FROM Students AS stud
INNER JOIN Students AS prnt
ON stud.CommonEmail = prnt.CommonEmail
AND stud.Designation = 'Student'
AND prnt.Designation = 'Parent'

您还可以点击演示链接:

  

http://sqlfiddle.com/#!9/5b790b/1

答案 1 :(得分:0)

我不确定你是否可以尝试这种方式通过电子邮件加入两个表只选择指定的学生。

Select
    st.extid,
    st.first_name,
    st.last_name,
    st.commonemail,
    st.designation,
    st. mifare
    pr.parentmifare
    from students st  inner join students pr on st.commonemail=pr.commonemail 
  where pr.designation='student' and st.designation='parent'

答案 2 :(得分:0)

Select s.*
p.mifare
from students s
left join students p on p.commonemail=s.commonemail and p.Designation='Parent'

答案 3 :(得分:0)

尝试使用以下子查询

Select  *,
(Select Mifare from students b where b.Designation = 'Parent' and b.commonemail = a.commonemail) as ParentMifare
from students a