SQLの実行について
  1週間ほど前にこのソフトの存在を知り、勉強させていただいています。
  データーベースソフトを扱うのも初めてなので、インストールからデータベースの設定まで
  何かと苦労しました。
初歩的な質問で誠に申し訳無いのですが、よろしくお願いします。

  1 何度かDBを作成して、「SQL」を実行できるまでになり、次のような「SQL文」を実行した
    結果、指定以外のカラム「pay」が抽出されてきました。
     「SELECT id, date, shop, item_name, total pay FROM shouhin_601;」
  2 上記1の理由は、カラム「total pay」がアンダーバーで結ばれていないのが原因なのではと考
えて、最初は作成したファイルの「カラムの編集」を実行して修正し、再度「SQL」を実行した
のですが、結果は変わりませんでした。
 3 そこで、別途に「total_pay」とアンダーバーで結んだDBを作成して「SQL文」を実行しました。
 「SELECT id, date, shop, item_name, total_pay FROM shouhin_602;」
4 すると、今度は次のよう帰ってきました。
     SQL構文エラーまたはデータベースが見つかりません。
     カラム:”date”が見つかりません。
 5 ただ、この「shouhin_602」ファイルで「SELECT * FROM shouhin_602」を実行しますと、
作成した10行のすべてのカラムが抽出された元のデータと寸分違わず表示されます。
 6 ただ、この「shouhin_602」ファイルで「id」以外のカラムは全て上記「4」と同じ結果が帰って
来ます。
 7 「601」と「602」のカラムの作成は、カラム名をアンダーバーで結んだ以外は、全然変更て
    いまいません。

 下手な説明で長い文章になり申し訳ありませんが、どのようにしたら良いのか教えていただけない 
 でしょうか。よろしくお願いいたします。

  • nakaogin
  • MAIL
  • 2017/06/02 (Fri) 16:08:36
Re: SQLの実行について
ご利用ありがとうございます。Pupです。

テーブルの定義とデータの値がわからないので何とも言えませんが、スペースや予約後をカラムとして使う場合は
[ ]で囲うとちゃんと認識されると思います。

一度お試し頂ければと思います。
  • Pup
  • 2017/06/02 (Fri) 17:13:08
Re: SQLの実行について
早速のご返事ありがとうございます。

要領を得ない質問で申し訳ありません。

1 定義文は次のとおりになっています。

CREATE TABLE [shouhin_602] (
[id] INTEGER,
[date] INTEGER,
[shop] VARCHAR(100),
[item_name] VARCHAR(200),
[quantity] INTEGER,
[price] INTEGER,
[total] INTEGER,
[goods_price] INTEGER,
[fee] INTEGER,
[cod_fee] INTEGER,
[total_pay] INTEGER,
[remarks] VARCHAR(250),
PRIMARY KEY(`id`)
);

2 作成済みのレコードは、現在10行です。
3 ご回答で頂いている「スペースや予約後をカラムとして使う場合は[ ]で囲うとちゃんと認識されると思い 
  ます。」の実行方法がわかりかねる状態です。
4 DBファイル「shouhin_602」の定義文は上記のとおりなのですが、「SQLの実行」をする際にSQL文」欄に次
  の文句を打ち込む前に何かすることがあるのでしょうか。
    「SELECT id, date, shop, item_name, total_pay FROM shouhin_602;」
5 なお念のために、下記「SQL文」のXXX部分に作成したカラムの全てを1つづつ入れて実行したとろ、    「date」と「shop」の2つのカラムだけが実行できませんでした。

現在の状態は上記のとおりですが、よろしくお願いします。
 なお、パソコンの環境は次のとおりです。
     Windows 10 Pro 64 bit
PupSQLite Ver. 1.30.4.0
  • nakaogin
  • MAIL
  • 2017/06/03 (Sat) 09:21:29
Re: SQLの実行について
最初の投稿の最初の SQL文、
「SELECT id, date, shop, item_name, total pay FROM shouhin_601;」
は文法的に正しくて次の SQL文と同じ意味です。
「SELECT id, date, shop, item_name, total AS pay FROM shouhin_601;」
(AS を省略できるのがちょっと紛らわしいですね)

そして意味は以下の通りです。
「id, date, shop, item_name, total の各列を抽出し、total列以外は列の見出しとして列名を用いよ。total列の見出しは pay を用いよ」

ということで、指定以外の列と仰っている pay列の値は total列の値と一致していませんか?
(たまたま total列があったため、「そんな列はありませんよ」エラーにならなかったのです)

