2011-01-03 10 views
1

私はMaximo Asset Management System(バージョン7.1.1.6)を使用しています。特定の人のDo Not Callリストを含む開始センターに結果セットを表示しようとしています。ただし、結果セット(「department = 'ABC'」などの適切な「where」句を含むPeopleセクションに保存されたクエリ)に対してクエリを使用する場合、電話番号または電子メールアドレスを次のように選択することはできません。表示する列。これは、人のテーブルの「プライマリ電話」フィールドと「プライマリ電子メール」フィールドが実際には存在しないためです。 PeopleアプリケーションでPhoneテーブルとEmailテーブルに接続され、personidカラムに結合された仮想フィールドです。私は、データベース内の次のクエリを実行する場合、私は私がしたいことの結果セットを取得:人物表の開始センター結果セット

select * from dbo.person as p 
left outer join dbo.phone as ph on p.personid=ph.personid and ph.isprimary=1 
left outer join dbo.email as e on p.personid=e.personid and e.isprimary=1 

残念ながら、結果セットのため、あなたが句「FROM」だけ編集することができますへのアクセスを持っていません」 WHERE句。

プライマリ電話機とプライマリ電子メールのPersonテーブルに2つの新しい列を追加する以外にも、これを解決する方法はありますか?私はそれをしたいとは思わないが、もしできれば私はできる。これについて

+0

悲しいことに、私はこの解決策をあきらめ、personテーブルに2つのカラムを追加し、電子メールテーブルと電話テーブルに変更が加えられたときにコピー/削除のトリガを追加しました。私はこの質問を削除すると信じていますが、他人がそれから学ぶことができるようにここに残した方が良いかどうかはわかりません。 –

答えて

1

どのようにwhere句

... where (select count(*) from dbo.phone ph where :personid = ph.personid and ph.isprimary=1) > 0 and (select count(*) from dbo.email e where :personid = e.personid and e.isprimary=1) > 0 

のために私はまた、データベースの構成アプリケーション内の関係を作成するソリューションを考えることができますが、上記のクエリは、より単純です。

関連する問題