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

    私的良スレ書庫

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

    元スレMySQL 総合 Part17

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 : NAME IS - 2010/05/04(火) 19:12:59 ID:??? (+35,+29,-65)
    >>850
    なので、日本は例外的にPostgreSQLが大きなシェアを持っている。
    けど、やっぱりLAMPってことでMySQLがかな~りもてはやされたからねい。
    日経うんちゃら読んでわかったつもりになった担当者がMySQLを強制
    というのは普通にあった。
    853 : NAME IS - 2010/05/05(水) 00:32:35 ID:??? (+5,+7,-59)
    PostgreSQLは品質が良いからバグが少ないのか
    ユーザが少ないからバグが抽出しきれていないのかが
    ちょっと分からない
    855 : NAME IS - 2010/05/05(水) 23:26:46 ID:??? (+32,+9,-127)
    正規化するための主キーの設定と検索速度?、今後のメンテナンス?で
    悩んでいるため質問させて下さい。

    重複しないカラムとして「ショップ名」があります。
    (東京店、大阪店、....)

    ショップ名を中心に各店舗の人数とか売上とか細かい詳細があるため
    複数のテーブルに分けて正規化します。

    自分ではショップ名が重複しないから主キーにすれば良いかと考えますが
    こういう場合でもあえてIDみたいな数値型(INT型?)のカラムを作って
    それを主キーにした方が良いのでしょうか?
    (auto_incrementにすればさらに楽だから?)
    856 : NAME IS - 2010/05/05(水) 23:47:40 ID:??? (-7,-6,-1)
    >>854
    目糞鼻糞w
    857 : 855 - 2010/05/05(水) 23:55:32 ID:??? (+32,+29,-38)
    追記

    MySQLで各テーブルを見る時に
    ショップ名が入っていた方が分かり易いというのもあります。

    ただ将来絶対にショップ名が変わらないという保証はないので
    そういう意味でメンテナンス的に?数値にした方がいい??
    858 : NAME IS - 2010/05/06(木) 00:17:03 ID:??? (+26,+28,-14)
    どれもやめたほうがいいと思うけどな。
    859 : NAME IS - 2010/05/06(木) 00:54:45 ID:??? (-29,-30,-127)
    主キー列を更新するっていうのが筋悪なので
    名前が変わることのある店名のようなものは主キーにしないのが定石。

    名前を主キーにすると外部キーをつけたときにメンテナンスしづらくなるし、
    RDBMSによってはそもそも主キー列が更新できないものもある(TimesTenとか)

    なので店舗IDを主キーにするのがふつうで、これをauto_incrementにするかどうか。
    auto_increment列は売り上げとか日々データが増えるテーブルに対して
    つけるものだと考えているので、私なら店舗IDはauto_incrementにしない。
    860 : NAME IS - 2010/05/06(木) 11:42:23 ID:??? (+21,+29,+0)
    >>856

    読んでないだろお前
    861 : NAME IS - 2010/05/06(木) 11:46:57 ID:??? (+26,+29,-50)
    >>856
    ソース読むんだよ、坊や。
    バイナリ拾って「あぁグチャグチャやんw」って言っちゃダメだよ、坊や。
    863 : NAME IS - 2010/05/06(木) 16:36:37 ID:??? (-17,-30,-313)
    mysqlについて質問です
    よろしくお願いします

    table_a
    |orders_id|orders_date|
    |  1  |20100101  |
    |  2  |20100101  |
    |  3  |20100101  |


    table_b
    |orders_id|shop_kind|
    |  1  |  0  |
    |  3  |  1  |


    table_bのshop_kindが1以外のものと、table_bにorders_idは無いがtable_aにorders_idが存在するレコードを抽出したいのですが、クエリをどう記述すればいいかわかりません
    以下のSQLのXXXXXXXに何か入れればできそうなのですが、どうすればいいですか?

    select ta.orders_id from table_a ta left join table_b tb on (ta.orders_id = tb.orders_id) where (tb.shop_kind !='1' or XXXXXXX);

    結果はorders_idが1と3のものが取れればいいです
    865 : NAME IS - 2010/05/07(金) 19:08:16 ID:??? (-19,-30,-96)
    MySQLで、INSERTしようとすると
    「the table 'table_name' is full ERROR 1114」
    と出て登録できなくなりました。
    MySQLのバージョンが5.1で、ENGINEは、NDBCLUSTERです。
    tmp_table_sizeとmax_heap_table_sizeをデフォルトの16Mから
    200Mへ変更してみても同じエラーになります。
    パッと見よく分からない質問かもしれませんが、
    こんなことが原因の可能性があると思う方がいましたら
    教えてください。お願いします。
    866 : NAME IS - 2010/05/07(金) 20:19:19 ID:??? (-26,-29,-33)
    MySQL_Cluster や NDBCLUSTER をわからずに言うけど
    保存用ディレクトリのあるパーティションが
    いっぱいとかじゃないの?
    メモリテーブルならどこのサイズなんだろうかな...
    867 : NAME IS - 2010/05/08(土) 01:26:49 ID:??? (-27,-30,-94)
    tmp_table_sizeとmax_heap_table_sizeはMEMORYストレージエンジンの設定だから
    NDBとは関係ないパラメータ、のはず

    Sun Micro.のときはよく宣伝してたけど
    正直MySQL Cluster使ってる人は超少ないと思う
    869 : NAME IS - 2010/05/10(月) 18:14:05 ID:??? (-29,-30,-76)
    username、pointというカラムがあるテーブルがあるとして、
    ランキングの順位をつけて出力するSQLはどのようにかいたら
    うまくいくでしょうか。
    3位が4名いても次は4位となるランキングとなってます。

    現在のところは select username,point from table order by point asc;
    でプログラム側で処理しておりますが、全てSQL側で処理ができれば
    便利だと思い、質問させていただきました。

    よろしくお願いいたします。
    873 : NAME IS - 2010/05/12(水) 11:42:48 ID:??? (+27,+29,-29)
    ビューは普通にSELECT文を発行した結果返ってくる結果を
    1つのテーブルに見せかけるだけのもの
    当然、データは最新のものになるよ
    874 : NAME IS - 2010/05/12(水) 12:04:02 ID:??? (-7,-8,+2)
    >>873
    ありがとうございます。
    SELECTのエイリアスみたいなものですか。
    876 : 865 - 2010/05/14(金) 16:46:55 ID:??? (+24,+29,-26)
    >>866-868
    回答ありがとう御座いました。
    ちょっと原因の特定ができず、
    前任者の作ったシステムで本番環境だったため、
    4日ほどかけて全部SQL-serverに移行しました。
    877 : NAME IS - 2010/05/18(火) 21:26:26 ID:??? (-27,-30,-156)
    質問させてください。

    table_main
    +---------+-----------+
    | main_id | main_name |
    +---------+-----------+
    | 1 | NAME1 |
    | 2 | NAME2 |
    | 3 | NAME3 |
    +---------+-----------+

    table_sub
    +---------+----------+
    | main_id | have_num |
    +---------+----------+
    | 1 | 10 |
    | 2 | 10 |
    | 2 | 20 |
    | 3 | 10 |
    | 4 | 20 |
    +---------+----------+

    このようなテーブルがあったとします。
    この中から、たとえば「have_numを 10 と 20 両方もつ main_id の main_nameを取得する」
    という SQL 文はどのように書けばよいのでしょうか。

    サブクエリなど勉強中でいまいち方法が思いつきません。
    お詳しいかた教えていただけましたら幸いです。

    バージョンは5です。
    878 : NAME IS - 2010/05/18(火) 22:47:52 ID:??? (-26,-30,-48)
    試してはいない。

    SELECT tm.main_name
    FROM
     table_main tm,
     table_sub tsa,
     table_sub tsb
    WHERE
       tsa.have_num = 10
     AND tsb.have_num = 20
     AND tsa.main_id = tsb.main_id
     AND tsa.main_id = tm.main_id
    879 : NAME IS - 2010/05/19(水) 21:26:34 ID:??? (-12,-11,-39)
    >>878
    ありがとうございます!

    have_numをもつ条件をさらに増やすとなると、
    同様に SELECT する同一テーブルがどんどん増えてしまうのですが、
    効率をよくするよい方法はありませんよね…?
    880 : NAME IS - 2010/05/19(水) 22:58:04 ID:??? (+0,-30,-189)
    もしかしたら、この辺でどうだろ?

    SQL質疑応答スレ 9問目
    http://pc11.2ch.net/test/read.cgi/db/1252492296/6
    6 :NAME IS NULL :2009/09/09(水) 19:37:35 ID:???
    よくある質問3

    (問)
    ID HOGE
    01 A
    01 B
    01 C
    02 A
    03 B

    HOGEをAもBもCも持っている、ID:01だけ取り出すにはどうすればよかですか

    (答1)
    SELECT id
    FROM TableName
    WHERE hoge in ('A','B','C')
    GROUP BY id
    HAVING count(DISTINCT hoge) = 3
    ;

    (答2)
    select *
    from TableName T1
    where not exists (select *
             from (values 'A', 'B', 'C') T2 (HOGE)
             where not exists (select *
                      from TableName T3
                      where T1.ID = T3.ID
                      and T2.HOGE = T3.HOGE
                      )
             )
    ;
    ※valuesの部分(Table Value Constructor)はDBMSによって文法がかなり違うので注意
    882 : NAME IS - 2010/05/20(木) 21:57:54 ID:??? (+0,+0,+0)
    >>880
    ありがとうございます!
    このような方法があるのですね。
    大変勉強になりました。

    さらに、これを発展させて、

    table_main
    +---------+-----------+
    | main_id | main_name |
    +---------+-----------+
    | 1    | NAME1   |
    | 2    | NAME2   |
    | 3    | NAME3   |  
    +---------+-----------+

    table_sub
    +---------+---------+
    | main_id | item_id |
    +---------+---------+
    | 1    | 1    |
    | 2    | 1    |
    | 2    | 2    |
    | 3    | 1    |
    | 4    | 2    |
    +---------+---------+

    table_item
    +---------+-----------+
    | item_id | item_name |
    +---------+ ----------+
    | 1    | アイテム1 |
    | 2    | アイテム2 |
    +---------+-----------+

    「アイテム1 と アイテム2 の両方もつ main_id の main_nameを取得する」
    という風に複雑になると、どのようにやればいいのでしょうか。

    まず item_name に対応した item_id を取得し、
    それを両方もつものを >>880 の方法で調べる……
    という風な方法は思いつきましたが、
    1つの SQL 文で記述する方法がわかりませんでした。

    お詳しい方教えていただけましたら助かります。
    883 : NAME IS - 2010/05/22(土) 01:52:20 ID:??? (-17,-30,-160)
    インポートについての質問です。
    最新MySql Windows番にて、csvをインポートしようとすると

    ERROR 1292 (22007): Incorrect datetime value: '2010/05/20 00:00:00
    2' for column 'Date' at row 1

    と出るのですが、日付データの最後についてる 2 の意味が分かりません。
    使用したSQL文は以下のとおりです。

    LOAD DATA INFILE "FileName.csv"
    INTO TABLE TableName
    FIELDS TERMINATED BY "," ENCLOSED BY '"'
    LINES TERMINATED BY "/r/n";

    Dateはテーブルの最後のフィールドで、他のフィールドのエラーは解決しましたが
    このエラーだけ解決できません。エディタでcsvを開いたら"でくくられてないのに
    取り込んでみたら"でくくられていたりと、いろいろと躓きまくっています・・・

    どうか助言をお願い致します。
    884 : 883 - 2010/05/22(土) 02:14:29 ID:??? (-27,-30,-20)
    自己レスです解決しました。
    LINES TERMINATED BY "/r/n"; を
    LINES TERMINATED BY "\r\n";

    に書き換えたところうまくゆきました。
    スレ汚し失礼しました。
    886 : NAME IS - 2010/05/23(日) 07:20:46 ID:??? (-26,-29,-91)
    パスワードを知ればよろし。

    どうしても分からないなら、mysql.userテーブルの該当の ユーザ@マシンのパスワードを消してしまう。
    (これはrootとかのパスワードが分からないと出来ないだろうけど)
    887 : NAME IS - 2010/05/26(水) 17:34:29 ID:??? (-27,-29,-9)
    3306を使ったDB接続ってNAT越えられますか?
    888 : NAME IS - 2010/05/26(水) 17:34:57 ID:??? (+8,+20,+0)
    もちろん
    889 : NAME IS - 2010/05/26(水) 20:49:06 ID:??? (+21,+23,-4)
    3306だけ通せばいいのでわりと楽なほう
    890 : NAME IS - 2010/05/26(水) 22:08:51 ID:??? (+27,+29,-16)
    なるほど ありがとうございます
    たしかにOracleだと他のポートも必要でしたよね
    891 : NAME IS - 2010/05/26(水) 23:44:13 ID:??? (+27,+28,-16)
    >>887
    セキュリティーの心配は?
    892 : NAME IS - 2010/05/26(水) 23:47:20 ID:??? (+31,+29,-35)
    >891
    まぁ確かにセキュリティの問題はありますね
    お客がやりたい 責任は取るって言われるとやるしかないんです

    F/Wで元IPを固定したらまぁ簡単に問題は起こらないと思いますが・・・
    893 : NAME IS - 2010/05/27(木) 11:50:14 ID:??? (+27,+29,-1)
    待ち受けポート番号変えておけばちょっとは安全かもよ
    894 : NAME IS - 2010/05/27(木) 13:51:15 ID:??? (-25,-26,-12)
    コマンドプロンプトでSelect文を実行すると
    件数が多くなると全体を見れ無くなるんですが
    txtファイルに出力するしかないですか?
    895 : NAME IS - 2010/05/27(木) 13:54:58 ID:??? (-21,-14,-2)
    コマンドプロンプトの行数を増やす
    897 : NAME IS - 2010/05/27(木) 22:13:38 ID:??? (+27,+29,-26)
    とりあえず、コマンドプロンプトのプロパティを開いて、レイアウトタブを選択して、
    その中の画面バッファのサイズの高さを増やしてみよう。
    900 : NAME IS - 2010/05/28(金) 08:20:39 ID:??? (+13,+18,-2)
    >>894
    何がしたいのか?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 2004 + - config + - Warning + - 経過時間 + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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