MySQL 総合 Part6

このエントリーをはてなブックマークに追加
939NAME IS NULL:2006/02/14(火) 13:05:33 ID:???
それって order じゃできないってこと?
940938:2006/02/14(火) 13:12:03 ID:67SbzokA
>939
レスありがとうございます。
試しにselect * from tabale where name order by name;
とか書くと、不完全にソートされます。
これは文字コードとかの問題でしょうか?
それとも上のクエリが間違っているのでしょうか?
941NAME IS NULL:2006/02/14(火) 14:27:30 ID:???
設定が悪い。情報小出しやめて
942JDBCドライバの中の人 ◆K1AKxx0vr2 :2006/02/14(火) 15:36:56 ID:???
>>940
つ character set
943940:2006/02/14(火) 17:21:40 ID:67SbzokA
>942
レスありがとうございます。ローカル環境でテストしているのですが、my.ini等の設定は合っていると思います。mysqlのバージョンは同じでsjisにしています。
ところで今気がついたのですが、例えば
select * from table where name order by name
とやると、ひらがな五十音順、カタカナ五十音順、漢字五十音順に分けられてそれぞれ並びます。ひょっとしてこれは正常なのでしょうか?
もし、ひらがな漢字カタカナ関係なく、読み通りにソートしようと思ったら、
携帯電話のアドレス帳のように、読み仮名を登録するしかないのでしょうか?
944NAME IS NULL:2006/02/14(火) 17:28:12 ID:???
>>943
設定をそのままコピペしろって言ってんだよアホが
945NAME IS NULL:2006/02/14(火) 17:29:31 ID:???
>>943
それは仕様だ、windowsのファイル名を名前順にソートしてみろよ
946NAME IS NULL:2006/02/14(火) 17:33:20 ID:???
ソートは文字コード順
そこから逃れるためには、自分でも書いてるように読みがなをつけたほうが早い
947JDBCドライバの中の人 ◆K1AKxx0vr2 :2006/02/14(火) 17:40:36 ID:???
>>940>>943

補足:collationでググれ

MySQL(RDBMS)は、ORDER BY、いわゆるソート処理を行う際、collation(照合順位)に従って行う。

sjisの場合、以下のように2種類のcollationが用意されていて、デフォルトは"sjis_japanese_ci"となっている。

mysql> SHOW COLLATION LIKE '%sjis%'\G
*************************** 1. row ***************************
Collation: sjis_japanese_ci
Charset: sjis
Id: 13
Default: Yes
Compiled: Yes
Sortlen: 1
*************************** 2. row ***************************
Collation: sjis_bin
Charset: sjis
Id: 88
Default:
Compiled: Yes
Sortlen: 1
2 rows in set (0.00 sec)

SQL文にCOLLATE句を使うことで"sjis_bin"を使えると思うけれども、
どちらも自分の望みの通りの並び順ではない、という場合には
>>945>>946の言うように自分で何か回避法を使う必要があると思う。
948NAME IS NULL:2006/02/14(火) 17:42:41 ID:67SbzokA
うっひょー!!!
ものすごい勢いでレスありがとうございます。
>944
設定とはmy.iniのことですか?

[mysqld]
default-character-set=sjis

[mysql]
default-character-set=sjis

[mysqldump]
default-character-set=sjis

な感じです。

>945
確かにそうですよね。感じの音訓まで理解できるはずないですもんね〜。

>946
読み仮名作戦は結構ポピュラーなんでしょうか?
ユーザー登録とかするとき、名前の読み仮名入力させられるのはこういう理由だったりするんですかね?
949NAME IS NULL:2006/02/14(火) 21:29:01 ID:???
>>948

漢字の読みはいろいろあるからね。
日本人なら常識なんだけど、ちょっと難しかったかな。
950NAME IS NULL:2006/02/14(火) 22:02:03 ID:???
ふつー ソートしよう思ったら、フリガナデータくらい用意するよな、、、
951NAME IS NULL:2006/02/14(火) 22:11:22 ID:???
もともと文字コードや環境の設定ミスでひらがなもうまくソートできない
という事例が多かったので、最初の質問でみんなそっちを疑ったはず
952NAME IS NULL:2006/02/14(火) 22:36:59 ID:???
>>951 たしかに
953NAME IS NULL:2006/02/15(水) 00:40:55 ID:???
collateって4.0系で使えるのか?
4.1以降かと思ってた
954NAME IS NULL:2006/02/15(水) 02:04:29 ID:???
客相手に氏名を入れさせるときにふりがなはデフォだろ。
もし電話するような必要がでたときに、名前を呼び間違うような失礼をしても構わないのなら
無理に入れる必要はないと思うが。
955NAME IS NULL:2006/02/15(水) 04:02:49 ID:???
DB仕様の管理でテーブル構造の各フィールドの意味をどう管理、ドキュメントにしてます?

