MySQL 総合 Part10

このエントリーをはてなブックマークに追加
952NAME IS NULL:2007/04/29(日) 23:48:32 ID:???
>>950
おかしい。 エラーメッセだして。

>>951
その括弧前後に文字はくっついてないんですか?
953952:2007/04/29(日) 23:51:50 ID:???
>>950 のは、恐らく ユニークとかではなく、項目名が同じで
どちらのテーブルのものか特定できない というエラーが出ていると予想。
954943:2007/04/30(月) 02:59:41 ID:???
>>953
『ERROR 1052 (23000): Column 'threadno_c' in on clause is ambiguous』 というエラーですね。

直訳すると 'threadno_c' が ambiguous = 曖昧 という意味になるので、曖昧 = ユニークで無くて特定できない だと思ってたんですが、
これは もっとシンプルに 'threadno_c' だけじゃ、左辺だか右辺だか特定できないって意味だったんですね。

『SELECT * FROM thread_t LEFT JOIN res_t ON thread_t.threadno_c=res_t.threadno_c』 にしたら解決です。
ありがとうございました。
955NAME IS NULL:2007/04/30(月) 10:21:36 ID:Vl6beltG
Aテーブル
カラムA1
カラムA2

Bテーブル
カラムB1
カラムB2

キーは使わないものとして、
カラムB2にA1の中に入っている数値+1をINSERTするにはどうゆうSQL文になりますか?
956NAME IS NULL:2007/04/30(月) 10:53:14 ID:???
>>939
mysql_install_db 実行しる
957NAME IS NULL:2007/04/30(月) 11:42:00 ID:vuvLkEdO
>>955
ちったぁ勉強もしてください
958NAME IS NULL:2007/05/01(火) 07:27:36 ID:???
AUTO_INCREMENTでIDを入れているのですが、
レコードをDELETEした場合、IDに空白があいてしまいますよね?
たとえば159というIDが空白になった場合、
157 158 160 161...という風になりますが、
160以降を1つIDをあげるみたいなことは不可能ですか?
959NAME IS NULL:2007/05/01(火) 08:10:38 ID:???
質問です
本の名前と書評をセットにして(CSVにして)コマンドでMysqlに読み込ませたんだけど、
phpでブラウザに表示確認してみたら書評部分が一つ目の改行以下がありませんでした。
どうやら最初のloadの時点で失敗してたみたいです。
ちゃんと改行を保持しつつ読み込ませるためにはcsvをどのへん気をつけたら良いんでしょう?
960NAME IS NULL:2007/05/01(火) 10:39:32 ID:???
だからおまいら質問ならIDとか環境とか書けって
961NAME IS NULL:2007/05/01(火) 10:53:07 ID:???
>>960
誤爆ですか?俺ルールですか?
テンプレに書いてないことを強要するなよ。
962NAME IS NULL:2007/05/01(火) 11:02:03 ID:???
質問主はageでID出すってのは一般的に質問系スレの
基本ルールだと思ってたんだがここでは違うの?

環境を詳しく書くのも当たり前のことだと思うんだが。

って俺釣られた?
963959:2007/05/01(火) 11:39:30 ID:7zo1GuAd
>>959
いや、なんだか下げ進行ぽかったんで上げなかったんだけど、、
環境もあんまり関係なさそうだから書かなかったです

os:winXP 鯖:apache2 で、Mysql(内部エンコード:euc)です。。
964NAME IS NULL:2007/05/01(火) 11:53:58 ID:???
GWだなぁと。

>>959
・load data の実行結果で warningとは上がってないか確かめる
・「phpでブラウザに表示確認してみたら」じゃなくてレコードのカラムレベルで確認しる
コンソール使える?
965NAME IS NULL:2007/05/01(火) 11:55:35 ID:???
>>958
リレーションの概念ってわかってる?
966NAME IS NULL:2007/05/01(火) 11:57:33 ID:???
>>962
何そのルールwwwww
967959:2007/05/01(火) 12:18:18 ID:7zo1GuAd
>>964
コマンドで確認したらやっぱり読み込んでないんですよね

CSVの作成方法は、
1、エクセルで各セルに本名と書評を書いて、書評はセル内部でalt+enterで改行
2、CSV指定して保存
というものです。保存時もEUCにあわせたし、改行コードは「変換なし」なんですが、、
どうしたら良いんでしょ? まさかエクセルの時点で、<br>とか打ち込むんでしょうか?
968NAME IS NULL:2007/05/01(火) 12:42:03 ID:???
>>967
改行つきCSVはクォーテーションを指定しないとダメ。
GWだししっかり↓読みなさい。
ttp://dev.mysql.com/doc/refman/4.1/ja/load-data.html


