0

2セットのデータを表示しようとしています。最初のセットは、テナントを含む複合施設を所有する人々を示しています。2 番目のセットは、テナントを持たないコンプレックスを所有する人々を示しています。

これは複雑な名前の完全なリストです:

COMPN
-----
CM700
CM350
CM300
CM600
CM900
CM200
CM100

現在賃貸契約を結んでいるものを除外する方法を見つけました。次のコマンドを使用しました。

    SELECT DISTINCT customer.custlname,
                customer.custfname
FROM customer,
     own,
     rental
WHERE own.custid = customer.custid
  AND rental.compname = own.compname;

次に、次の結果が得られます。

CUSTLNAME  CUSTFNAME
---------- ----------
Pearson    Robert
Garnet     Kylie
Agassi     Pamela

これは、次の値に対応します。

COMPN
-----
CM350
CM900
CM200

私は現在、複合施設にテナントがいない人々を表示する方法を見つけようとしています。これにアプローチする方法が正確にはわかりません。私はしばらくそれをいじっていましたが、使用する正しいオペレーター手順がよくわかりません。

ありがとう

テーブルに関する追加情報:

お客様

CUSTID CUSTLNAME  CUSTFNAME  BDATE     S MGR

CUSTID は PK です。

自分の:

CUSTID COMPNAME

CUSTID は、テーブル Customer を参照する FK です。COMPNAME は、テーブル Complex を参照する FK です。

レンタル:

CUSTID COMPNAME   APTNUM

CUSTID は、テーブル Customer を参照する FK です。COMPNAME は、テーブル Complex を参照する FK です。APTNUM は、テーブル アパートメントを参照する FK です。

4

1 に答える 1

1

現在の情報から

select distinct customer.custlname, customer.custfname
from customer
left join own on own.custid = customer.custid
inner join rental on rental.compname = own.compname
where own.custid is null

編集: 1

複合施設にテナントがいない人を表示する方法

NOT INを使用

以下のクエリは、テナントが存在しないCOMPNAMEを提供します。

select Complex.COMPNAME
from Complex,
Where COMPNAME NOT IN
(select COMPNAME
from rental)

編集2:

OP ウィッシュリストによると

SELECT DISTINCT customer.custlname,
                customer.custfname
FROM customer,
     own,
     rental
WHERE own.custid = customer.custid
AND rental.compname = own.compname
AND rental.compname in (select Complex.COMPNAME
                        from Complex,
                        Where COMPNAME NOT IN
                        (select COMPNAME
                        from rental))
于 2013-04-15T05:45:06.780 に答える