phpMyAdminで印刷表示にして、そのテーブルに列を追加してフィールドの意味を
付け加えているんだけど、DB構造が変わった時の効率悪くて…

DBでフィールドの意味を入れる場所作ってくれればいいんだけど…
956NAME IS NULL:2006/02/15(水) 07:05:32 ID:???
mysql って、select (select ... from hoge), (select ... from fuga)
ってかんじのことできまつか?
957NAME IS NULL:2006/02/15(水) 08:06:38 ID:???
>>956
LEFT JOIN の事かな?
958NAME IS NULL:2006/02/15(水) 08:10:06 ID:???
>>957
sub-select のことでは?
>>956
試してみればわかる。
mysql> select (select 1),(select 2);
+------------+------------+
| (select 1) | (select 2) |
+------------+------------+
| 1 | 2 |
+------------+------------+
ただし MySQL4.1以上
959NAME IS NULL:2006/02/15(水) 10:19:25 ID:???
わーい。さっそく 5 系列にでもうpしたいと思いまつ。
ありがとうございまつた。

mysql> select (select 1),(select 2);
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select 1),(select 2)' at line 1
960NAME IS NULL:2006/02/15(水) 10:23:10 ID:???
とおもったけど、こわいから 4.1 系でがまんしまつ。
961NAME IS NULL:2006/02/15(水) 18:36:21 ID:???
Oracle、オープンソースデータベースのSleepycatを買収
http://www.itmedia.co.jp/news/articles/0602/15/news015.html

