0

さて、次のようなデータベース設定があります。

Client {Clientt#, FirstName, LastName, Email, city};
RType {TName, Price, TRooms};
Location {Confirm#, Arrival, Departure, Origin, Client# (references Guest), Type (references RoomType)} 

すべてのタイプに属しているすべてのクライアントのリストを提供する SQL ステートメントをほとんど作成する必要があります。

私はこれを書きましたが、うまくいきません:

SELECT Client#, FirstName, LastName, Type
FROM Client, Location
WHERE Client.Client# = Location.Client# and Location.Type = (select count(DISTINCT TName) from RType);

誰かが私を助けることができますか?

4

3 に答える 3

1

having句を使用してこれを行います。問題は、どのクライアントが RType テーブルと同じ数のロケーションを持っているかということです。これは、すべての Location.Types がこのテーブルにあることを前提としています。

SELECT Client#
FROM Location l
group by Client#
having count(distinct l.type) = (select count(DISTINCT TName) from RType)

本当に必要な場合は、クライアントからの追加情報に参加できます。

于 2012-12-10T22:38:08.737 に答える
0

その COUNT 関数は、そこにある型の数を返しているため、Location.Type = 4 でない限り、それは機能しません。COUNT を削除するか、以下のようにテーブルを結合します。

SELECT t1.Client#, t1.FirstName, t1.LastName, t2.Type
FROM Client t1
    INNER JOIN Location t2
        ON t1.Client# = t2.Client#
于 2012-12-10T22:41:06.000 に答える
0

これを使って:

SELECT Client#, FirstName, LastName, Type
FROM Client, Location
WHERE Client.Client# = Location.Client# and 
Location.Type IN (select DISTINCT TName from RType)
于 2012-12-10T22:37:37.123 に答える