データベースの使用量を少なくするため、これを最小限のテーブルクエリに保持しようとしています。私はMicrosoft SQL Server管理サーバーを使用しています。最初のクエリで結果が返されずに返された場合は、2番目のクエリを実行します。
ユーザーの現在の状況によっては、何も返さないクエリがあります。この最初のクエリが結果を返さない場合は、2番目のクエリを実行します。
これは関数の内部であり、1行の列データを返す必要があります。私は例のために名前が変更されたクエリを含めます。私はデータベースを頻繁にアクセスされないようにテンポラリテーブルを作成した後に独自の最適化を行います。私はこの作業を最初にする方法を理解する必要があります。私のような何かをしたいと思い理論的には
--QEURY1
INSERT @tlbReturn (returnInfo1, returnInfo2)
SELECT TOP(1) returnInfo1, returnInfo2
FROM table1 AS t1a
INNER JOIN table1 AS t1b ON t1a.someData1 = t1b.someData1
AND t1a.someData2 = t1b.someData2
AND t1a.someData3 = t1b.someData3
AND t1a.someData4 = t1b.someData4
INNER JOIN table2 AS t2 ON t2.someData6 = t1b.someData7
AND t2.someData8 = t1b.someData9
WHERE t1a.someData10 = 'value'
AND t1b.someData11 IN ('value1', 'value2')
ORDER BY t1b.someDate DESC;
--QUERY2
INSERT @tlbReturn (returnInfo1, returnInfo2)
SELECT TOP(1) returnInfo1, returnInfo2
FROM table1 AS t1a
INNER JOIN table1 AS t1b ON t1a.someData1 = t1b.someData1
AND t1a.someData5 = t1b.someData5
INNER JOIN table2 AS t2 ON t2.someData6 = t1b.someData7
AND t2.someData8 = t1b.someData9
WHERE t1a.someData10 = 'value'
AND t1b.someData11 IN ('value1', 'value2')
ORDER BY t1b.someDate DESC;
、
IF EXISTS(QUERY1) THEN RETURN
ELSE RETURN QUERY2