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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

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

Q&A

解決済

1回答

1662閲覧

sqliteのsql文の書き方

hijiri

総合スコア61

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

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

0グッド

1クリップ

投稿2020/04/28 13:05

pythonでsqliteを操作しております。

希望通りの操作ができませんので、質問させていただきます。

[テーブル名]
カラム1  カラム2  カラム3
以下レコードの中身

という形で示します。

[統合]
ページ  題名CD
1    1
2    2
3    3

[題名]
題名CD  題名1  題名2  題名3
1    1
2    1    2
3    1    2    3

[内容]
No  内容
1  a
2  b
3  c

という3つのテーブルがあります。

この3つを結合させて

1    a
2    a     b
3    a     b     c

と表示させたいと考えております。

そこで

python

1import sqlite3 2 3dbname = 'データ/database/test' 4conn = sqlite3.connect(dbname) 5cur = conn.cursor() 6 7def item(): 8 sql = """ 9 SELECT 10 ページ, 内容1.内容, 内容2.内容, 内容3.内容 11 FROM 12 統合, 題名, 内容 AS 内容1, 内容 AS 内容2, 内容 AS 内容3 13 WHERE 14 統合.題名CD = 題名.題名CD 15 AND 16 題名.題名1 = 内容1.No 17 AND 18 題名.題名2 = 内容2.No 19 AND 20 題名.題名3 = 内容3.No 21 """ 22 cur.execute(sql) 23 return cur.fetchall() 24 25print(item())

としたのですが、表示されるのが

3   a   b   c

のみです。

どのように書くのがよろしいのでしょうか?
どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

希望する形にするには外部結合である必要があるので、from句でouter joinするか、select句でサブクエリーとする必要があります。
それから結合条件はwhere句ではなくfrom句に記述した方が、外部結合に変更するような場合に容易です。

SQL

1SELECT ページ 2 , (select 内容 from 内容 where No=題名1) as 内容1 3 , (select 内容 from 内容 where No=題名2) as 内容2 4 , (select 内容 from 内容 where No=題名3) as 内容3 5FROM 統合 inner join 題名 6 on 統合.題名CD = 題名.題名CD

または

SQL

1SELECT ページ 2 , 内容1.内容 as 内容1 3 , 内容2.内容 as 内容2 4 , 内容3.内容 as 内容3 5FROM 統合 inner join 題名 6 on 統合.題名CD = 題名.題名CD 7 left join 内容 as 内容1 8 on 題名.題名1=内容1.No 9 left join 内容 as 内容2 10 on 題名.題名2=内容2.No 11 left join 内容 as 内容3 12 on 題名.題名3=内容3.No

投稿2020/04/28 15:31

編集2020/04/28 19:05
sazi

総合スコア25327

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

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

hijiri

2020/04/29 02:15

ありがとうございます。 教えていただいた方法で、無事にできました。 inner join 少し勉強してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問