ついにここまで...
962NAME IS NULL:2006/02/15(水) 18:53:16 ID:???
ZendとJbossもかよ・・・
963NAME IS NULL:2006/02/15(水) 21:20:35 ID:???
>>955
DBの仕様なんて作らないさ
中を勝手に見ろと(ry
964NAME IS NULL:2006/02/15(水) 21:21:59 ID:Z1uj4S+m
1000レスで終わるんですかね〜?
965NAME IS NULL:2006/02/15(水) 21:36:20 ID:???
PHP+MySQLの事ってどこで聞いたらいいでしょうか?
966NAME IS NULL:2006/02/15(水) 21:45:18 ID:???
>>965
原因の切り分けすらできないの?
開発やめちゃえば?
967NAME IS NULL:2006/02/15(水) 22:10:46 ID:???
>>966
原因の切り分けができないなら、
切り分けする方法を聞くとかね。
968JDBCドライバの中の人 ◆K1AKxx0vr2 :2006/02/15(水) 22:11:26 ID:???
>>962
昨日JBossの中の人に会ったけど、一応否定してた。
「Oracleはよくこういうガセネタを流すんだ」
だってさ。本当の所はどうなのかは、知らん。
969??:2006/02/15(水) 22:37:52 ID:Z1uj4S+m
>>966
え〜厳しいなぁ…
開発はやめたくないなぁ〜
がんばろっ!
でも解らんことあったら協力してね。
970NAME IS NULL:2006/02/15(水) 23:04:23 ID:???
>>969
俺が答えてやる
971NAME IS NULL:2006/02/15(水) 23:21:24 ID:g38nKAjD
すみません。くだらないかもしれない質問です。
今、tab区切りのtextをMySQLに読み込もうとしてますが、うまくいきません
load data infile 'ファイルのパス' into table テーブル名 fields terminated by '\t' lines terminated by '\n'
とやってみても、うまくいきません。
'\t'が間違ってるのでしょうか??何を使えばよいのでしょうか??
どなたかお教えください。
ちなみに環境は、
MacOSX10.4
Mysql 5.0.18
で、取り込むテーブルはujisをデフォルトキャラにしてます。

なんかうまい方法ないですか??
よろしくお願いいたします。
972NAME IS NULL:2006/02/15(水) 23:27:16 ID:se1T/eTx
http://shirahata-j.saitama-city.ed.jp/

ここのセキュリティ破壊して吹っ飛ばしたらネ申
973NAME IS NULL:2006/02/15(水) 23:42:09 ID:???
>>972
通報しました
974NAME IS NULL:2006/02/16(木) 00:09:04 ID:???
>>970
ではさっそくですが、、、

DBのテーブルにpointというフィールドがあり、
そのフィールドの値を60秒間隔で1減らし、
そのフィールドの値が0になると、閲覧できなくする。
というような感じの事、

簡単な説明だが、プログラムとしては、
PHP+MySQLで可能だろうか?
可能ならスクリプトは困難?
975NAME IS NULL:2006/02/16(木) 00:19:44 ID:???
>>974
別に減らす必要も無く、60を入れておく必要もない。
開始時刻を入れておいて、スクリプト側で現在時刻と比較して、
60秒以上経っていたら閲覧禁止処理を行えばいい。
976NAME IS NULL:2006/02/16(木) 00:36:58 ID:???
>>975
うんうん
要はデスネ・・・
自分がやりたいのは、各閲覧者ごとに
ポイントを振り分けたいので、DBに60秒に一度
問い合わせをして、0になったら閲覧禁止と思ったんですよ、、、
説明不足やったです。(*_ _)人ゴメンナサイ

結局、60秒に一度DBに問い合わせして、データの更新処理をすれば
いいんだよなぁ?多分・・・

もう少し自力で頑張ってみます。
977NAME IS NULL:2006/02/16(木) 00:45:24 ID:???
>>976
つ セッション
978NAME IS NULL:2006/02/16(木) 00:54:55 ID:???
>>972
IISだし、そう難しいとも思えんが?
979NAME IS NULL:2006/02/16(木) 00:57:23 ID:???
>>977
セッション管理ですね。
アリガトです。
またやってみて息詰まったらご協力お願いしや〜す。。。
一応趣味で色々やってるんですが、こういうのが凄く好きらしく・・・
頑張ってみます。。。
980JDBCドライバの中の人 ◆K1AKxx0vr2 :2006/02/16(木) 07:36:30 ID:???
>>971
何が、どう上手くいっていないのか、をもう少し教えてもらえないか。
Mac機は持ってないので手元での確認はできず。

現時点で気になる点
・全角バックスラッシュを使っているのは2chにカキコするためであって、実行したときは半角バックスラッシュ?
・Macの改行コードってCRだっけ?

改行コードが原因の場合は、Macの場合は、lines terminatedのところを

LINES TERMINATED BY x'0D'

という風に書くと(予想が正しければ)幸せになれるかも。

981NAME IS NULL:2006/02/16(木) 09:38:44 ID:???
MACの改行コードはCRだけど、、、CRなら\r
982NAME IS NULL:2006/02/16(木) 14:34:56 ID:???
昔のMacOSはCRだったけど、OSXはunixもどきなのでデフォルトはLF…
983NAME IS NULL:2006/02/16(木) 16:40:02 ID:???
2005の使い勝手はどうですか?
984JDBCドライバの中の人 ◆K1AKxx0vr2 :2006/02/16(木) 19:50:13 ID:???
>>982
ああ、MacOS10からそうだったね。

SELECT HEX('\n') を実行してみれば分かるけど、MySQLでは'\n'はOSを問わずLF固定っぽい。(Windows機で確認)
985NAME IS NULL:2006/02/16(木) 20:09:56 ID:???
MacOS10.2でやったときに同じ問題にあたった。
ファイルの所有者を弄ろうが、パーミッションをいくら見直そうが、なぜか全く読み込めない。
もしかすると見えないところでSELinuxのような何らかの規制があるのかも!?
986NAME IS NULL:2006/02/16(木) 20:31:29 ID:???
オラクル、オープンソースMySQLの買収に失敗
ttp://japan.zdnet.com/news/ir/story/0,2000054251,20096641,00.htm
987NAME IS NULL:2006/02/16(木) 21:27:35 ID:???
JBossとMySQLが合併とかしたら面白いのにね。
988NAME IS NULL
Jbossが特定のRDBMSとセットになるのはいやだなあ・・