0
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 = 上司、Adresse = 住所、Afdeling = 部署 (afdnr = 部署番号)、Medlem = メンバー

テーブル:

PERSON: personnr, fornavn, adresse, postnr
POST: postnr, district
FORMAND: personnr, afdnr
MEDLEM: personnr, afdnr
AFDELING: afdnr, afdname
4

2 に答える 2

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
于 2012-11-01T12:36:48.553 に答える
0

私があなたを正しく理解していれば(「(部門3の上司)と同じ郵便番号に住んでいる人」、そして上司が1人しかいないと仮定すると:

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

注:何かが欠けていない限り、説明を考えるとあなたのクエリは意味がありません。MEDLEM を介して PERSON に FORMAND に参加してpersonnrいます。つまり、上司のレコードのみが返されます (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

注:繰り返しになりますが、質問からの参加は奇妙だと思います。上記を参照。

于 2012-11-01T12:38:07.397 に答える