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

    私的良スレ書庫

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

    元スレMySQL 総合 Part15

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    401 : NAME IS - 2009/02/05(木) 18:18:32 ID:??? (+53,+15,-13)
    >>391
    分からないんだったらtext型にしとけ
    402 : NAME IS - 2009/02/05(木) 19:51:00 ID:??? (+69,+26,-67)
    正規化をするコツを教えてほしいです。

    正規化してる方は、まず非正規化から 第1正規化→第2正規化 としてるんでしょうか?

    非正規化から一気に → 第3正規化 とかできませんよね?

    ちなみにPHPMYADMINを使用しております。

    ご教授よろしくお願いします。
    403 : NAME IS - 2009/02/05(木) 20:01:39 ID:??? (+13,-30,-92)
    PDOなんだけど、

    データーベースの構造が以下の通りで、

    ID(プライマリーキー) | name | value
    1             |りんご | 3
    2             |みかん | 6
    3             |すいか |12


    このとき、ID=1のレコードの、バリューを取ってきて、
    表示する。これだけのことなのですが、PDOのfetchを使って、
    どうやって書けばいいですか?おしえてください。
    404 : NAME IS - 2009/02/05(木) 20:35:36 ID:??? (+81,+30,-82)
    >>402
    ケースバイケースだけど自分は第一正規形からいきなり
    第三正規形かなぁ。
    データ設計がしっかりしていて関数従属性をちゃんと把握
    出来ている場合は推移的従属をみつけるのも難しくない。

    とりあえず3NFまでざっくりバらしてみてから、データの
    挿入や更新とか考えてちょこちょこいじくります。
    405 : NAME IS - 2009/02/05(木) 20:56:43 ID:??? (+68,+29,-12)
    >>403
    宿題は自分でやりましょう
    406 : NAME IS - 2009/02/05(木) 21:50:06 ID:??? (+68,+29,-6)
    >>404
    ありがとうございます。
    何か便利なツールとかないんでしょうかね

    頭固くて混乱するんですよね。。
    407 : NAME IS - 2009/02/05(木) 22:31:45 ID:??? (+17,-30,-81)
    正規化で悩んで追求しすぎて
    >>403 のような例だと

    id | link | attribute | 値
    1 | 0 | 0 | name
    2 | 0 | 0 | value
    3 | 0 | 1 | りんご
    4 | 0 | 1 | みかん
    5 | 0 | 1 | すいか
    6 | 3 | 2 | 3
    7 | 4 | 2 | 6
    8 | 5 | 2 | 12

    みたいなテーブル一本で全部処理しようという発想になったんですが
    ありでしょうか?
    408 : NAME IS - 2009/02/05(木) 22:36:52 ID:??? (+66,+29,-2)
    >>405
    わからないなら、無理に書き込みしなくてもよい。
    409 : NAME IS - 2009/02/05(木) 22:56:08 ID:??? (+59,+29,-12)
    >>407
    その解法でいかにして正規化の問題が解決されるのか
    説明出来るのであればありかな。
    410 : NAME IS - 2009/02/06(金) 01:00:56 ID:??? (+57,+29,-15)
    MySQLの「生みの親」、サンを離れる
    http://www.atmarkit.co.jp/news/200902/05/monty.html

    うおー
    411 : NAME IS - 2009/02/06(金) 01:51:26 ID:??? (+49,+26,+1)
    なるほど
    ありがとうございました
    412 : NAME IS - 2009/02/06(金) 02:17:38 ID:??? (+21,-3,+0)
    >>407
    アリエネェw
    413 : NAME IS - 2009/02/06(金) 03:08:18 ID:??? (+0,+0,+0)
    id | link | attribute | 値
    1 | 0 | 0 | name
    2 | 0 | 0 | value
    3 | 0 | 1 | りんご
    4 | 0 | 1 | みかん
    5 | 0 | 1 | すいか
    6 | 3 | 2 | 3
    7 | 4 | 2 | 6
    8 | 5 | 2 | 12
    9 | 0 | 0 | price
    10 | 3 | 9 | 100
    11 | 4 | 9 | 20
    12 | 5 | 9 | 500

    になるんですね
    わかります
    414 : NAME IS - 2009/02/06(金) 03:10:53 ID:??? (-2,-30,-19)
    13 | 0 | 0 | unit
    14 | 3 | 13 | 個
    15 | 4 | 13 | 袋
    16 | 5 | 13 | 切
    (ry
    415 : NAME IS - 2009/02/06(金) 06:08:27 ID:??? (+52,+29,-1)
    どうやって集計すんだよ
    416 : NAME IS - 2009/02/06(金) 16:20:02 ID:??? (+14,-29,-82)
    レプリケーションについての質問です。
    host1(m) -> host2(s)にレプリケーションするとき、全てのスキーマじゃなくていくつかのスキーマだけ選んでレプリケーションさせることはできますか?
    大事なスキーマだけをバックアップさせたいのですが全部を転送されるともったいない気がしてしまうのです。
    418 : 416 - 2009/02/06(金) 19:26:59 ID:??? (+0,-29,-3)
    >>416
    解決できるっぽいので自己フォロー。ありがとうZawodny。
    http://dev.mysql.com/doc/refman/5.1/en/replication-rules.html
    422 : NAME IS - 2009/02/07(土) 00:01:35 ID:??? (-7,-30,-41)
    UPDATE items LEFT JOIN month ON month.id=items.id
    SET items.price=month.price
    WHERE month.id=1;
    423 : NAME IS - 2009/02/07(土) 00:05:58 ID:??? (-2,-30,-31)
    UPDATE items
    SET items.price = (SELECT month.price FROM month WHERE month.id = items.id)
    WHERE items.id=1;
    424 : NAME IS - 2009/02/07(土) 01:25:02 ID:??? (+49,+26,+1)
    なるほど
    ありがとうございました
    426 : NAME IS - 2009/02/07(土) 14:32:11 ID:??? (+57,+29,-14)
    SQLを二つに分けると、その間に別処理がとか
    考えないとダメ。なるべくトランザクション
    を使いなさいよ。
    427 : NAME IS - 2009/02/07(土) 14:54:17 ID:09J3/u2A (+22,+29,-57)
    サイボウズラボの中の人が、q4mっていうストレージエンジンを開発してるようだけど、
    http://labs.cybozu.co.jp/blog/kazuho/archives/2008/05/road_to_mq_with_q4m.php
    非同期で書き込みたいなら、ブラックホールストレージエンジンをレプリケーションすれば
    良いだけに思える。
    これを使えば何がうれしいのかよくわからない。

    エロい人おせーて。
    428 : NAME IS - 2009/02/07(土) 22:48:19 ID:??? (+12,-30,-248)
    >>394の質問と微妙にかぶるんだけど、
    >>397のは、その一つを取り出すため用に、
    一つクエリを送信だけど、
    いくつかレコードが出てきたその中の二番目とか
    三番目を取り出すことってできますか?
    >>397の例でいうと、
    mysql> select * from t order by c1 limit 0, 5;
    で、6個出てきた中の2と4と6だけ選びたいとなると、
    mysql> select * from t order by c1 limit 2, 1;
    mysql> select * from t order by c1 limit 4, 1;
    mysql> select * from t order by c1 limit 6, 1;
    みたいに三回同じことをやって、それぞれで$row['c2']みたいに取り出さないといけないのでしょうか?
    429 : NAME IS - 2009/02/07(土) 22:52:48 ID:??? (+0,-30,-42)
    $rows[1]['c2'];
    $rows[3]['c2'];
    $rows[5]['c2'];
    430 : NAME IS - 2009/02/08(日) 09:13:30 ID:??? (+2,-29,-86)
    >>429
    ありがとう
    やってみた
    できた。
    でも、取り出せたのは取り出せたんだけど、
    c2のaをいろんな文字に変えてみたら、最初の一文字しか取り出せなっかった・・
    例えば、c1の3のc2が、bcdだったとき、bしか取り出せない・・
    mysql_fetch_arrayでやってみたんだけど違うのかな・・
    431 : NAME IS - 2009/02/08(日) 09:48:37 ID:??? (+41,+23,+0)
    日本語でどうぞ
    433 : NAME IS - 2009/02/08(日) 10:47:42 ID:??? (+59,+29,-11)
    >>428
    あーそういうことか。
    それだと、429のやり方では無理だよ。
    一つ一つ限定して取り出すしかない。
    436 : NAME IS - 2009/02/08(日) 11:29:55 ID:??? (-9,-28,-14)
    >>417
    Order Byでは無理だよ
    437 : NAME IS - 2009/02/08(日) 13:53:37 ID:??? (+20,-7,-4)
    countって0は表示してくれないのかよおおおおおおおおおおおおおおおおおおお おわたorz
    438 : NAME IS - 2009/02/08(日) 13:57:42 ID:??? (-2,-30,-14)
    だめだ、HAVING (count(test) >= 0)
    で、0も表示してくれるかなと思ったけどだめだった
    439 : NAME IS - 2009/02/08(日) 14:33:47 ID:??? (-1,-29,-4)
    ifnullでも0が無視される
    これはどうしようもない
    440 : NAME IS - 2009/02/08(日) 15:37:49 ID:??? (+51,+28,-1)
    日記はチラシの裏へ
    441 : NAME IS - 2009/02/08(日) 15:41:17 ID:??? (-1,-29,-10)
    coalesce(count(test)、0)
    442 : NAME IS - 2009/02/08(日) 15:47:05 ID:??? (-3,-29,-26)
    >>436
    MySQLは
    ORDER BY IS_NUM(c2), c2
    みたいな書き方出来ないっけ?
    444 : NAME IS - 2009/02/08(日) 19:01:23 ID:??? (+57,+29,-37)
    スレーブをついうっかり更新した場合とか
    5.1でもスレーブをついうっかり更新したら不整合になるよ
    445 : NAME IS - 2009/02/08(日) 20:49:54 ID:??? (+53,+29,-108)
    >>443
    確実に行を確定できないクエリを投げれば不整合起きるね。
    たとえば DELETE文を ORDER BY なしで LIMIT つけて実行したらどの行が削除されるかマスタとフレーブで相違がでる可能性がある。こんなクエリ投げる奴がタコだけど。 行ベースレプリではこのケースでも発生しなくなると思うが未検証。
    446 : NAME IS - 2009/02/09(月) 09:31:53 ID:??? (+3,-30,-76)
    (SELECT * FROM tbl_A
    EXCEPT
    SELECT * FROM tbl_B)
    UNION ALL
    (SELECT * FROM tbl_B
    EXCEPT
    SELECT * FROM tbl_A);

    ms sql で上記の様なSQL文を使っていたのですが、MySQLでは使えないのでしょうか?
    代わりとなるSQL文が思いつかなくて困っております。
    447 : NAME IS - 2009/02/09(月) 13:20:46 ID:??? (+63,-30,-120)
    phpmyadminでは
    SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1
    を計算して表示してくれるんだが、phpで1のところに変数入れたらクエリ送信に失敗する・・

    $date = 1;
    $sql = "SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - $date";

    なんでだと思って、php側で変数使わずに、

    $sql = "SELECT * FROM TABELE WHERE TESTDATE = DATE(NOW()) - 1";

    ってやったらいける。
    これって同じじゃないのか?・・
    どなたかおたすけを
    448 : NAME IS - 2009/02/09(月) 13:23:42 ID:??? (-5,-29,-6)
    echo $sql で何が出る?
    449 : NAME IS - 2009/02/09(月) 13:23:54 ID:??? (-1,-29,-9)
    var_dump($sql)の結果は?
    450 : 447 - 2009/02/09(月) 13:24:25 ID:??? (-1,-29,-12)
    うおお自己解決
    実際は$date = 1;
    のところを、$pdate にしてたんだけど
    これを、$paとか別のやつに代えたらうまく行った・・
    なんでだろう・・
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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