質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

3304閲覧

複数行対一行の結合

cho

総合スコア23

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/09/12 12:00

2つのSQLでデータを取得します。
一方は不当定数の結果が返ります(結果A)。
もう一方は一行のみの結果が返ります(結果B)。

この2つの結果を結合したいと考えています。
結果Aの全ての行に対して結果Bをくっつけるイメージです。

結果A
id,name,birthday,sex
1,hoge,9/1,m
2,moge,1/10,f
3,kogo,10/23,f

結果B
column1,column2
aaa,bbb

期待結果
id,name,birthday,sex,column1,column2
1,hoge,9/1,m,aaa,bbb
2,moge,1/10,f,aaa,bbb
3,kogo,10/23,f,aaa,bbb

都合で、それぞれの結果を出してからではなく、

select ~(結果Aの取得)
===joinやunion処理?===
select ~(結果Bの取得)

という形で取得したいのですが可能でしょうか。
可能であればSQLを教えていただきたいです。
(期待する取得方法が不可能でも、他に取得可能であればご教授ください)

単純にできるかと思ったのですが、どうにもうまくいかず困っています。
よろしくお願いいたします。

※postgreSQLを使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

sqlを作成してみました 結果A:table1と結果B:table2を仮にテーブルのイメージとしています.属性は適当に取りました。

psql

1tsdb=# create temp table table1 (id int,name text,birthday text,sex text); 2CREATE TABLE 3tsdb=# create temp table table2 (column1 text,column2 text); 4CREATE TABLE 5tsdb=# insert into table1 values(1,'hoge','9/1','m'),(2,'moge','1/10','f'),(3,'kogo','10/23','f'); 6INSERT 0 3 7tsdb=# insert into table2 values('aaa','bbb'); 8INSERT 0 1 9tsdb=# select * from table1, table2; 10 id | name | birthday | sex | column1 | column2 11----+------+----------+-----+---------+--------- 12 1 | hoge | 9/1 | m | aaa | bbb 13 2 | moge | 1/10 | f | aaa | bbb 14 3 | kogo | 10/23 | f | aaa | bbb 15(3 rows) 16

説明を追加いたします。
・一方は不当定数の結果が返ります(結果A)。
・もう一方は一行のみの結果が返ります(結果B)。
なので N × 1 なので下記のSQLは下記の様にではどうでしょうか。

sql

1select t1.id, t1.name, t1.birthday, t1.sex, t2.column1, t2.column2 from (select 結果A 文) t1, (select 結果B 文) t2;

投稿2016/09/12 23:16

編集2016/10/29 10:39
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今回のようなパターンでは**CROSS JOIN(直積)**が使えます。
テーブルをクロス結合する

投稿2016/09/12 12:06

Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問