- ベストアンサー
リレーションをSQL文で作る方法は?
urizakaです 今まではSQL-Serverを使っていたのですが、今度からPostgresSQLを使うこと になりました。 さて、そこで質問なのですが、SQL文でテーブルを作るとき、他のテーブルの カラム(フィールド)と作ったテーブルのカラム(フィールド)のリレーションを 作るにはどうすれば良いのでしょうか? 特に、シリアル型で作ったフィールドの値を外部参照キーとして持ってきたい 場合はどのようにSQL文を書けばよいのでしょうか? すみませんが、よろしくお願いします。
- urizaka
- お礼率32% (45/139)
- その他(データベース)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ヒント ALTER TABLE [dbo].[hogehoge] ADD CONSTRAINT [FK_HogeHoge_Master] FOREIGN KEY ( [No] ) REFERENCES [dbo].[Master] ( [SerialNo] ) ON DELETE CASCADE GO
その他の回答 (1)
- mnabe
- ベストアンサー率33% (427/1283)
答えを書くのは簡単ですが...ここは一つ面白い方法を SQL Serverを使っているとの事ですので、SQL Serverで該当データベースを選択して、SQLスクリプト生成をメニュー等から実行して見て下さい。 結果をファイルに保存する事で、データベースを作成する為のSQLスクリプト(SQL文法)が生成されます。 これをみれば、リレーションを作る時に必要なSQL文が解ります。 私も、SQL Server → PostgreSQL の時には、このスクリプトを使用(ちょっと修正が必要)してデータベースの移行を行いました
お礼
urizakaです おぉ、なるほどありがとうございます・・・と、言いたいところですが、それが できない状況です。 以前は客先でSQL-Serverを使っていたのですが、今回違う場所の全く違う 環境で違うシステムの開発をすることになったため、そのソースコードが 見れない状況なのです。 うーん、探してみて運良くどこかにあればよいのですが・・・
関連するQ&A
- SQL文で
SQL2000serverで 異なる2つのデーターベースの中にある 別のテーブルの情報を SQL文を使って、抽出する事は出来るのでしょうか? たとえば下記のように「DB-A」「DB-B」と言った 二つのDBの中のそれぞれのテーブルのIDフィールドで リレーションを取ってDB-AのTablA1のFldAの 値(AA)からDB-BのTablB1のFldBの値(あ)を 抽出することはSQL文で可能なのでしょうか? DB-A DB-B TablA1 TableB1 ID FldA ID FldB 1 AA 1 あ 2 BB 2 い 3 CC 3 う 4 DD 4 え
- ベストアンサー
- SQL Server
- AccessのテーブルをSQL文にしたい
urizakaです。 さて、今回質問したいのは、Accessで作ったテーブルをSQL文にする方法です。 具体的には、ACCESSで作ったテーブルを、 CREATE TABLE ××× ( ) INSERT… というSQL文にしたいのですが、これはどうすれば良いのでしょうか? すみませんが、教えてください。
- ベストアンサー
- オフィス系ソフト
- SQL文で・・・
こんにんちは。ご多忙だと思いますが回答宜しくお願い致します。 今、VBのソースを見ているのですが(VB初心者)、SQL文を作成している 部分があるのですが、ちょっとわかりません。 w_st_sql = "SELECT * FROM AAAA WHERE (K1 || K2 || K3) = " & "'" & p_st_key & "'" 上記のソースは(自分なりに解析したんですが)、テーブルAAAAのレコードで 変数p_st_keyの値がフィールドK1, K2, K3のどれかに当てはまるすべてのフィールドを取得する考えでよろしいのでしょうか? わからない部分は"(K1 || K2 || K3)"です。 すごく簡単な事かもしれませんが宜しくお願い致します。
- ベストアンサー
- Visual Basic
- Sqliteのリレーション
■利用環境 Sqlite3.3.5 データベース初心者で、 リレーションの概念等、理解出来てない 質問になってましたらすみません。 現在、テーブルを作成する事くらしかできません。 ■質問 Sqliteのテーブルプログラムから、 SQL関数を使ってつくっているのですが、 リレーションの設定の仕方がわかりません。 ■説明 Aと言うテーブルとBと言うテーブルがあるとき useridを主キーとして、お互いにリレーション を作るには、どのようにSQLを書けばよいですか?
- ベストアンサー
- その他(データベース)
- IsNullについて
urizakaです さて、現在MySQL(3.23.51)やPosgreSQL(Windows-Native版)をWindows2000で使っていますが、SQL-Serverにおける指定したカラム(フィールド)がNullだった場合に別の値を返す「Isnull(A,B)」(AがNullならBを値にして返す)というようなSQL文は、MySQLやPostgreSQLにはないのでしょうか?また、もしなかった場合、IsnullのようなSQL文と同じ結果を出すために何か方法ってありますでしょうか?。 すみませんが、宜しくお願いします。
- ベストアンサー
- その他(データベース)
- SQL UPDATE 文 GroupByの値を更新したい
SQLの UPDATE文について質問させていただきます。 テーブル内のデータを日付と時間で GroupBy して カウント求めています。 求めた値(カウント)を、日付をキーにして同じテーブル内のフィールドに更新するSQLを作成したいと考えています。 GroupByして、カウントを求めることはできるのですが、 どうしても、UPDATE文を実行させることができません。 この処理は、SQLで行うことはできるのでしょうか? 下記に、UPDATE前と後のテーブルデータを記載しています。 日付 時刻 20090101 0:00 20090101 0:00 20090102 0:00 20090102 0:00 20090102 1:00 20090103 2:00 ↓ 日付 時刻 カウント 20090101 0:00 2 20090101 0:00 2 20090102 0:00 2 20090102 0:00 2 20090102 1:00 1 20090103 2:00 1 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- Accessでリンクしたテーブルのリレーションが設定できない
PostgresへA5SQLとか言うツールを使ってテーブルを2つCreateTableしました。 テストデータも入力しました。 あらためてAccessでPostgresのテーブルをリンクテーブルとして参照しデータを見ることが出来ましたが、Access上でリレーションが未定義でサブフォームを作成することが出来ません。 リレーションを1:多で作成しようと思うのですが、設定フィールドが真っ白でいじれません。 何故でしょうか? 基本的にCreateTableするときに、なにやらリレーション設定する構文が必要だったのでしょうか? 今は、CreateTableしか構文は記述されていません。 どなたかご教授ください。 よろしくお願いします。
- ベストアンサー
- PostgreSQL
お礼
ありがとうございます。 さっそく、解析して役に立てたいと思います。