969さらに釣られる:2007/05/01(火) 12:44:01 ID:???
>>967
エクセルで保存したCSVをテキストエディタの文字列置換等で
全部ダブルクオート囲みのものにして、load dataの時に

ENCLOSED BY '"';

のオプションつけてみるとか。
970959:2007/05/01(火) 13:48:10 ID:???
おお、サンキュ
ありがとうございました
971NAME IS NULL:2007/05/01(火) 17:16:51 ID:T32xQBuX
エラーになってしまいます。
インサートのvaluesの中に別テーブルのカラムをmax()した値をいれたいんですがどうすればいいんでしょう?


INSERT INTO ほげテーブル(カラム1,カラム2)
values (max(別テーブル.テストカラム),1);

Invalid use of group function
972NAME IS NULL:2007/05/01(火) 18:32:21 ID:???
>>971
selectしてから入れれば委員長
973NAME IS NULL:2007/05/02(水) 08:11:39 ID:x/p7D3tO
SQL処理の速さとリソースを考えると、if分岐があるような処理をストアドプロシジャで処理するのととサーブレット側で処理するのじゃどっちがいいとおもいますか?
(SQL鯖に対するリクエストの数はどちらも同じ前提で)

974NAME IS NULL:2007/05/02(水) 09:05:01 ID:???
>>973
ストアドのリソースの取り方ははっきり知らないけど、
サーブレットよりも ネイティブな実行バイナリの
MySQLに託した方が速いとは思う。 しかも内部で全部完結するわけだし。
975NAME IS NULL:2007/05/02(水) 10:06:04 ID:cSawO+ZK
>>974
なるほど。prepareStatementとかのコンパイルでもだめなんですか・・・。
その場合の速さやリソースの差はどの程度のsecや%の差になると思いますか?
はっきりとデータがなくてもみなさんの主観と経験からの予測で結構です。
(もちろんデータの量にもよりますが、かなり大規模な構築の場合を想定したとして)

976NAME IS NULL:2007/05/02(水) 10:33:20 ID:Nv/lhVwe
すいません質問があります。

いまMy SQLをインストールしてテキストを見ながら勉強中なんですが、
構文を打った際

mysql> UPDATE shinamono SET sname = 'ハサミ' WHERE scode = 'A003';
'>

と、エンターを押しても、 '>が出てきてしまい受け付けてくれません。
構文自体はテキストの例文から持ってきたものなので間違いはないのですが、
これは一体どういった意味なのでしょうか・・・・・?

よろしくお願いいたします。

977NAME IS NULL:2007/05/02(水) 10:45:42 ID:Nv/lhVwe
追記

その後、exitやquit等のコマンドプロント自体を終了させるコマンドを打っても
'>となってしまい結局右上の×をクリックして終了させました。
で、再起動して先ほどのコマンドを打ってみたところ、問題なく受け付けてくれました。
エンターを押しても押しても
'>となってしまうのは一体なんでしょうか・・・・・?
978NAME IS NULL:2007/05/02(水) 12:41:34 ID:???
>>976
よくわかんないけど、ターミナルの改行コードがおかしくなってるんじゃない?
979NAME IS NULL:2007/05/02(水) 15:31:47 ID:???
>>976
そういう場合は '\c と入力すればクエリを中断できる。
980NAME IS NULL:2007/05/03(木) 04:11:54 ID:???
へぇーへぇーへぇー
今頃知った驚愕の事実

複数行入力時に前行のミスに気付いたらクライアント殺すしかないと思ってたよ
981NAME IS NULL:2007/05/03(木) 10:14:06 ID:???
次スレたてました。

MySQL 総合 Part11
http://pc11.2ch.net/test/read.cgi/db/1178154390/
982NAME IS NULL:2007/05/03(木) 10:32:43 ID:???
>>975
両方作ってベンチマーク
983NAME IS NULL:2007/05/03(木) 11:01:46 ID:???
>>975
どっちにしてもクライアントプログラムが条件判断するって事は、
判断後毎回SQLを送信するんだろうし、MySQLはいちいちコンパイル
せにゃならん。そのアプリ間はローカル又はネットワークとして通信も
発生もすると。  ストアドは一気にコンパイルして内部処理だから速いと思う。

10〜30%ぐらい速くなっていい様な気もするが、SQLのサイズにもよるし
ベンチ取らないと何とも胃炎。
984NAME IS NULL:2007/05/03(木) 15:36:05 ID:tZOHDPJo
mysqld起動時に
/usr/local/mysql/bin/mysqld_safe & このコマンドだと起動できません。

