このディレクトリの索引

# 出典 :: SQL質疑応答スレ 9問目 #314 # ユーザーが複数の資格を持っているというありがちなテーブル構成があるのですが、 # 「資格1または資格2を持っているユーザー」の検索はできるのですが、 # 「資格1と資格2」を両方持っているユーザー」の検索ができません。 # # データベースはpostgresです。 # # テーブル構成はこんな感じです。 # # ユーザーテーブル # [ユーザーID、名前] # 001,山田 # 002,鈴木 # # 資格テーブル # [ユーザーID、資格] # 001,資格1 # 001,資格2 # 002,資格1 # ユーザーID('001',山田). ユーザーID('002',鈴木). 資格('001',資格1). 資格('001',資格2). 資格('002',資格1). '「資格1と資格2」を両方持っているユーザーの名前'(X) :- setof(_名前,[_ユーザーID,_名前] ^ '「資格1と資格2」を両方持っているユーザーの名前'(_ユーザーID,_名前),X). '「資格1と資格2」を両方持っているユーザーの名前'(_ユーザーID,_名前) :- '「資格1と資格2」を両方持っている'(_ユーザーID), 'ユーザーの名前'(_ユーザー,_名前). '「資格1と資格2」を両方持っている'(_ユーザーID) :- 資格(_ユーザーID,資格1), 資格(_ユーザーID,資格2), 'ユーザーの名前'(_ユーザー,_名前) :- ユーザーID(_ユーザーID,_名前).