• ベストアンサー

SQL Server2008のクエリの書式に関する

SQL Server2008のクエリの書式に関する質問です。 異なるテーブルを結合をする際の列名は、以下のようにピリオドを使って表現します。 <テーブル名>.<列名> これは、皆さん当然のように使われていると思います。 ここから質問ですが・・・。 異なるデータベースのテーブルを結合させる場合は、どうすればよいですか? <データベース名>.<テーブル名>.<列名>とするのでしょうか?(やってみたが、うまくいかなかったような気が・・・。) そもそも、異なるデータベース間では、テーブル結合できないのでしょうか? ご指導よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

> <データベース名>.<テーブル名>.<列名> ではなく以下です。 <データベース名>.<スキーマ名>.<Table名>.<列名> スキーマ名が抜けてます。スキーマ名はデフォルトだとdboです。 ※自データベース内かつデフォルトだと<データベース名>.<スキーマ名>が省略可能。 あと、SQLを発行しているユーザ(ログイン)は異なるデータベースを参照可能ですか? 権限がないと参照できませんのでログインのプロパティからサーバロールとユーザマッピングを調べてください。

gin57773222
質問者

お礼

ありがとうございます 大変勉強になりました スキーマ名ってのがあるのですね。 dbo を入れると無事動作しました

その他の回答 (1)

  • xKENx
  • ベストアンサー率65% (21/32)
回答No.1

参照URLによると、<データベース名>.<スキーマ名>.<テーブル名>.<列名>と記述すればよさそうに思われます。 例えば下記のように記述してみたらどうでしょうか。 (1)hogedb.dbo.table1.column1 (2)hogedb..table1.column1

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms177563.aspx
gin57773222
質問者

お礼

ありがとうございます (1)を試すと無事動作しました スキーマ名 dbo のキーワードで勉強します

関連するQ&A