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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2935閲覧

同一SQLでの結果に差異が出てしまう

zeeroo

総合スコア7

SQLite

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQL

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/07/31 01:40

編集2020/07/31 02:42

ブラウザで返ってくる結果と、DB browser for SQLiteで返ってくる結果が異なります。
jsからajaxでpythonを実行しています。

SQLはプログラムで生成しており、DB browser for SQLiteでは生成されたものをそのまま使用しています。

python

1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 import sqlite3 4 5 connection = sqlite3.connect("DBパス") 6 cursor = connection.cursor() 7 res = cursor.execute(SQL)

SQL

1"SELECT * FROM 2 ( SELECT * FROM test 3 WHERE doc_id IN ('0001' , '0002' ) 4 ORDER BY doc_id asc ) 5group by doc_id 6order by CASE country WHEN 'JP' then 1 when 'US' then 2 else 3 END 7 8```testテーブル 9|country|doc_id|| 10|:--|:--:|--:| 11|JP|0001|| 12|US|0001|| 13|JP|0003|| 14|US|0002|| 15|CN|0001|| 16|JP|0003|| 17|CN|0002|| 18 19想定される結果(DB browser for SQLite) 20|country|doc_id|| 21|:--|:--:|--:| 22|JP|0001|| 23|US|0002|| 24 25異なる結果(ブラウザ) 26|country|doc_id|| 27|:--|:--:|--:| 28|CN|0001|| 29|US|0002|| 30 31order by が効いていないみたいですが、手づまりなため知恵をお貸しください。 32 33 34### 追記 35 36下記SQLで実行したところDB browser for SQLiteでは正常に結果が返ってきました。 37しかし、python側では「Premature end of script headers:」が返ってきました。 38SQLが正しくないようです。(まったく同じSQLを使用しています) 39バージョンとかの問題なのでしょうか。 40 41```SQL 42SELECT * FROM 43 ( SELECT *,rank() over( partition by doc_id order by doc_id asc ,CASE country WHEN 'JP' then 1 when 'US' then 2 else 3 END) FROM test 44 WHERE doc_id IN ('0001' , '0002' ) 45 ORDER BY doc_id asc ) 46 WHERE rank = 1 47

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

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

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

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

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

guest

回答1

0

ベストアンサー

countryはgroup byの項目ではありませんから、Max()とかMin()などの指定をしない限り、返却される値は適当です。

投稿2020/07/31 01:49

sazi

総合スコア25327

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

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

zeeroo

2020/07/31 02:42

回答ありがとうございます。 参考にSQL分の修正を行いました。追記に新しい問題を記載しましたので、よろしければご教授いただけると。。
sazi

2020/07/31 03:05

python側のエラーについては分かりません。 同じDBに接続してDB browserで試せたのならSQLには問題無いと思いますよ。
zeeroo

2020/07/31 04:09

ありがとうございます! 助かりました!
sazi

2020/07/31 04:22

order by は必要なら一番外側で行って下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問