MySQL

全4809件中361~380件表示
  • GROUP BYについて

    お世話になっております。GROUP BY に関してつまずいています。 色々と調べているのですが、解決できないため質問させて下さい。 まず下記のような履歴テーブルがあります。 rireki_member_noとは投稿者のIDであり、title1、title2に登録された日付データ(date型)は その投稿者が投稿した日付が登録されています。(title1だけの場合もあればtitle2だけの場合もあり、両方の場合もあります) rirekiテーブル rireki_no rireki_member_no  title1     title2  1       2       2014-09-12   2       1                 2014-09-12  3       3       2014-09-14   2014-09-14  4       2       2014-09-18  5       1                 2014-09-19 また、下記は投稿者のテーブルであり、rireki_member_noと、member_noは紐付いたものとなります。 memberテーブル memner_no  member_name  1       佐藤  2       吉田  3       佐々木 そこで今回行いたいのは、タイトルを指定し、且つ日付を範囲指定した時、その会員の名前、そして投稿した日付を一覧で表示したいと考えていますが、その際のSQL文が分からず困っている状況です。 イメージ的には、 title2を指定し、2014-9-13から20149-19と範囲指定した場合 3  佐々木  2014-09-14 2  吉田   2014-09-19 といった結果を求めたいと考えています。 お恥ずかしいとは思いますが、実は昨夜からずっと悩んでいたりして・・・ rirekiテーブル単体であれば、 http://norm-nois.com/blog/archives/1293 で似たような内容で紹介されているのですが、今回のようにJOINが絡むと難易度が高くなっている状況です。 お忙しいなか恐縮ですが、お知恵を頂戴出来れば幸いです。 宜しくお願い致します。

    • ベストアンサー
    • a4_chapp
    • MySQL
    • 回答数3
  • SQLで、重複レコードを削除

    no type name ---------------------------- 1 1 peach 1 1 peach 2 5 tomato 4 6 apple 4 6 apple 1 1 peach  上記のように、重複するレコード(行)が存在してしまっているテーブルで、重複をなくす処理を、SQLで簡単に行なうにはどうしたら良いでしょうか。MySQLです。上の例では、下のように更新したいのです。よろしくお願いします。 no type name ---------------------------- 1 1 peach 2 5 tomato 4 6 apple

    • ベストアンサー
    • amadaira
    • MySQL
    • 回答数3
  • MySQLの構造について

    応援しているサッカーチームの試合データをMySQLを利用しテーブルに格納したいと考えています。 そこでMySQLやPHPに詳しい方にお聞きしたいことがあります。 例えばA・B・Cと3チームあるとしたら、A対B、A対Cの試合データは格納しますが、B対Cのデータは不要です。あくまでもAチームに関するデータのみを格納し、私が開設しているサイトで閲覧者に検索フォームから自由な形でデータを参照できるようにしたいです。 参考までに格納したい試合のデータは下記のようなデータです。 http://www.j-league.or.jp/result/2014/j2/030201.html 現在、既に一定のデータはテーブルに格納しています。現在のテーブルの構造です。 https://www.dropbox.com/s/z2qc2zff2fn8m8f/gamedb.pdf?dl=0 スタメンの選手やベンチの選手、交代選手、警告をもらった選手、得点者などはテーブルに格納していません。これらのデータは試合ごとに大きく数が異なるのでどのようにして格納すれば良いのか分からなかったので。 現在は格納していないこれらのデータを格納することで下記のような条件を指定しても対象データが羅列されるようにしたいです。 ・○○選手がイエローカードをもらった試合。 ・点を取られている選手ランキング。□□選手(※対戦相手の選手)には一番点を取られているなど。 ・○○選手がスタメンだった試合。 ・○○選手が途中出場した試合。 ・○○選手はこれまで△試合に▲分出場している。 ・□分~□分の間の得点は何点。逆に失点は何点など。 などなどです。 私が現在思いついている構造ですが、新しくテーブルを複数作成する。こういったケースではそれぞれのテーブルに共通のIDを振る必要があるとのことですが、これは日付(開催日)で代用しようと思っています。同じ日に2試合は絶対にないので。 作成するテーブルは下記のようにします。 ・ホームチームスタメンテーブル ・アウェーチームスタメンテーブル ・ホームチームの警告をもらった選手テーブル ・アウェーチームの警告をもらった選手テーブル ・ホームチーム得点者テーブル ・アウェーチーム得点者テーブル .....などなど。 こういったテーブルを作成し、それぞれID(開催日)と一定数のカラムを予め用意する。得点者のテーブルでしたら1試合で一方のチームが10点を取ることは限りなく0に近いのでとりあえず10用意する。同じように得点した時間も10用意。 datadating(開催日) | goal_1_min(得点時間) |goal_1(得点者) | goal2_min(得点時間) | goal2(得点者) |.......... このように格納していけば思い通りの結果が得られるようになるのかな?と思っていますが、果たしてこのようなテーブルで作成していき、後々サイト側の検索フォームから指定した条件で無事に結果を得られるか不安です。 ちょっとしたことでも良いので、詳しい方の意見をお聞きしたいです。 どうぞよろしくお願いします。 長文失礼しました。

  • MySqlのロックについて

    MySql初心者ですのでお手柔らかにお願いします。 最近MySqlにロックという機能があることを知りました。 同時にデータベースの操作がされると困る場合にロックするのだと思うのですが、そういうことって結構起こるのでしょうか? updateの場合、取得してから更新するまでラグがあるので問題が起こるのはイメージできるのですが、insertする時にも起こりえるのでしょうか? だとすればどんな操作でもロックはするに越したことはないように思えますが、オプションで用意されてるということは必要な場面とそうでない場面があるということなのでしょうか。 また、不具合が起こるのであれば自分で実際に試してみたいのですが、そもそも同時に操作を行うやり方がわかりません。 意図的に不具合を出しながらテストする方法があれば教えていただけないでしょうか。 よろしくお願いします。

  • phpmyadminでの特権が表示方法

    hostingerというレンタルサーバーで MySQLデータベースを作成しphpMyAdminで接続したのですが 特権メニューが表示されておらず、ユーザーの追加が出来ませんでした。 rootでログインしようにも、 ログイン名[root] + データベース作成時設定したパスワードでは サーバーに接続できず ログイン名[root] +パスワード無しでも接続出来ませんでした。

  • 階層構造のテーブルの行の取得について

    このジャンルでお願いします。 次のようなテーブルで CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user (name) VALUES ('user1'); INSERT INTO user (name) VALUES ('user2'); INSERT INTO user (name) VALUES ('user3'); CREATE TABLE IF NOT EXISTS item ( id int(11) NOT NULL AUTO_INCREMENT, parent_id INT, name varchar(32) NOT NULL, FOREIGN KEY (parent_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO item (parent_id, name) VALUES (null, 'item1'); INSERT INTO item (parent_id, name) VALUES (1, 'item2'); INSERT INTO item (parent_id, name) VALUES (2, 'item3'); INSERT INTO item (parent_id, name) VALUES (3, 'item4'); INSERT INTO item (parent_id, name) VALUES (2, 'item5'); INSERT INTO item (parent_id, name) VALUES (null, 'item6'); INSERT INTO item (parent_id, name) VALUES (6, 'item7'); INSERT INTO item (parent_id, name) VALUES (null, 'item8'); CREATE TABLE IF NOT EXISTS user_item ( id int(11) NOT NULL AUTO_INCREMENT, user_id INT, item_id INT, type varchar(16) NOT NULL, PRIMARY KEY(id), FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (item_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user_item (user_id, item_id, type) VALUES (1, 1, 'allow'); INSERT INTO user_item (user_id, item_id, type) VALUES (1, 3, 'deny'); INSERT INTO user_item (user_id, item_id, type) VALUES (1, 7, 'allow'); user_itemのuser_idが1のitemの行を取得したいのですが、 その条件として ・user_itemテーブルのtypeが'allow'のitem_id以下のitemの行 ・ただしtypeが'deny'のitem_id以下の行は除く この例だと、user_itemの INSERT INTO user_item (user_id, item_id, type) VALUES (1, 1, 'allow'); の行によってitemテーブルの INSERT INTO item (parent_id, name) VALUES (null, 'item1'); INSERT INTO item (parent_id, name) VALUES (1, 'item2'); INSERT INTO item (parent_id, name) VALUES (2, 'item3'); INSERT INTO item (parent_id, name) VALUES (3, 'item4'); INSERT INTO item (parent_id, name) VALUES (2, 'item5'); が取得候補になりますが、 INSERT INTO user_item (user_id, item_id, type) VALUES (1, 3, 'deny'); によって INSERT INTO item (parent_id, name) VALUES (2, 'item3'); INSERT INTO item (parent_id, name) VALUES (3, 'item4'); の行は除かれ、 INSERT INTO item (parent_id, name) VALUES (null, 'item1'); INSERT INTO item (parent_id, name) VALUES (1, 'item2'); INSERT INTO item (parent_id, name) VALUES (2, 'item5'); の行が取得されます。 つまりitemテーブルにおいて上の階層の直近の(user_itemと結合して取得した)typeが 'allow'である場合のみ取得したいのです。 INSERT INTO item (parent_id, name) VALUES (null, 'item1');←取得 INSERT INTO item (parent_id, name) VALUES (1, 'item2');←取得 INSERT INTO item (parent_id, name) VALUES (2, 'item3'); INSERT INTO item (parent_id, name) VALUES (3, 'item4'); INSERT INTO item (parent_id, name) VALUES (2, 'item5');←取得 INSERT INTO item (parent_id, name) VALUES (null, 'item6'); INSERT INTO item (parent_id, name) VALUES (6, 'item7');←取得 INSERT INTO item (parent_id, name) VALUES (null, 'item8'); 複雑ではありますが、これはどのようなSQL文にすれば良いのでしょうか?

  • 複数のidの、すべての最新値を求めたい

    以下のようにDBに登録されています。 id date cost 129 1404313200 6000 76 1404313200 5000 129 1404226800 4000 54 1404226800 75000 129 1404226800 55000 日付はUNIX TIMEです。 各IDの、最新日のcostを抽出したいのですが、どのようにすればいいでしょうか。 上記だと 76 1404313200 5000 54 14042268007 5000 129 1404313200 6000 が抽出される方法を知りたいです。 (ID129のdateが1404313200で一番大きい=最新) よろしくお願い致します。

    • ベストアンサー
    • umioyo
    • MySQL
    • 回答数1
  • FILE権限ない場合のファイルの入出力方法は?

    エックスサーバーを借りているのですが、FILE権限がありませんでした。 GRANTで権限を付与しようとしてもエラーとなり付与できませんでした。 OUTFILEでCSVファイルを出力できないのですが、レンタルサーバーでデータベースをファイルで入出力するには一般的にどのような方法でやるのでしょうか? dumpではなく、Webサービスを利用するユーザーにデータベースのデータをcsvファイルとして出力したいのです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • suffre
    • MySQL
    • 回答数1
  • 最初に挿入された行だけ取得したい

    このジャンルでお願いします。 次のようなテーブルで CREATE TABLE IF NOT EXISTS user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user (name) VALUES ('user1'); INSERT INTO user (name) VALUES ('user2'); INSERT INTO user (name) VALUES ('user3'); CREATE TABLE IF NOT EXISTS item ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO item (name) VALUES ('item1'); INSERT INTO item (name) VALUES ('item2'); INSERT INTO item (name) VALUES ('item3'); CREATE TABLE IF NOT EXISTS user_item ( id int(11) NOT NULL AUTO_INCREMENT, user_id INT, item_id INT, PRIMARY KEY(id), FOREIGN KEY (item_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (user_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user_item (user_id, item_id) VALUES (1, 1); INSERT INTO user_item (user_id, item_id) VALUES (2, 1); INSERT INTO user_item (user_id, item_id) VALUES (3, 2); INSERT INTO user_item (user_id, item_id) VALUES (1, 2); INSERT INTO user_item (user_id, item_id) VALUES (1, 3); INSERT INTO user_item (user_id, item_id) VALUES (3, 3); user_itemテーブルでのselectで、 user_idが1で一番最初に挿入された行だけ を取得したいのですが、どのようなSQL文にすれば良いのでしょうか? この例なら INSERT INTO user_item (user_id, item_id) VALUES (1, 1);←取得 INSERT INTO user_item (user_id, item_id) VALUES (2, 1); INSERT INTO user_item (user_id, item_id) VALUES (3, 2); INSERT INTO user_item (user_id, item_id) VALUES (1, 2);←user_id=3が最初に挿入されているので取得しない INSERT INTO user_item (user_id, item_id) VALUES (1, 3);←取得 INSERT INTO user_item (user_id, item_id) VALUES (3, 3);

  • このようなテーブルを取得するSELECT文は?

    テーブルtb1が以下のようになっているとします id, region, station1, station2, station3, station4, station5 0, 東京, 池袋駅, 渋谷駅, null, 新宿駅, null 1, 横浜, null, 横浜駅, 戸塚駅, 菊名駅, 反町駅 2, 大阪, 梅田駅, 天満駅, 野田駅, null, null このようなテーブルを、以下のような結果として取得するSELECT文はどのようになるのでしょうか? 0, 東京, 0, 東京, 池袋駅 0, 東京, 渋谷駅 0, 東京, 新宿駅 1, 横浜, 1, 横浜, 横浜駅 1, 横浜, 戸塚駅 1, 横浜, 菊名駅 1, 横浜, 反町駅 2, 大阪, 2, 大阪, 大阪駅 2, 大阪, 梅田駅 2, 大阪, 野田駅 複数の列を行にするのがわかりません。 そもそも、tb1の設計が良くないのですが、これは変えられないと先方に言われました。 どうぞよろしくお願い致します。

    • ベストアンサー
    • suffre
    • MySQL
    • 回答数2
  • SQLを教えてください。

    おせわになります。助けてください。 id | nendo | sdate | edate 0 | 2012 | 2012-04-01 | 2013-03-31 1 | 2013 | 2013-04-01 | 2014-03-31 2 | 2014 | 2014-04-01 | 2015-03-31 2 | 2015 | 2015-04-01 | 2016-03-31 といったデーターベースがあります。 2014/03/31 という日付がどの年度の日付なのかを 調べるSQLをどう書けばいいのかわかりません。 SELECT * FROM m_nendo WHERE sdate <= '2014/03/31' and edate >'2014/03/31' といった書き方をしているのですが、思う結果を取れません。 ネットでどういう言葉で検索したらいいのかも・・・わかりません。 書き方をご存知の方、教えて頂けませんか? よろしくお願いします。

    • ベストアンサー
    • 123daa
    • MySQL
    • 回答数2
  • 検索インデックスの書き方

    Mysqlの検索用のインデックスの書き方を調べているのですが、なかなか見つかりません。 テーブル、customersを作成して、その中に、項目として、 `email` varchar(100) default NULL を定義した場合、 インデックスの付与として、 KEY `idx_customers_email` (`email`) と書いた場合と、 FULLTEXTインデックスの付与として FULLTEXT KEY `email` (`email`) と書いた場合、何が違うのでしょうか? また、このあたりの詳しい説明が載っているサイトとかあれば是非教えてください。

  • [DB]データベースを利用する上での利点を教えて

    お世話になります。 DB初心者です。 現在とある中規模の掲示板システムを設計しています。 データベースを利用する事での利点をお聞きしたいです。 お恥ずかしながら、当方あまりデータベースを利用した事がなく これまで掲示板等のログは全てテキストファイル形式で利用してきました。 従って、データベースの技術的な知見も乏しい事から、今回データベースを 利用するにあたっては、そのメリットを最大限に活かせる事が 出来ないのではないかと不安に考えています。 (逆にシステム高負荷になったり…) そこで、データベースを利用する事で、何がどうメリットがあるのか もしくはデメリット等、教えて頂けませんでしょうか? よろしくお願いします。

  • mysqlコマンドとPHPで同じSQLの結果が違う

    MySQL 5.5で、mysqlコマンドからSQLを流したときと、PHPから同じSQLを発行したときで結果が違うのです。 どうも日付のパースが関係しているようで、「2014-08-19」と書くとどちらも同じ結果になるのに、 「2014-8-19」と書くとPHPでは1行も返ってこなくなります。 再現例: ================== CREATE TABLE t (day date NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO t (day) VALUES ('2014-08-19'); SELECT * FROM t WHERE day = '2014-8-19'; +------------+ | day | +------------+ | 2014-08-19 | +------------+ 1 row in set (0.00 sec) ↑同じSELECTをPHPから発行すると1行も返ってこない。 ================== mysqldとmysqlは5.5.30。 phpinfo()のmysqlのセクションでは Client API version 5.5.30 と出ています。 show variablesで見るとdate_formatはどちらも%Y-%m-%dになっています。 他にどこを確認すればいいでしょうか?

  • MySQLでのINDEXの貼り方

    MySQLでのINDEXの貼り方にてご教示いただきたく思います。。 現在、ブログサイトを作っていて、記事ID毎にSNSでシェアされた数を保存する仕組みを作っています。 ストレージエンジン = InnoDB を設定しています。 post_idに同じIDが無い場合はINSERTし、ある場合はUPDATEとなります。 検索をかけるSELECT文の想定は以下の2つだと思っています。 SELECT * FROM tablename WHERE post_id = 1234; SELECT facebook FROM tablename WHERE post_id = 5678 作成したテーブル構造は以下になっています。 名前 | データ型 | 属性 | NULL | デフォルト値 | その他 ID | bigint(20) | UNSIGNED | いいえ | なし | AUTO_INCREMENT post_id | bigint(20) | UNSIGNED | いいえ | 0 facebook | bigint(20) | UNSIGNED | いいえ | 0 twitter | bigint(20) | UNSIGNED | いいえ | 0 googleplus | bigint(20) | UNSIGNED | いいえ | 0 pocket | bigint(20) | UNSIGNED | いいえ | 0 pinterest | bigint(20) | UNSIGNED | いいえ | 0 hatena | bigint(20) | UNSIGNED | いいえ | 0 line | bigint(20) | UNSIGNED | いいえ | 0 total | bigint(20) | UNSIGNED | いいえ | 0 datetime | datetime | | いいえ | 0000-00-00 00:00:00 リレーションは行う予定は無いのですが行うかもしれません。 分からないながらもINDEXを設定 ( 添付画像参照 ) してみました。 ご指導ご教示の程よろしくお願いいたします。

    • ベストアンサー
    • pacopapi
    • MySQL
    • 回答数1
  • SQL文について質問させて頂きます。

    いつもお世話になっております。いろいろSQL文の本を読んだのですがわからないので今回もよろしく お願い致します。 SELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari WHERE kid IN (1,4))) というSQL文があるのですが、これだと1,4が1つでも含まれるリストが出てくるのですが1,4が完全に一致しないと出てこないようにするにはどのようにSQL文を変更すれば良いのでしょうか? 何卒よろしくお願い致します。

  • ウェブサイトの翻訳機能について

    いまサーバーで管理している情報をすべて英語に翻訳してデータベースに登録するにはどういう方法があるのでしょうか? Google Translateを使ってすべてのデータを英語にすることはできたのですが、変換されたあとそのデータをどうやってデータベースにいれてあげればいいかで止まってます。 回答よろしくおねがいします!

  • MySQLについての質問です!!

    現在MySQLを学習しているんですが、ちょっとわからない問題が出てきまして質問させていただきます。 トリガーの問題なんですが、 各種テーブルに対して更新処理(追加、削除、更新)した場合、その処理を実施した時間、ユーザー名、テーブル名、処理内容を別のテーブルに自動保存する って内容なんですが、ここのテーブル名、処理内容の自動保存の構文がびっくりするくらい分かりません。。。。。 結構調べたのですが、なかなかヒットしないので質問させて下さい(涙) お願い致します(涙)

    • ベストアンサー
    • hanaguma
    • MySQL
    • 回答数1
  • MySQLで複数のマスターの受けは可能でしょうか?

    最近MySQLをちょこちょこ触っているものですが、ふとした疑問にぶち当たりました。 もし、ご存じの方がいらっしゃいましたらご教授頂けないでしょうか? 質問 AというMySQLマスターServer BというMySQLスレーブServer があり、お互いにレプリケーションの関係を築いております。 ここに、突然 全く別のデータが入っている CというMySQLマスターServerの受け皿としてBをスレーブに出来ますでしょうか? つまり、B(MySQLスレーブServer)はAのスレーブでもあり、Cのスレーブでもある。 ということが出来るのでしょうか? (出来る、出来ないで結構です、やり方などのご教授はいりません。) MySQLにお詳しい方いらっしゃいましたらアドバイス頂けないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Ezreal
    • MySQL
    • 回答数1
  • 実店舗と通販の在庫を連携についてです。

    お世話になります。 店舗販売、通販を始めて約7年程が経ちました。 少しずつではありますが固定客も増えつつあります。 しかし、弊社は現在のいくつかの問題を抱えています。 下記は、弊社が抱えている問題です。 店舗と通販の在庫が合わず棚卸しの際に、残業が続いてます。 店舗と通販の共通ポイント化がされていません。 顧客ランクの管理。 売上集計がデーターベースとの連携が取れていません。 解決策としてO2O(オーツーオー)を取り入れようと思い製品の説明会に何度も足を運びましたが弊社に合う製品がありませんでした。 結果、店舗と通販の製品を一元管理できるように自社開発することになりました。 ここからが本題なのです。データーベース設計する際、店舗と通販は別々のテーブルを作成する必要があるのでしょうか? 以上、宜しくお願い致します。