それって order じゃできないってこと?
940 :
938:2006/02/14(火) 13:12:03 ID:67SbzokA
>939
レスありがとうございます。
試しにselect * from tabale where name order by name;
とか書くと、不完全にソートされます。
これは文字コードとかの問題でしょうか?
それとも上のクエリが間違っているのでしょうか?
設定が悪い。情報小出しやめて
943 :
940:2006/02/14(火) 17:21:40 ID:67SbzokA
>942
レスありがとうございます。ローカル環境でテストしているのですが、my.ini等の設定は合っていると思います。mysqlのバージョンは同じでsjisにしています。
ところで今気がついたのですが、例えば
select * from table where name order by name
とやると、ひらがな五十音順、カタカナ五十音順、漢字五十音順に分けられてそれぞれ並びます。ひょっとしてこれは正常なのでしょうか?
もし、ひらがな漢字カタカナ関係なく、読み通りにソートしようと思ったら、
携帯電話のアドレス帳のように、読み仮名を登録するしかないのでしょうか?
>>943 設定をそのままコピペしろって言ってんだよアホが
>>943 それは仕様だ、windowsのファイル名を名前順にソートしてみろよ
ソートは文字コード順
そこから逃れるためには、自分でも書いてるように読みがなをつけたほうが早い
>>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の言うように自分で何か回避法を使う必要があると思う。
948 :
NAME 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
読み仮名作戦は結構ポピュラーなんでしょうか?
ユーザー登録とかするとき、名前の読み仮名入力させられるのはこういう理由だったりするんですかね?
>>948 漢字の読みはいろいろあるからね。
日本人なら常識なんだけど、ちょっと難しかったかな。
ふつー ソートしよう思ったら、フリガナデータくらい用意するよな、、、
もともと文字コードや環境の設定ミスでひらがなもうまくソートできない
という事例が多かったので、最初の質問でみんなそっちを疑ったはず
collateって4.0系で使えるのか?
4.1以降かと思ってた
客相手に氏名を入れさせるときにふりがなはデフォだろ。
もし電話するような必要がでたときに、名前を呼び間違うような失礼をしても構わないのなら
無理に入れる必要はないと思うが。
DB仕様の管理でテーブル構造の各フィールドの意味をどう管理、ドキュメントにしてます?
phpMyAdminで印刷表示にして、そのテーブルに列を追加してフィールドの意味を
付け加えているんだけど、DB構造が変わった時の効率悪くて…
DBでフィールドの意味を入れる場所作ってくれればいいんだけど…
mysql って、select (select ... from hoge), (select ... from fuga)
ってかんじのことできまつか?
>>957 sub-select のことでは?
>>956 試してみればわかる。
mysql> select (select 1),(select 2);
+------------+------------+
| (select 1) | (select 2) |
+------------+------------+
| 1 | 2 |
+------------+------------+
ただし MySQL4.1以上
わーい。さっそく 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
とおもったけど、こわいから 4.1 系でがまんしまつ。
ZendとJbossもかよ・・・
>>955 DBの仕様なんて作らないさ
中を勝手に見ろと(ry
964 :
NAME IS NULL:2006/02/15(水) 21:21:59 ID:Z1uj4S+m
1000レスで終わるんですかね〜?
PHP+MySQLの事ってどこで聞いたらいいでしょうか?
>>965 原因の切り分けすらできないの?
開発やめちゃえば?
>>966 原因の切り分けができないなら、
切り分けする方法を聞くとかね。
>>962 昨日JBossの中の人に会ったけど、一応否定してた。
「Oracleはよくこういうガセネタを流すんだ」
だってさ。本当の所はどうなのかは、知らん。
969 :
??:2006/02/15(水) 22:37:52 ID:Z1uj4S+m
>>966 え〜厳しいなぁ…
開発はやめたくないなぁ〜
がんばろっ!
でも解らんことあったら協力してね。
971 :
NAME 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をデフォルトキャラにしてます。
なんかうまい方法ないですか??
よろしくお願いいたします。
972 :
NAME IS NULL:2006/02/15(水) 23:27:16 ID:se1T/eTx
>>970 ではさっそくですが、、、
DBのテーブルにpointというフィールドがあり、
そのフィールドの値を60秒間隔で1減らし、
そのフィールドの値が0になると、閲覧できなくする。
というような感じの事、
簡単な説明だが、プログラムとしては、
PHP+MySQLで可能だろうか?
可能ならスクリプトは困難?
>>974 別に減らす必要も無く、60を入れておく必要もない。
開始時刻を入れておいて、スクリプト側で現在時刻と比較して、
60秒以上経っていたら閲覧禁止処理を行えばいい。
>>975 うんうん
要はデスネ・・・
自分がやりたいのは、各閲覧者ごとに
ポイントを振り分けたいので、DBに60秒に一度
問い合わせをして、0になったら閲覧禁止と思ったんですよ、、、
説明不足やったです。(*_ _)人ゴメンナサイ
結局、60秒に一度DBに問い合わせして、データの更新処理をすれば
いいんだよなぁ?多分・・・
もう少し自力で頑張ってみます。
>>977 セッション管理ですね。
アリガトです。
またやってみて息詰まったらご協力お願いしや〜す。。。
一応趣味で色々やってるんですが、こういうのが凄く好きらしく・・・
頑張ってみます。。。
>>971 何が、どう上手くいっていないのか、をもう少し教えてもらえないか。
Mac機は持ってないので手元での確認はできず。
現時点で気になる点
・全角バックスラッシュを使っているのは2chにカキコするためであって、実行したときは半角バックスラッシュ?
・Macの改行コードってCRだっけ?
改行コードが原因の場合は、Macの場合は、lines terminatedのところを
LINES TERMINATED BY x'0D'
という風に書くと(予想が正しければ)幸せになれるかも。
MACの改行コードはCRだけど、、、CRなら\r
昔のMacOSはCRだったけど、OSXはunixもどきなのでデフォルトはLF…
2005の使い勝手はどうですか?
>>982 ああ、MacOS10からそうだったね。
SELECT HEX('\n') を実行してみれば分かるけど、MySQLでは'\n'はOSを問わずLF固定っぽい。(Windows機で確認)
MacOS10.2でやったときに同じ問題にあたった。
ファイルの所有者を弄ろうが、パーミッションをいくら見直そうが、なぜか全く読み込めない。
もしかすると見えないところでSELinuxのような何らかの規制があるのかも!?
JBossとMySQLが合併とかしたら面白いのにね。
Jbossが特定のRDBMSとセットになるのはいやだなあ・・