假设我有一个schools
表和一个students
表。
students
表已连接到schools
表,其列为NAME
和BIRTHDATE
。
我需要所有学校,其中包含学生,他们被称为“ jim ”或“ mike “并且在同一天出生。
类似的东西:
select *
from schools s
join student st in st.schoolId = s.Id
where (...)
答案 0 :(得分:2)
你可以通过两次加入学生来实现这一目标
select distinct s.*
from schools s
join student st1
on st.schoolId = s.Id
join student st2
on st.schoolId = s.Id
where st1.birthdate = st2.birthdate and
st1.name = 'Jim' and
st2.name = 'Mike'
答案 1 :(得分:1)
您可以简单地使用条件聚合来查找schoolId
个birthdate
,其中join
和IN
(或使用select s.*
from schools s
join (
select distinct schoodId
from student
where name in ('jim', 'mike')
group by schoodId,
birthdate
having count(distinct name) = 2
) st on s.Id = st.schoodId;
)的名称与学校表一起获取相关细节。
private static int clickCount;
private static object _sender;
private void Button_Clicked(object sender, EventArgs e)
{
if (clickCount < 1)
{
TimeSpan tt = new TimeSpan(0, 0, 0, 0, 250);
_sender = sender;
Device.StartTimer(tt, ClickHandle);
}
clickCount++;
}
bool ClickHandle()
{
if (clickCount > 1)
{
Minus1(_sender);
}
else
{
Plus1(_sender);
}
clickCount = 0;
_sender = null;
return false;
}
答案 2 :(得分:1)
你一直在寻找:
select s.*
from schools s
cross apply (select birthdate, name from students st where st.schoolId = s.Id and st.name = 'Jim') studentJim
cross apply (select birthdate, name from students st where st.schoolId = s.Id and st.name = 'Mike') studentMike
where studentJim.birthDate = studentMike.birthDate
答案 3 :(得分:1)
可以通过生日使用表格相关内部的joi
select t1.id from (
select s.id , st.name, st.birthdate
from schools s
join student st in st.schoolId = s.Id
where st.name = 'jim'
) t1
inner join (
select s.id , st.name, st.birthdate
from schools s
join student st in st.schoolId = s.Id
where st.name = 'mike'
) t2 on t1.birthdate = t2.birthdate
答案 4 :(得分:0)
试试这个:
select * from schools
where schools.id IN (
(select
s1.schoolID
from
student s1 inner join student s2
on
(s1.schoolID = s2.schoolID) --seem school
AND (s1.birthdate = s2.birthdate) --seem birthdate
AND ((s1.name like '% jim %') OR (s1.name like '% mike %'))) --name jim or mike
)
希望这有帮助!
答案 5 :(得分:0)
另一种形式(我没有测试过)可能是:
SELECT *
FROM SCHOOLS S
INNER JOIN (
SELECT A.SCHOOL_ID
FROM STUDENT A
INNER JOIN STUDENT B ON A.BIRTHDATE = B.BIRTHDATE AND A.SCHOOL_ID= B.SCHOOL_ID
WHERE A.NAME = 'JIM'
AND B.NAME = 'MIKE'
) C ON S.ID = C.SCHOOL_ID