そして解決策ですが Pupさんの仰っている「角括弧で括る」というのは select文での話です。
(もちろん 必要なら create文でも使います)
角括弧は二重引用符でも代用できると思います。

ちなみに、select文では列名のほかに表名も別名をつけられます。
列名の場合と同様にこちらも AS は省略できます。
これは長い表名を短くして使いたいときなど(といっても主には表を結合するとき)に使われていると思います。
  • ColdJoint
  • 2017/06/05 (Mon) 06:18:33
Re: SQLの実行について
ご指摘有難うございます。

>ということで、指定以外の列と仰っている pay列の値は total列の値と一致していませんか?
>(たまたま total列があったため、「そんな列はありませんよ」エラーにならなかったのです)

カラムの作成方法が悪かったのかもしれませんが、「total」は「quantIty」かける「price」で
「total pay」はすべての金額を合計したものですので、その値は同一ではありません。



>そして解決策ですが Pupさんの仰っている「角括弧で括る」というのは select文での話です。

私は、次のような操作をするということだと思って実行したのですが、結果は次のとおりです。

select [shop] from shouhin_602;    ではなんの反応もありません。

select "shope" from shouhin_602;  では、10行全てに「shop」の表示だけがでました。

折角の資料なのですが、他のカラムは問題がないので「shop」の実行がでると作成する意味
があるのですが、よろしくお願い致します。
  • nakaogin
  • MAIL
  • 2017/06/05 (Mon) 12:15:51
Re: SQLの実行について
投稿のたびに問題が変わっていっているような気がします。
問題を小分けして、そして順番に解決して行きましょう。

まずは最初の投稿の1番と2番を。これらは同じことなのでまとめて扱います。
今はほかの問題は忘れましょう。

2番の文を読むと、1番の結果と違うものを期待していたように伺えます。
しかし、文の通りに操作したのなら同じ結果にならない方がおかしいと思います。

ここで質問です。
いくつか回答が寄せられていますが、それらを読んで今はこのことをどう思っているのか教えてください。
まだ違う結果になると思っていますか?
それとも今は同じ結果になって当然と思っていますか?

同じ結果になって当然と思うようになったのなら、当時はどう勘違いしていたのか教えてください。
  • ColdJoint
  • 2017/06/06 (Tue) 06:13:33
Re: SQLの実行について
ColdJoint  今日は。  お世話になっています。

> 投稿のたびに問題が変わっていっているような気がします。
仰言っている通りだと思います。ご指摘頂いた助言を参考・ヒントにしながら実行した結果を元に、再度質問をしていましたのますので多少変わって行くこととなりました。
ただ、目標とするところは同じですのでご勘弁ください。

さて、ご質問の「 1番と2番」の問題に対する現在の考え方についてですが、次のように思っています。
1 「601」と「602」のカラムの相違点は、「602」は「601」のカラム名で「空白」があったものをアンダーバーで結んだことです。
  例  「total pay」を「toarl_pay」に変更。( 6月3日 1 定義文を参照ください )

2 上記「1」の変更は、カラム名の空白が「SQL文」の実行に支障をきたしていると考えた
  結果で、現在もこの考えは変わりません。

3 その結果、6月3日の文書「5」に記載の通りに、一つひとつのカラムを「SQL文」の実行し
  たところ、「date」と「shop」の2つのカラムのを除いて、その他のカラムが実行できる
  ようになった思っています。

4 このご返事をする前に、気になることがありましたので次の「SQL文」の実行したとこ
  ろ、上記「3」の単独のカラムでは表示されなかった「date」と「shop」の2つのカラム
  も無事表示されていましたので、私が期待している結果は得ることができました。
   「select * from shouhin_602;」
5 その結果、前回(6月5日)の文書の末尾に記載した「折角の・・・・」は解決したことにな
  りますので、ご了承ください。

6 上記「3」で記載した、カラム「shop」を単独で「SQL文」の実行をして結果が得られな
  いことが、今後何か支障を起こすことがあるかもしれませんが、その点については今後
使用していって私の知識がついた時点で改めて勉強したいと思います。

今回は、誠に有難うございました。改めて御礼申し上げます。

  • nakaogin
  • MAIL
  • 2017/06/06 (Tue) 08:58:49
Re: SQLの実行について
あれは解決したということだったのですね。読み違えていました。
ご本人が「解決した」と思えば「解決」なのでよかったです。
  • ColdJoint
  • 2017/06/06 (Tue) 20:34:38

返信フォーム






プレビュー (投稿前に内容を確認)