次のSQLを使用して、プロジェクトと関連する請負業者およびドキュメントサイズ情報を3つの異なるテーブルから返します。順序は次のとおりです。最初の請負業者がシステムに入力された後、各契約者ごとにプロジェクトが入力され、文書サイズ(シート)が入力されます。これまでのところは良い、次のSQL戻り細かい適切な請負業者やシートと一緒にすべてのプロジェクト:IF-Elseを使用したSQL Serverのマルチテーブル選択
SELECT
dbo.generalcontractors.name,
dbo.Projects.*,
dbo.sheets.sheetsize,
dbo.sheets.sheetid
FROM
dbo.generalcontractors
INNER JOIN dbo.Projects ON (dbo.generalcontractors.uid = dbo.Projects.generalcontractorid)
INNER JOIN dbo.sheets ON (dbo.Projects.sheetid = dbo.sheets.sheetid)
ORDER BY
dbo.Projects.projectdate DESC
さて、何が起こる必要があることは、個々のプロジェクトのための書類がProjectDocuments
テーブルに入力されていることです。私は、文書がProjectsDocuments
テーブルに存在することを確認し、適切な値を返す次のコードを持っています。現在、プロジェクトIDはハードコードされており、動作します。
質問:私は上記のSQLに次のSQLを組み合わせることができますか?私はProjectsDocument
テーブルから一致する行を表示するクエリ結果を探していますが、一致するものが見つからない場合は 'Not Found'と表示されます。
これは、SQL Serverの2005
感謝です!
IF (SELECT COUNT(*) FROM dbo.projectsdocuments, dbo.Projects
WHERE projectsdocuments.projectid = Projects.projectid
AND Projects.projectid = 5) > 0
SELECT *
FROM projectsdocuments
ELSE
SELECT 'Not Found' AS HighPrice
@marc_s。ありがとう。これをあきらめるには早すぎる。私はこれをすべて1つのクエリで返すことができる他の方法? – IrfanClemson
問題のテーブルの "CREATE"ステートメントを投稿できますか?そうすればSSMSを使ってデバッグすることができます。 –
これに従って:http://www.mssqltips.com/sqlservertip/1667/sql-server-join-example/ RIGHT OUTER JOINも動作するはずです。私の現在のsqlにこれが追加されています: '右外部ジョインdbo.projectsdocuments ON(Select * from Projects)'がエラーを取得しています: '条件が期待されるコンテキストで指定された非ブール型の式が' ORDER 'の近くに指定されています。 '(上記の元のSQLのORDERを参照してください)。ありがとう! – IrfanClemson