0
select
  person.adresse,
  person.fornavn,
  person.postnr,
  COUNT(PERSON.personnr)
from 
  PERSON 
    inner join 
  POST
    on POST.postnr = PERSON.postnr
    inner join
  PERSON as P 
    on PERSON.adresse = P.adresse
group by 
  PERSON.adresse, 
  PERSON.fornavn,
  PERSON.postnr
having 
  COUNT(PERSON.personnr) > 1

Adresse =住所、fornavn =名私は、複数の人が同じ住所に住んでいる人の住所、名、および郵便番号を表示する必要があります。同一のテーブルを結合することと関係があることは知っていますが、どのテーブルを結合するのが理にかなっているのか理解できないようです。

4

1 に答える 1

0

クエリの直接的な修正は、同じアドレスの別のand PERSON.fornavn <> P.fornavn人に参加していることを確認するのに役立つ条件を追加することです. 間違った結果が生成されるため、特に COUNT を削除できます。

select person.adresse, person.fornavn, person.postnr
from PERSON
join PERSON as P on PERSON.adresse = P.adresse and PERSON.fornavn <> P.fornavn
group by PERSON.adresse, PERSON.fornavn, PERSON.postnr
order by PERSON.adresse

これは機能しますが、最初に複数の人がいる住所を見つけてから、それらの住所にいる人を取得する方がおそらく効率的です。

SELECT P.adresse, P.fornavn, P.postnr
  FROM (
       SELECT adresse
         FROM PERSON
     GROUP BY adresse
       HAVING COUNT(*) > 1) G
  JOIN PERSON P ON P.adresse = G.adresse
于 2012-11-01T11:55:48.633 に答える