0

VisualFoxProをSQLサーバーに移行する際に深刻な問題が発生しています。

FoxProについてはよくわかりません。この移行を行った人は、以下の私の質問を手伝ってください。

SET ENGINEBEHAVIOR 70 (SET ENGINEBEHAVIOR 80)FoxProにあるのと同等のSQLステートメントを作成するにはどうすればよいですか。目的は何SET ENGINEBEHAVIORですか。集計関数の一部でもgroupby句でもないすべてのフィールドを一覧表示する場所をいくつか読みました。

どんな助けでも大歓迎です!

4

2 に答える 2

1

FOXPro内の互換性ステートメントだと思います...レポートスクリプトにはそのステートメントが含まれていますか?現在SQLサーバーで直接実行している場合は、必須ではありません...主にFoxproフォーマット用だと思います。

MSDNからの完全な情報はここにあります:http: //msdn.microsoft.com/en-us/library/aa978316 (v = vs.71).asp

編集して追加:実際には、グループ化の動作に影響を与えるように見えます。リンクから:

GROUP BY句に含まれていなくても、SELECTリストに集計関数を含めることができます。たとえば、次のコードでは、GROUP BY句にフィールド会社を含めずに、フィールド会社でCOUNT()関数を使用しています。SELECT COUNT(company)、country FROM Customer GROUP BY country

FoxProから抜け出す場合、このステートメントはもう必要ないと思います。

于 2012-06-12T16:21:48.093 に答える
1

12番目は、SETENGINEBEHAVIORの動作について正確です。すべてのSQLデータベースがこの機能をサポートしているわけではないことに注意してください。SQLクエリを実行するときは常に、すべての非集計列を入力する必要があります。

注文テーブルに顧客のレコードが10個あり、注文をカウントしたいが、テーブルには注文日、合計金額、配送先住所なども含まれているとします。その人は、さまざまな場所にさまざまな注文を配送します。 ..することによって

select customerID, count(*) as NumberOfOrders, DeliverAddress, TotalOrder
   from orders 
   group by CustomerID

一部のSQLエンジンは、groupbyの一部として「DeliverAddress」または「TotalOrder」がないことについてあなたを悩ませます。VFPでは、これらの列は、見つかったレコードの数に関係なく、顧客に対して最初に見つかったレコードを返すだけです。

I Believe MySQLは、「非集計」列を必要としないというこの動作もサポートしています。

于 2012-06-12T19:12:30.400 に答える