select PERSON.fornavn, PERSON.efternavn, PERSON.postnr, POST.distrikt
from PERSON inner join POST on POST.postnr = PERSON.postnr
inner join MEDLEM on PERSON.personnr = MEDLEM.personnr
inner join FORMAND on MEDLEM.personnr = FORMAND.personnr
group by PERSON.fornavn, PERSON.efternavn, PERSON.postnr, POST.distrikt, FORMAND.afdnr
having FORMAND.afdnr = 3
order by PERSON.fornavn
我需要向与第3部门的老板展示相同邮政编码的人员展示,但结果毫无意义。
Fornavn =名字,Formand = boss,Adresse = adress,Afdeling = Department(afdnr = department nr。),Medlem =成员
表格:
PERSON: personnr, fornavn, adresse, postnr
POST: postnr, district
FORMAND: personnr, afdnr
MEDLEM: personnr, afdnr
AFDELING: afdnr, afdname
答案 0 :(得分:2)
select PERSON.fornavn, PERSON.efternavn, PERSON.postnr, POST.distrikt
from PERSON inner join POST on POST.postnr = PERSON.postnr
inner join MEDLEM on PERSON.personnr = MEDLEM.personnr
inner join FORMAND on MEDLEM.personnr = FORMAND.personnr
where FORMAND.afdnr = 3
group by PERSON.fornavn, PERSON.efternavn, PERSON.postnr, POST.distrikt, FORMAND.afdnr
order by PERSON.fornavn
尝试:
where FORMAND.afdnr = 3
而不是
having FORMAND.afdnr = 3
答案 1 :(得分:0)
如果我理解你的权利(“与第3部门的老板一样生活在同一邮政编码上的人”,并且假设只有一个老板:
select PERSON.fornavn, PERSON.efternavn, PERSON.postnr, POST.distrikt
from PERSON
inner join POST on POST.postnr = PERSON.postnr
where PERSON.postnr = (SELECT pf.postnr
FROM FORMAND f
inner join PERSON pf ON f.personnr = pf.personnr
WHERE f.afdnr = 3)
order by PERSON.fornavn
注意:除非我遗漏了某些内容,否则根据描述您的查询没有意义。您正在personnr
通过MEDLEM加入PERSON到FORMAND,这意味着您只能获得老板的记录(PERSON.personnr = FORMAND.personnr)。
注意:如果有多个老板,您可以将=
子句中的WHERE
更改为IN
,以使所有与之相同的邮政编码中的人员老板。
如果我读错了你的意思,你实际上是指“部门3的(与老板的邮政编码相同的人)”,试试:
select p.fornavn, p.efternavn, p.postnr, POST.distrikt
from PERSON p
inner join POST on POST.postnr = p.postnr
inner join MEDLEM on p.personnr = MEDLEM.personnr
inner join FORMAND on MEDLEM.afdnr = FORMAND.afdnr
inner join PERSON pf on FORMAND.personnr = pf.personnr AND pf.postnr = p.postnr
where MEDLEM.afdnr = 3
order by PERSON.fornavn
注意:同样,我相信你加入这个问题很奇怪。见上文。