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

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

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

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

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

解決済

3回答

5549閲覧

複数のテーブルを結合する方法について

TakefusaBoku

総合スコア41

JOIN

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

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クリップ

投稿2018/02/13 13:59

編集2018/02/13 14:16

PostgreSQL(9.5)を用いたデータ取得で3つのテーブルを結合させた結果を取得したいのですが
うまくいかず悩んでおります。
ご指摘をいただけないかと思い書き込みしております。
どなたかヒントをいただけませんでしょうか。

<テーブル>
①Aテーブル
②Bテーブル
③Cテーブル
<カラム>
①A1、A2、A3・・・
②B1、B2、B3・・・
③C1、C2、C3・・・

上記のようなテーブル構成になっております。
この構成でA1=B1かつA3=C1という結合をしたいと思っています。

下記のようなSQLを書いてみたのですがSyntax Errorとなってしまいます。

SELECT A1, A2, A3 B1, B2, B3, C1, C2, C3 FROM TableA inner join TableB on TableA.A1 = TableB.B1 TableA inner join TableC on TableA.A3 = TableC.C1 ・ ・ ・
create table tableA ( A1 int primary key, A2 varchar(80), A3 int ); create table tableB ( B1 int primary key, B2 varchar(80), B3 varchar(80) ); create table tableC ( C1 int primary key, C2 varchar(80), C3 varchar(80) );

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/02/13 14:10

この例じゃ、どのカラムで結合すればいいか、判断つかないでしょ?
guest

回答3

0

ベストアンサー

SQL

1SELECT A.*, B.*, C.* 2FROM tableA A 3INNER JOIN tableB B 4ON A.A1 = B.B1 5INNER JOIN tableC C 6ON A.A3 = C.C1 7;

投稿2018/02/13 14:00

編集2018/02/13 14:28
Orlofsky

総合スコア16415

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

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

TakefusaBoku

2018/02/13 14:08

ご指摘いただきありがとうございます。
Orlofsky

2018/02/13 14:15

回答を修正しました。 エラーメッセージは質問に表示された内容をそのまま提示した方が良いです。
TakefusaBoku

2018/02/13 14:24

ありがとうございます。 エラーメッセージを控えることを忘れてしまい記憶だけで書いてしまい大変失礼いたしました。 明日、ご教示いただいた方法を試してみたいと思います。
guest

0

回答いただいた方みなさまありがとうございました。
教えていただいた方法で無事にSQLを組むことが出来ました。
ありがとうございました。

投稿2018/02/17 09:06

TakefusaBoku

総合スコア41

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

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

0

同じ項目名が無い場合ではこれでもよろしいかと

sql

1select * from tableA, tableB, tableC 2where A1=B1 and A3=C1;

sql

1create temp table tableA ( 2 A1 int primary key, 3 A2 varchar(80), 4 A3 int 5); 6create temp table tableB ( 7 B1 int primary key, 8 B2 varchar(80), 9 B3 varchar(80) 10); 11create temp table tableC ( 12 C1 int primary key, 13 C2 varchar(80), 14 C3 varchar(80) 15); 16insert into tableA values(1,'AAA',2),(2,'AA1',3),(3,'AA2',4); 17insert into tableB values(1,'BBB','bbb'),(2,'BB2','bb2'),(3,'BB2','bb2'); 18insert into tableC values(2,'CCC','ccc'),(3,'CC3','cc3'),(4,'CC4','cc4');

投稿2018/02/14 03:18

A.Ichi

総合スコア4070

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問