3

がある

*= and =*

アプリケーションクエリでのSQLの等式。どういう意味ですか?Googleで調査しましたが、十分な情報が見つかりませんでした。例えば ​​:

SELECT ODR_YO_ID, OGR_OKUL_NO, OGR_ADI+' '+OGR_SOYADI OGR, COUNT(ODR_YO_ID) SAYI
FROM OGRENCI,YIL_SUBE,YIL_OGRENCI, OGRENCI_DAVRANIS 
WHERE  ODR_OLUMLU = 1 AND YO_OGR_ID = OGR_ID AND  ODR_YO_ID = YO_ID AND YO_AKTIF = 1 AND 
YO_YSB_ID = YSB_ID AND  YSB_ID = 2183 AND YSB_YIL_KOD *= ODR_YIL_KOD AND  ODR_OGR_ID =* OGR_ID  
GROUP BY ODR_YO_ID, OGR_OKUL_NO, OGR_ADI+' '+OGR_SOYADI, YO_OKUL_DEGIS_TARIHI 
ORDER BY OGR

ローカル コンピューターでこの SQL クエリを実行すると、次のエラーが発生します。

 Msg 102, Level 15, State 1, Line 5
 Incorrect syntax near '*='.

しかし、関連サーバーで同じクエリを実行すると、このクエリはエラーなしで機能します。ローカル コンピューターで SQL Server 2012 Express Edition を使用し、関連サーバーに SQL Server 2005 があります。なんで ?前もって感謝します。

4

1 に答える 1

3

*=は、左結合の ANSI-89 構文でした。現在は推奨されていないため、エラーが発生します。

同様=*に、右結合に類似しています。

結合句を句から結合構文に移動する必要がありwhereますが、フィールドがどのテーブルから来ているのかわからないため、より具体的にすることはできません

すなわち

YSB_YIL_KOD *= ODR_YIL_KOD 

になる

ysbtable 
    left join odrtable 
        on YSB_YIL_KOD = ODR_YIL_KOD 

ODR_OGR_ID =* OGR_ID

になる

odrtable 
    right join ogrtable
        on ODR_OGR_ID = OGR_ID

データベースの互換性レベル ( http://technet.microsoft.com/en-us/library/bb510680.aspx )を変更することで、ローカル マシンでクエリを機能させることができるかもしれませんが、現在の構文に書き直すことをお勧めします。 .

于 2013-09-21T08:52:49.420 に答える