私はこれらの2つのSQLクエリを組み合わせるのに苦労しています。 2つのテーブルからデータを選択するオリジナルのクエリがあり、関連する列はTasks.CustomerIDとCustomers.CustomerIDです。それは基本的にタスクです。* + Customers.Nameこれらの2つのSQLクエリを組み合わせる
ALTER PROCEDURE [dbo].[SP_SelectTasksandName]
AS
SELECT TASKS.CustomerID, TASKS.DateCreation, TASKS.DateFinish, TASKS.Description, TASKS.Fees, TASKS.Hours, TASKS.InvoiceNum, TASKS.PaymentMethod,
TASKS.Status, TASKS.TaskID, CUSTOMERS.Name
FROM TASKS, CUSTOMERS
WHERE (TASKS.CustomerID LIKE CUSTOMERS.CustomerID)
これは動作しますが、私は今の行の指定された量にこのクエリを制限するように求めてきました。他の簡単なクエリでうまく動作するこのコードを見つけましたが、このクエリで正しく使用できないようです。この制限コードは以下のとおりです。 (すなわち、すべての行> @low & &行< = @high)
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY CustomerID) as row FROM CUSTOMERS
) a WHERE ((a.row > @low and a.row <= @high)
これは私が得ている最も近いですが、私はここにこだわっています。
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY TASKS.CustomerID) as row FROM
(SELECT TASKS.CustomerID, TASKS.DateCreation, TASKS.DateFinish, TASKS.Description, TASKS.Fees, TASKS.Hours, TASKS.InvoiceNum, TASKS.PaymentMethod,
TASKS.Status, TASKS.TaskID, CUSTOMERS.Name
FROM TASKS, CUSTOMERS
WHERE (TASKS.CustomerID LIKE CUSTOMERS.CustomerID))
) a WHERE (a.row > @low and a.row <= @high)
最後の行の最初の括弧に「期待しているIDまたは引用符で囲まれたID」というエラーがあります。
ご不便をおかけして申し訳ございませんが、ご迷惑をおかけして申し訳ございません。
*行*将来の可能性[TSQLの予約語として設定されていますMSSQLリリース](https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql#future-keywords)を参照してください。大括弧または別名でエスケープすることを検討してください。なぜワイルドカードなしで 'LIKE'を使うのですか?明示的な 'INNER JOIN'を使用してください。 – Parfait
コメントをいただきありがとうございます、私のSQLは間違っています!私はそれに取り組む必要があります。 –
サイドノート:ストアドプロシージャのプレフィックス 'sp_'を**使用しないでください**。マイクロソフトは、[*ストアドプロシージャの名前付け*を参照してください](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx)、およびあなたはいつか名前衝突のリスクを将来実行します。 [ストアドプロシージャのパフォーマンスにも悪い](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)単に 'sp_'を避け、他の何かを接頭辞として使うのが最善です。 –