070503 15:33:10 mysqld ended

/usr/local/mysql/bin/mysqld_safe --user=root &  
ユーザー指定すると起動できます。
インストール時のユーザー選択に問題があったのでしょうか?
ユーザー指定なしでも起動できるようにしたいのでどのようにすればよいか
教えてください。
985NAME IS NULL:2007/05/03(木) 16:16:59 ID:???
>>984 my.cnf の中の設定がちゃんとなってないからでわ。
986NAME IS NULL:2007/05/03(木) 17:02:35 ID:0rgDJBYG
decimal(5,2) を、整数5桁プラス小数点以下2桁だと思い込んでプログラムを作り
さきほど 整数3桁プラス小数点以下2桁だと知りました

なのですが、このカラムには今でも「2560.00」みたいなデータが格納されており参照もできます

どちらが正しいのでしょうか?
987NAME IS NULL:2007/05/03(木) 18:51:33 ID:UsoZUQrN
MYSQLのオフィシャルのサイトの重さは何なんだろう・・・。
988NAME IS NULL:2007/05/03(木) 19:01:46 ID:???
なんで >>986 みたいなことが起きてるか分からんけど、
decimal の振る舞いは 5.0.3前後で変わっているようなので、
それに関係してるかも知らん。いちどダンプしてリロードして
身辺整理して出直したほうがよくはないか。いま、5.0.37 で

> create table test (id int, data decimal(5,3));
> insert into test (id, data) values (1, 1.23);
> insert into test (id, data) values (2, 12.234);
> insert into test (id, data) values (3, 123.234);
l> select * from test;
としたら

+------+----+
| id | data |
+------+----+
| 1 | 1.230 |
| 2 | 12.234 |
| 3 | 99.999 |
+------+----+
と出るよ。
989NAME IS NULL:2007/05/03(木) 21:58:13 ID:???
>>984
/usr/local/mysql/data/hostname.err に何か出てないか見てみる
990NAME IS NULL:2007/05/03(木) 23:18:24 ID:???
テーブル test_t で hoge = 3 を満たす行の数を求めたい場合には、どのようにするのが良いでしょうか?

現在は、

SELECT dummy_c FROM test_t WHERE hoge = 3;

と、わざわざダミー項目を入れて SELECT 文を発行し、最後の "5 rows in set (0.00 sec)" の部分から行数を求めているんですが、
せっかく SELECT 文を発行したのに結果を使わないのは無駄だと思うので、正規の方法が知りたいです。

よろしくお願い致します。
991NAME IS NULL:2007/05/04(金) 07:19:23 ID:???
SELECT COUNT(*) FROM test_t WHERE hoge = 3; でOK
992NAME IS NULL:2007/05/04(金) 07:20:55 ID:???
おじちゃん泣けるよw
993NAME IS NULL:2007/05/04(金) 08:49:50 ID:???
>"5 rows in set (0.00 sec)" の部分から行数を求めている



苦労してんなーーーーー
994NAME IS NULL:2007/05/04(金) 09:34:42 ID:???
   ∩___∩     /゙ミヽ、,,___,,/゙ヽ
   | 丿     ヽ    i ノ       `ヽ'
  /  ○   ○ |    / `(○)  (○)´i、  先生助けてっ!、
  | U  ( _●_)  ミ  彡,U ミ(__,▼_)彡ミ   MMORPGにMySQL使ってるんだけど人が増えたら
 彡、    |∪| ,,/   ,へ、,   |∪|  /゙       息が止まっちゃったの!!
 /  ヽ  ヽノ  ヾ_,,..,,,,_ /  '  ヽノ `/´ ヽ
 |      ヽ  ./ ,' 3  `ヽーっ  /     |
│   ヾ    ヾl   ⊃ ⌒_つ ソ ポン酢 |
│ハンゲ \,,__`'ー-⊃⊂'''''
995NAME IS NULL:2007/05/04(金) 10:02:47 ID:???
うめ
996NAME IS NULL:2007/05/04(金) 10:03:35 ID:???
うめ2
997NAME IS NULL:2007/05/04(金) 10:04:07 ID:???
うめ3
998NAME IS NULL:2007/05/04(金) 10:04:40 ID:???
うめ4
999NAME IS NULL:2007/05/04(金) 10:05:10 ID:???
うめ5
1000NAME IS NULL:2007/05/04(金) 10:06:12 ID:???
ありがとうございました
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。