• ベストアンサー

create と join

少し前にこれを使って連結したのを作成できたのですが 今回やったら、できませんでした・・・ === create table otamesi888 as select * from otamesi1 inner join otamesi2 on 1 = 1 こんな感じでできたツモリでした・・・ どの点がまずいのでしょうか? create も join も片方だとできるのですが・・・

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

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

> 少し前にこれを使って連結したのを作成できたのですが > 今回やったら、できませんでした・・・ joinを使ったselect文の結果からテーブルを作成するのですね。 (create table as というのは今まで知りませんでした) SQLの構文エラーになるのでしょうか? それとも期待する結果が otamesi888 に入っていないのでしょうか? 以前とデータベースサーバーの製品やバージョンが変わっていませんか? 製品によって微妙に書き方が違うみたいです。 SELECTした結果を使って、CREATE TABLEする http://d.hatena.ne.jp/kenpoco/20080324/1206327055 ちなみに手元の PostgreSQL 8.3 では以下の通りできました。 hoge=# create table otamesi1 ( a varchar(3) ); CREATE TABLE hoge=# create table otamesi2 ( b varchar(3) ); CREATE TABLE hoge=# insert into otamesi1 values('1-1'); INSERT 0 1 hoge=# insert into otamesi1 values('1-2'); INSERT 0 1 hoge=# insert into otamesi1 values('1-3'); INSERT 0 1 hoge=# insert into otamesi2 values('2-1'); INSERT 0 1 hoge=# insert into otamesi2 values('2-2'); INSERT 0 1 hoge=# insert into otamesi2 values('2-3'); INSERT 0 1 hoge=# select * from otamesi1 inner join otamesi2 on 1 = 1; a | b -----+----- 1-1 | 2-1 1-1 | 2-2 1-1 | 2-3 1-2 | 2-1 1-2 | 2-2 1-2 | 2-3 1-3 | 2-1 1-3 | 2-2 1-3 | 2-3 (9 rows) hoge=# create table otamesi888 as select * from otamesi1 inner join otamesi2 on 1 = 1; SELECT hoge=# select * from otamesi888; a | b -----+----- 1-1 | 2-1 1-1 | 2-2 1-1 | 2-3 1-2 | 2-1 1-2 | 2-2 1-2 | 2-3 1-3 | 2-1 1-3 | 2-2 1-3 | 2-3 (9 rows) hoge=# \d otamesi888 Table "public.otamesi888" Column | Type | Modifiers --------+----------------------+----------- a | character varying(3) | b | character varying(3) |

hiroziro888
質問者

お礼

回答ありがとうございます! 自分の手違いで * の部分がどうやらマズかったようです 何とか解決できました 自分の為に時間の使わせてすみません・・・

関連するQ&A

専門家に質問してみよう