のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,308人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレMySQL 総合 Part14

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    701 : NAME IS - 2008/10/21(火) 14:03:39 ID:??? (-24,-29,-45)
    mysqlclientライブラリを使用したプログラムをフリーソフトとして公開したいんだけど、
    GPLにしたくない場合(バイナリのみ配布)は商用ライセンスをいくつ買わないといけないの?
    ダウンロードされた回数だけ必要になるなんてことないよね?
    702 : NAME IS - 2008/10/21(火) 14:08:36 ID:??? (+5,+10,-30)
    >>701
    組み込んで売るための
    OEMライセンスというのがあります。
    値段はしらない
    704 : NAME IS - 2008/10/21(火) 16:21:11 ID:??? (+0,+2,-64)
    だからUTF8エンコード2回かけるとそうなるって言ったじゃない。
    ユニコード文字にしたくてデコードして次に回したら
    そいつもUTF8と判断してデコードしたと
    705 : 伊藤 誠 - 2008/10/21(火) 20:32:37 ID:BZveQiyh (+30,+29,-310)
    通りすがりの質問で失礼します。

    こんなテーブルがあるとします。

    商品管理テーブル
    ・商品ID←主キーかつオートインクリメント
    ・商品名
    ・JANコード
    ・メーカー

    価格管理テーブル
    ・価格ID←主キーかつオートインクリメント
    ・商品ID
    ・定価
    ・原価
    ・売価

    ちなみに、商品IDと価格IDはユニークであるために、
    主キーかつオートインクリメントとしています。

    本題は、ストアドプロシジャを使って
    新規に商品の登録をする時にどうしたらよいかです。
    私は、mysql5.0系を使用しています。

    テーブルを二つに分けたのは、価格の変更等に対応するためです。
    詳細なテーブルデータは割愛させていただきます。

    価格管理テーブルの商品IDは商品管理テーブルと紐付けるための
    カラムですが、オートインクリメントであるため、商品データを
    商品管理テーブルに格納してからでしか、確定しません。

    商品データの登録→価格データの登録

    とすれば、良いのかもしれませんがどのようにして商品管理テーブル
    から商品IDを拾えばよいのでしょうか?最新の登録データを拾うでは
    不完全ではないでしょうか?→の間に他者による登録があるかも知れ
    ません。それとも、テーブルの仕様から見直すべきなのでしょうか?

    どうかご教示ください。
    706 : NAME IS - 2008/10/22(水) 00:05:04 ID:??? (-18,-29,-23)
    MySql.Data.dllをプログラムに添付して
    勝手に再配布しても問題ありませんか
    707 : 696 - 2008/10/22(水) 00:17:15 ID:??? (-19,-26,-96)
    >>698
    私の読みは、>>697氏と異なります。
    MySQLの規定の動作として、ORDER BYはWHEREの結果に対して実行されるので
    ソートしてからデータを引くことはできません。
    access_dateがインデックスの先頭では、
    多分インデックスは一切使われてないのではないでしょうか。
    ぜひEXPLAINしてみてください。

    おすすめの書籍は、
    なんといってもオライリーの実践ハイパフォーマンスMySQLです。
    インデックス以外も含め、載ってない解決策はほとんど無いと思います。
    708 : 696 - 2008/10/22(水) 00:36:17 ID:??? (+38,+29,-103)
    >>705
    価格管理テーブルの価格は初期登録する必要がありますか?
    ストアドプロシージャでINSERTした時に
    トリガーで価格を登録させるということではだめですか?
    ストアドプロシージャ単独での解決はあんま詳しくないから、パス。
    テーブルを分けるメリットがあんまり感じられないけどスルーします。

    >>706
    だめです。
    709 : 706 - 2008/10/22(水) 06:15:16 ID:??? (+33,+29,-3)
    >>708
    なぜ殺たし
    じゃなくて・・・

    なぜダメなのですか
    710 : NAME IS - 2008/10/22(水) 09:25:04 ID:??? (-23,-29,-1)
    >>705
    つLAST_INSERT_ID()
    711 : 695 - 2008/10/22(水) 09:58:51 ID:??? (+29,+24,-242)
    >>707
    さらなる返信ありがとうです!
    >>696を見てすぐにexplainしました。(今は張り替えてしまったのでインデックスないのです。)
    そのとき確実にインデックスが使われていました。
    > ソートしてからデータを引くことはできません。
    というのは、(access_dateで)order byしてから(typeで)where絞り込みできない、ということでしょうか?
    typeで絞り込んでaccess_dateでorder byするのでインデックスが逆なのかな、と自分では納得していました。

    本のオススメありがとうございます!
    でもオライリーのハイパフォーマンスは、実はもう手元にあったりします。楽しい本ですよね。
    他の本は最後の方ばかり見返すのですが、この本はどの章でも見返すことがあります。
    ただ出版されたのがいかんせん古いせいか、myisamに偏ってるかなと思ってます。
    自分はmysql5.1(間違ってベータ版入れてた)からしか使ったことがなく、innodbをかなり主流に使ってます。
    (実際、読み1:更新1とかなものでmyisamは向いてないのかと自己判断してしまっています。)
    innodbの主キーインデックス?はちょっと特殊なんだよーとかをブログなどでかじり見するだけで、それを理解
    できる脳みそはなく次なる書籍を探しておる次第であります。
    712 : NAME IS - 2008/10/22(水) 13:59:25 ID:??? (-16,-29,-61)
    DBサーバーPCで作業する人が作成者のみ場合ユーザーをlocalhostに設定する意味ってあるんですか?
    ローカルシステムはrootで入ると考えると、全てのログイン設定はリモートのみでいいような気がするんですが?

    ばかげた質問ですが教えてくだちぃ。
    713 : NAME IS - 2008/10/22(水) 19:59:51 ID:??? (+9,+6,-19)
    >ローカルシステムはrootで入ると考えると

    なぜそう考えるの?
    714 : 伊藤 誠 - 2008/10/22(水) 20:41:08 ID:IFpXZn2t (+21,+29,-12)
    >>710

    返事が遅れてスミマセン。
    ありがとうございます!
    もしかして、常識でしたか?

    何とか解決できそうです!
    715 : 712 - 2008/10/22(水) 21:07:40 ID:??? (+29,+29,-34)
    >>713
    他人が使わない自分(DB管理者)専用のPCなので
    アクセスする場合はroot権限だけあれば事足りるんじゃないかと。
    それとも管理者自らも一般ユーザーとして入るべきなの?
    717 : NAME IS - 2008/10/23(木) 17:47:44 ID:??? (-10,-18,-167)
    思いっきり初心者で申し訳ないのですが、
    データベースを使った顧客管理を考えています。

    来店するごとに使った金額を

    Aさん ○○歳 [1回目]○○円 [2回目]○○円
    Bさん ××歳 [1回目]××円 [2回目]××円 [3回目]○○円
    Cさん △△歳 [1回目]△△円

    といったように毎回の買い物金額を格納したいのですが、
    私の知識では「カラムを追加していく」以外に方法を知りません。
    でも例えば「Aさんが1000回来店したら・・・」と考えるとこの方法では
    無理な気がします。

    こういう場合はテーブルを増やす方がいいのでしょうか?
    他にもっとスマートな方法があったりしますか?

    どなたか教えてくださいよろしくお願いします。
    718 : NAME IS - 2008/10/23(木) 18:02:06 ID:??? (-26,-30,-36)
    テーブル1
    1 Aさん ○○歳
    2 Bさん ××歳
    3 Cさん △△歳

    テーブル2
    1 1 ○○円
    2 1 ○○円
    3 2 ××円
    4 2 ××円
    5 2 ○○円
    6 3 △△円
    721 : 717 - 2008/10/23(木) 19:14:01 ID:??? (+24,+29,-10)
    >>718-720
    すごく初歩って感じですね;
    もう一度入門書から出直します。

    こんな質問にも
    ものすごくわかりやすく教えてくれて感動です。
    どうもありがとうございました。
    723 : NAME IS - 2008/10/23(木) 23:51:35 ID:??? (+18,+20,-8)
    DBの設計について書いてある情報を探せばいい。
    SQLの話ではない。
    724 : NAME IS - 2008/10/24(金) 10:40:38 ID:yyHCFjKP (-5,+29,-68)
    5.0です。

    特定のカラムを基準にしてソートをした際に、
    それぞれのレコードに1~の連番を付与したいのですが可能でしょうか?
    いわゆるRANK関数のように、同率をまとめてしまうのではなく、
    欠番の無い連番を付与したいと思っています。

    何卒、ご教示のほどお願いいたします。
    725 : NAME IS - 2008/10/24(金) 10:47:27 ID:??? (-27,-30,-153)
    Xoops上でユーザを80件作成した後に
    SELECTでユーザデータ抽出を行うと29件ずつしか抽出されません。
    WHEREで絞込みをしようとしても29件目以降のデータは無視されてしまいます。
    Xoopsでは80人の一覧が表示されるので、
    そこで使用しているSQLをTelnet接続で実行しましたが
    やはり29件しか表示されません。
    MySQLの設定で参照する件数に上限を設けるようなものがあるのでしょうか?
    728 : NAME IS - 2008/10/24(金) 11:28:07 ID:??? (-27,-30,-68)
    ↑の「今は」の箇所は

    SELECT * FROM aaa INNER JOIN bbb ON aaa.id=bbb.id
    INNER JOIN ccc ON aaa.id=ccc.id

    でした・・。
    730 : NAME IS - 2008/10/24(金) 20:21:40 ID:??? (+18,+29,-6)
    >>728 のどこがまずいの?
    731 : NAME IS - 2008/10/24(金) 23:00:48 ID:??? (-28,-29,-48)
    質問

    phpmyadminでデーターベース作るじゃん
    そのときの文字コードを後から変更できるの?
    732 : NAME IS - 2008/10/25(土) 00:22:19 ID:??? (+2,+14,+0)
    じゃん
    733 : NAME IS - 2008/10/25(土) 01:50:25 ID:??? (+2,+14,+0)
    じゃん
    734 : NAME IS - 2008/10/25(土) 02:40:49 ID:??? (+22,+29,-2)
    じゃんじゃんいこうぜ!
    736 : 735 - 2008/10/25(土) 17:05:17 ID:UcstQw9n (-21,+28,-29)
    やってみたけどできなかった
    宣言の仕方が違うのか、
    それとも項目の属性で変数宣言はできないなのか

    738 : NAME IS - 2008/10/25(土) 19:12:51 ID:??? (+13,+19,+0)
    >>731
    できるじゃん
    739 : NAME IS - 2008/10/25(土) 20:45:40 ID:??? (+29,+29,-15)
    >>738
    どうやるの?
    「文字コードの変更」
    ってボタンがある?
    744 : 742 - 2008/10/25(土) 23:01:13 ID:??? (-10,+1,+0)
    >>743
    なるほど NOT か・・・
    745 : NAME IS - 2008/10/26(日) 00:12:27 ID:+O8nbZ0E (+28,+29,-71)
    >>741
    そっか。レスありがと。
    他で出てないなら俺のミスだな。
    しっかし、NOW()で取得した時刻をフォームで渡してその時刻以降をSELECTしてるだけなんだけどな。
    極たまに抜けが出るのよ。
    URLエンコード・デコードもちゃんとやってるし、なんだろうなぁ。

    原因探ってみます。
    746 : NAME IS - 2008/10/26(日) 01:09:48 ID:??? (+33,+29,-13)
    おまえの説明では何が抜けたんだかさっぱりわからんのでなんとも
    言えんな。抜けたというレコードの値とselect文をちゃんと示せよ。
    747 : NAME IS - 2008/10/26(日) 01:17:13 ID:+O8nbZ0E (+37,+29,-43)
    >>746
    いや。他でそういう奴がいないんだったら間違いなくスクリプト側のミスだろうって事。
    INNODBで行ロックかかっててもSELECTで抽出されないなんて事はないもんねぇ。

    不正な値が入ってるわけでも、型を間違っているわけでもありません。
    748 : NAME IS - 2008/10/26(日) 01:39:17 ID:??? (-29,-30,-61)
    いろいろ試してたら、SELECT関係ない事がわかった。
    SELECT * FROM table_name ORDER BY date_time LIMIT 10;

    これで抜けが出る。
    DATETIME型ってひょっとしてORDER使えない?

    それともやっぱりアプリケーション側のミスか・・・
    749 : NAME IS - 2008/10/26(日) 01:51:35 ID:??? (-29,-28,-21)
    >>748
    SELECT関係ない→WHERE関係ない

    とりあえずアプリ介さずに再現するか試してみます。
    抜ける頻度は0.5%ぐらい。決まった行が必ず抜けるわけではない。99.5%のクエリは思ったとおりの結果が出る。
    750 : NAME IS - 2008/10/26(日) 01:55:57 ID:??? (+33,+29,-7)
    状況を説明する気がないことはわかった。一人で悩んでください。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 1 + - mysqldump + - rXBUq5sa + - share + - utf8_bin + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について