回答数
気になる
-
phpMyAdminのSQL文実行エラー
http://okwave.jp/qa/q8209284.html 以上の質問で、まだ解決には至っていません!? 御回答をいただいたのですが、私にはその意味が分かりませんでしたので 再度質問しました。 初めてすることは、手探り状態なので、苦労しています_ _! 教本を読んでも、エラー対策などは 、何も書かれておらず、ネットで一生懸命、状況を説明して、解決するしか、方法 はないので、宜しくお願致します。 それで、エー・っと #1007 - Can't create database 'xmas'; database existsの ”エラーメッセージ”をGoogle翻訳で直訳したら ”#1007 - データベース'クリスマス'を作成できません、データベースが存在している” とでて、原因として、”データベースが存在している”からできない!? うーん よく分かりませせん どなたか、こうゆう場合の解決策として、代替でいいですので、手順を箇条書きにして、教えて もらっていいでしょうか!^^ 1)・・・ 2)・・・ 3)・・・ 以上宜しくお願いします。
質問日時: 2013/08/08 05:03 質問者: javascriptphp
ベストアンサー
3
0
-
MySQL 最大値のレコードの特定
SQLが上手く作れないためお知恵をお貸し頂ければ幸いです。 articleテーブルに存在するユーザの一覧に、記事の投稿件数、記事に含まれるsizeの最大値、最大値が投稿された記事の登録日時、記事のタイトルを加えたものを抽出したいです。 [ article ] article_id user_id size insert_unixtime title ---------------------------------------------------------- 1 100 18 20130101 aaaaaaaaaaaa 2 100 10 20130102 bbbbbbbbbbbb 3 100 18 20130103 cccccccccccc 4 200 11 20130201 dddddddddddd ↓↓希望する抽出結果↓↓ article_id user_id count max_size insert_unixtime title ---------------------------------------------------------- 3 100 3 18 20130103 cccccccccccc 4 200 1 11 20130201 dddddddddddd 自己結合等で、ユーザ毎の最大sizeを抽出してそれに該当するレコードを探すことであるていどはできたのですが 最大sizeが複数あった場合に、両方のレコードを取得してしまいます。(上記の例では、article_id 1と3を抽出してしまう。 ※最大sizeが複数会った場合はinsert_unixtimeが大きい方のタイトルを表示したい。 うまく1SQLで抽出できないでしょうか。
質問日時: 2013/08/07 22:12 質問者: yubaxpaapa
解決済
2
0
-
このMysql文の結果をこうしたい…
こんにちわ。PHPとMysqlで色々やろうとしている者です… すっごい初心者です。 こんな感じのテーブルがあって… tagsテーブル [int id(PK)(A_I)][varchar tag(index)][int u_id] 1、うどん、5 2、そば、5 3、うどん、2 4、ラーメン、2 5、そうめん、1 6、そば、3 ....(つづく) こんな文があります… SELECT u_id, count(CASE WHEN tag = "うどん" or tag = "そば" THEN 1 ELSE NULL END ) AS `agr` FROM tags GROUP BY u_id ORDER BY agr DESC 結果は [u_id][agr] 5、2 8、2 4、1 3、0 ....(つづく) tagが「うどん」or「そば」のu_idを集計して多い順にソートするんですが これの結果を「うどん」and「そば」の結果だけを出力したい(この場合agrの結果2のみ) …要するにtagをandで検索したいという事です… 回答よろしければお願いします…
質問日時: 2013/08/07 20:46 質問者: auau5656
ベストアンサー
2
0
-
MySQL大量のデータから特定の項目を抽出する構造
MySQLで10,000を超えるデータが有り、その中から最大6件まで指定して表示するプログラムを作る予定です。 6つの枠が有りそれぞれの枠にデータを選んでセットしていく形式です。 この場合データのテーブル側に枠にセットされていることを示すフラグのようなものを付けてそれをもとに抽出するか、別のテーブルにデータIDの記入された data1~data6 のカラムを作ってそれをもとに抽出するかどちらが速度・構造的に良いのでしょうか?
質問日時: 2013/08/07 11:20 質問者: django13
ベストアンサー
3
0
-
MySQLの特定のカラムの内容を全削除
お世話になります。 表題のとおり、MySQLの特定のカラムの全データを削除したいのですが、ググるとテーブル全削除やWHEREで「30以下を削除」などの条件付きはすぐに出てくるのですがカラムの一行だけを空にする方法が見つけられません。 phpmyadminのSQLタブから実行しています。 ご達人の諸先輩方、どうぞお知恵をお貸しください。 phpmyadminのSQLタブに記載するSQL文をお教え願えますでしょうか。 宜しくお願いします。 MySQL、Window7 64bit Apacheサーバ phpmyadmin
質問日時: 2013/08/02 16:18 質問者: makino03
ベストアンサー
4
0
-
カラムに設定した日付が24時間以内かの確認方法
SQLに関して質問させて頂きます(MySQLを使用しています)。 下記のようなデータを使用して、賞味期限に設定した日付が、24時間以内にせまったレコードの危険フラグを1にしたい場合、どのようなSQLを記述すれば良いでしょうか? SQLの実行は1回でも2回に分けてもらってもよいので、効率的な方法があればよろしくお願いします。 ※必要であればPHPを使用して下さい。 <カラム> |商品名|賞味期限|危険フラグ| <例> | 魚 | 2013-07-31 21:30:00 | 0 | | 肉 | 2013-08-01 21:00:00 | 0 | | 野菜 | 2013-08-02 21:30:00 | 0 | SQLを実行した時の時刻が「2013-07-31 19:00:00」であれば、肉の賞味期限が24時間以内に迫っているので、危険フラグを1にしたいと考えています。 よろしくお願いします。
質問日時: 2013/07/31 19:25 質問者: non05410
ベストアンサー
1
0
-
フレンドリストのようなものを作る場合の設計
かなり初心者です。もしかしたら妙な事を訊いているのかもしれません。 php5.4.16とmysql5.5.32でSNSのフレンドリストのような機能を作ろうと思います。 フレンド最大数は1000とします。この場合、1000個もカラムを作るのでしょうか? それとも、会員個別にテーブルを作ってそこで管理するのでしょうか。 もしくは、テーブルは一つとし、会員番号のカラムを二つ用意、関係性を示したテーブルを作るのでしょうか? もしくは、カラムは一個で文字列で操作したりするのでしょうか?(カンマで区切る等) パフォーマンス的にどの設計が正しくて、どの設計が間違いなのでしょうか… 回答よろしくお願いします。
質問日時: 2013/07/31 10:00 質問者: auau5656
ベストアンサー
2
0
-
MySQLでWHEN句のサブクエリ中にて
MySQL ver.5.0.95です。 PHPからSQL文を作ってDBへインサートしているのですが 重複した値が合った場合はupdateするように書いています。 TBL1には |id |string |count 1 aaa 0 2 bbb 3 3 ccc 1 TBL2には |id2 |string2 |count2 1 aaa 0 2 bbb 2 3 ccc 1 実際はもう少し複雑ですが、こういう感じでデータが入ってるとします。 このとき、TBL1のそれぞれをインサート若しくはアップデートするのに TBL2の同一IDのものの、count2の状態によって場合分けしたく 同一IDのcount2が1以上なら変更しない、という風にするため以下のように書いたのですが insert into TBL1 values (1, "aaa", 3), (2, "bbb", 3), (3, "ccc", 3), (4, "ddd", 3) on duplicate key update count = CASE WHEN (select count2 from TBL2 where id2 = values(id)) >=1 THEN count ELSE count + values(count) END; #1064 - You have an error in your SQL syntax;というエラーになって出来ません。 WHENの中のサブクエリで、where id2 = values(id) 恐らくこの文がダメなようです。 例えば決め撃ちで1つ1つ書くと通ります。 insert into TBL1 values(1, "aaa", 3) on duplicate key update count = CASE WHEN (select count2 from TBL2 where id2 = 1) >=1 THEN count ELSE count + values(count) END; insert into TBL1 values(2, "bbb", 3) on duplicate key update count = CASE WHEN (select count2 from TBL2 where id2 = 2) >=1 THEN count ELSE count + values(count) END; insert into TBL1 values(3, "ccc", 3) on duplicate key update count = CASE WHEN (select count2 from TBL2 where id2 = 3) >=1 THEN count ELSE count + values(count) END; insert into TBL1 values(4, "ddd", 3) on duplicate key update count = CASE WHEN (select count2 from TBL2 where id2 = 4) >=1 THEN count ELSE count + values(count) END; これをエラーになったような文に変えて1文にまとめたいのですが、無理でしょうか? あとそもそもこれをまとめたほうが速いと思ってそうしたいのですが、 変わらないのなら1文1文;でつなげて書くやり方でいこうと思っています。 まとめると速くなることはあるでしょうか?
質問日時: 2013/07/29 22:23 質問者: man_ahoaho
ベストアンサー
1
0
-
MySQLについて
MySQL 初心者です。 テーブルを作成して、いろいろとデータを入れ込もうと思うのですが、 CURRENT_TIMESTAMP を指定すれば、データを入れた瞬間にその時の日付が登録されると思うのですが、 それとは別に勝手に連番をつけていくような機能はないのでしょうか?
質問日時: 2013/07/29 10:10 質問者: nakisan2011_12
ベストアンサー
2
0
-
クライアント毎に重複をカウントしたい
MYSQLを勉強中です。 下記のようなテーブルがあります。 【クライアトテーブル】: クライアントID 1 | A社 2 | B社 3 | C社 4 | D社 【お問合せテーブル】: お問合せmail |お問合せ先のクライアントID|お問合せ日時 aaa@aaa.com |1 |2013-02-01-10:00:00 aaa@aaa.com |2 |2013-03-01-10:00:00 bbb@bbb.com |3 |2013-04-01-10:00:00 ccc@ccc.com |4 |2013-04-02-10:00:00 aaa@aaa.com |1 |2013-04-03-10:00:00 ここで、 クライアント毎に、4月分の問合せ数を表示したいのですが、 4月1日~4月末日に問合せのあったメールアドレスと、 2月1日~3月末日に問合せのあったメールアドレスを比較して、 下記のように重複分をクライアント毎にカウントしたいです。 問合せ数: A社:1件 重複1件 C社:1件 重複1件 D社:1件 重複0件 クライアントIDを個別で指定すれば正しく表示できるのですが、 クライアント一覧を取得するのはどのようなSQLを書けばよいのでしょうか。。。 もう1ヶ月悩んでおります。 すみませんが、教えて頂けますと幸いです。
質問日時: 2013/07/26 17:38 質問者: charles_maototo
ベストアンサー
1
0
-
GROUP_CONCAT✕複数列で、違うレコード数
MySQLで、「GROUP_CONCAT」を「複数列」に適用させ、それぞれ異なるレコードを1つにまとめようとしたのですが、 取得出来る結果が、多い方の数に引き連られてしまいます。 ざっくりとした質問でアレなのですが、これは結合の仕方が悪い、 と推測されるでしょうか? そもそも「GROUP_CONCAT」を複数列に適用させる場合、それぞれ異なるレコード数をまとまることはできるのでしょうか?。 ■期待した取得結果 [テーブルAカラムc] => tokyo,osaka [テーブルAカラムd] => japan,japan [テーブルBカラムe] => windows [テーブルBカラムf] => man ■実際の取得結果 [テーブルAカラムc] => tokyo,osaka [テーブルAカラムd] => japan,japan [テーブルBカラムe] => windows,windows [テーブルBカラムf] => man,man 「テーブルB」の取得結果が、「テーブルA」取得結果数に引き連られてしまいます ■SQL(抜粋) SELECT GROUP_CONCAT(a.c) AS c, GROUP_CONCAT(a.d) AS d, GROUP_CONCAT(b.e) AS e, GROUP_CONCAT(b.f) AS f FROM hoge h LEFT JOIN テーブルA a ON (h.id = a.hoge_id) LEFT JOIN テーブルB b ON (h.id = b.hoge_id)
質問日時: 2013/07/26 08:37 質問者: re97
解決済
2
0
-
PDOでMySQL接続した際の文字化けについて
http://ponk.jp/php/basic/php_mysql すいません。データベースを初めて勉強中なのですが、上記のサイトに書いてあるように文字をphpで表示させた場合日本語が???に文字化けします。いろいろググってみたのですが解決できず先に進めません・・。 照合順序などはutf8_general_ciとなっていまして、phpの方も<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />とutf-8が指定してありますので問題ないと思います。 考えられる原因というのはどんなものがありますか? テーブル表 CREATE DATABASE men; USE men; CREATE TABLE udon(name TEXT, price INT); INSERT INTO udon VALUES('たぬきうどん', 340); INSERT INTO udon VALUES('てんぷらうどん', 440); INSERT INTO udon VALUES('カレーうどん', 420); INSERT INTO udon VALUES('うどん定食', 520); 表示プログラム <table border="1"> <tr><th>名前</th><th>価格</th></tr> <?php $pdo = new PDO("mysql:dbname=men", "root"); $st = $pdo->query("SELECT * FROM udon"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['name']); $price = htmlspecialchars($row['price']); echo "<tr><td>$name</td><td>$price 円</td></tr>"; } ?> </table>
質問日時: 2013/07/24 23:09 質問者: toto073
ベストアンサー
2
0
-
【mysql.php】チェックボックスの処理
データベースにチェックボックスのON、OFF状態を 保存しようとしているのですが、 やり方が色々あり、どのやり方が一番いいのかわかりません。 調べたところ、大きく以下の4つがあることがわかりました。 ----------------------------------------- 方法1 チェックボックス分カラムを用意する ----------------------------------------- 例 id name flag4 flag3 flag2 flag1 15 なまえ 1 1 0 0 ----------------------------------------- 方法2 ビット演算を使う ----------------------------------------- id name bit 15 なまえ 12 ----------------------------------------- 方法3 カンマで区切ってデータを入れる ----------------------------------------- id name check 15 なまえ 3,4 ----------------------------------------- 方法4 チェックボックス管理テーブルを作る ----------------------------------------- main_tb id name 15 なまえ check_tb id check 15 4 15 3 それぞれ、一長一短があると思うのですが それぞれのメリット・デメリット、一般的にどの方法が好まれているのか等 アドバイス頂けると嬉しいです。
質問日時: 2013/07/23 21:19 質問者: yuzuru0024
ベストアンサー
1
0
-
姓名の前後を入れ替えるSQL命令文ありますか?
お世話になります。 現在、DB内のindividualというテーブルのname_enというフィールドにおいて、 日本人の名前が英語表記で登録されています。 ただし、一般的な表記でなく、「姓, 名」というようになっています。 例えば、玉木宏さんであれば、 Tamaki, Hiroshi となっています。 これを一般的な Hiroshi Tamaki に一発で置換するようなSQL命令文がありましたら教えていただきたいのですが、 如何でしょうか。 何卒よろしくお願いいたします。 バージョン情報などは下記の通り引用します。 MySQL Server: Localhost via UNIX socket Server version: 5.1.67 Protocol version: 10 MySQL charset: UTF-8 Unicode (utf8) Web server Apache/2.2.23 MySQL client version: 5.1.67 PHP extension: mysqli phpMyAdmin Version information: 3.3.10.5
質問日時: 2013/07/20 18:59 質問者: CPACBCEO
ベストアンサー
2
0
-
複数のテーブルから情報を引き出して整理
「去年の登録者」「今年の登録者」というテーブルがあるとします。 カラムは両方とも「名前」「性別」「年齢」があり、人物の情報が入ってます。 両方にデータが入ってる人もいれば、片方にしかデータが入ってない人もいます。 この2つのテーブルから男性のデータを引き出し 名前 去年の年齢 今年の年齢 太郎 21歳 22歳 二郎 24歳 データなし 三郎 データなし 20歳 このようにしたいのですがsql文が思いつきません。 アドバイスをください。
質問日時: 2013/07/19 09:03 質問者: poniponi69
ベストアンサー
2
0
-
複数のテーブルからデータを取得したい
1つのテーブルから重複したデータを取り除いて表示するときに使う 【select distinct カラム名 from テーブル名;】 がありますよね。 それと同じようなことを複数のテーブルをまたいで行いたいのですがうまくいきません。 ちなみに両方のテーブルのカラム名は同じです。 【select distinct カラム名 from テーブル1 union select distinct カラム名 from テーブル2;】 としても重複を取り除いた後にテーブルを結合してるので結果的に両テーブルの重複した値を取り除くことができず。 そこで 【select distinct T1.カラム名, T2.カラム名 from テーブル1 T1. テーブル2 T2;】 としてみたのですが、クエリを実行中のまま反応がないので悩んでます。 ちなみに2つのテーブルのデータはそれぞれ2万件ほどです。 こういう時どういうsql文を組むのが正しいのでしょうか?
質問日時: 2013/07/18 15:17 質問者: poniponi69
ベストアンサー
2
0
-
正規化して1対多のデータの管理や構造と取り扱い
初めて質問させていただきます。 タイトルはなんとつけたらよいか分からなかったので的外れだったらすみません。 PHP5とMySQL5でプログラムの練習を始めました。 しかしどうしても躓いて分からないところがあり、質問させていただきました。 従業員のデータの入ったテーブル、職種のテーブル、従業員と職種を結ぶテーブルがあるとします。 例えば以下のようなものです。 従業員テーブル +-----------+---------+-----+ | worker_id | name | age | +-----------+---------+-----+ | 1 | hiroshi | 20 | | 2 | seiya | 30 | | 3 | akane | 18 | | 4 | yukari | 18 | +-----------+---------+-----+ 従業員職種テーブル +-----------+--------+ | worker_id | job_id | +-----------+--------+ | 1 | 1 | | 1 | 2 | | 1 | 3 | | 1 | 4 | | 2 | 1 | | 2 | 2 | | 3 | 2 | | 3 | 3 | | 3 | 4 | | 4 | 1 | +-----------+--------+ 職種テーブル +--------+----------+ | job_id | job_name | +--------+----------+ | 1 | hole | | 2 | kitchen | | 3 | delivery | | 4 | cleaning | +--------+----------+ ここで職種cleaningに属する従業員を除いた従業員のデータ一覧を、表示するようなことがしたいと考えています。 このテーブルでいうとhiroshiとakaneはcleaningに属するので除いて、seiyaとyukariのデータが一覧で表示されるという感じです。 select 従業員職種テーブル.worker_id, 従業員テーブル.name, 従業員テーブル.age GROUP_CONCAT(職種テーブル.job_name order by 職種テーブル.job_id) from 従業員職種テーブル left join 従業員テーブル on 従業員職種テーブル.worker_id=従業員テーブル.worker_id left join ot_dow on 従業員職種テーブル.job_id=職種テーブル.job_id group by 従業員職種テーブル.worker_id order by 従業員職種テーブル.worker_id このようなSQLで従業員の職種まで含めたデータを一覧にすることは出来たのですが、対象を除外するような方法が分からずじまいです。 SQLでできるのではと思っていますが、もしかしてPHPでやらなければいけないとかのことも含め、教えていただければ助かります。 よろしくお願いいたします。
質問日時: 2013/07/14 03:54 質問者: horikei
解決済
2
0
-
異なるデータベース間でinner joinしたい
現在VB.NET 2008を用いて、システムを作成しています。 Access2008の.accdb内のデータと、MySQL内のデータをinner joinして取得したいと考えていますが、 可能でしょうか? 可能であればどのようにすればよいでしょうか?
質問日時: 2013/07/13 17:21 質問者: con014057
ベストアンサー
2
0
-
mysqlでのsql文
下記の'←追加'と書いた部分を追加して実行しましたが、動いてくれません。 ご教授お願いします。 ("SELECT song.song_ID, song.song_name, song.song_name_yomi, kashu.kashu, ka2.kashu as kashu2, ka3.kashu as kashu3, ka4.kashu as kashu4, ka5.kashu as kashu5, ka6.kashu as kashu6, ka7.kashu as kashu7, ka8.kashu as kashu8, ka9.kashu as kashu9, ka10.kashu as kashu10, kashu.kashu_yomi, sakushi, sakushi_yomi, sakkyoku, sakkyoku_yomi, hennkyoku, hennkyoku_yomi, tie_up.tie_up, ti2.tie_up as tie_up2 kashu_yomi, ←追加 ky2.kashu_yomi as kashu_yomi2 ←追加 FROM (((((((((((((((( song left JOIN kashu ON song.kashu_1_ID = kashu.kashu_ID) left JOIN kashu_yomi ON song.kashu_1_ID = kashu.kashu_ID) ←追加 left JOIN kashu_yomi ky2 ON song.kashu_2_ID = ky2.kashu_ID) ←追加 left JOIN kashu ka2 ON song.kashu_2_ID = ka2.kashu_ID) left JOIN kashu ka3 ON song.kashu_3_ID = ka3.kashu_ID) left JOIN kashu ka4 ON song.kashu_4_ID = ka4.kashu_ID) left JOIN kashu ka5 ON song.kashu_5_ID = ka5.kashu_ID) left JOIN kashu ka6 ON song.kashu_6_ID = ka6.kashu_ID) left JOIN kashu ka7 ON song.kashu_7_ID = ka7.kashu_ID) left JOIN kashu ka8 ON song.kashu_8_ID = ka8.kashu_ID) left JOIN kashu ka9 ON song.kashu_9_ID = ka9.kashu_ID) left JOIN kashu ka10 ON song.kashu_10_ID = ka10.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) LEFT JOIN tie_up ti2 ON song.tie_up_2_ID = ti2.tie_up_ID where song_name like '%%'" ))
質問日時: 2013/07/13 16:59 質問者: IrohaKujoh
ベストアンサー
6
0
-
mySQLで指定したカラムに一致するものに追加
【名字、名前、昨日のメモ、今日のメモ】というカラムがあります。 名字、名前、昨日のメモは過去のデータなので、新しく今日のメモを追加したい場合どうしたらよいでしょう? また、一括でデータを挿入するときに、名字・名前の両方一致するものがないデータがあれば新しくレコードを作るという風にしたいのですが、可能でしょうか? なお、同姓同名は存在しないものとします。
質問日時: 2013/07/13 13:28 質問者: poniponi69
ベストアンサー
2
0
-
4つのテーブルで構成される売上データをまとめたい
お世話になっております。4つのテーブルの結合について質問させて下さい。(MySQL5) データベースの内容は販売に関するもので、以下のような4つのテーブルがあります。(不必要なカラムは省略しています) テーブル名:goods(商品 goods_no | goods_name 1 りんご 2 みかん 3 いちご テーブル名:member(顧客データ) member_no | member_name 1 鈴木 2 佐藤 3 小林 4 斉藤 テーブル名:slip(伝票番号) slip_no|sales_member_no|sales_date 1 2 2013-6-1 2 4 2013-6-1 3 1 2013-6-2 4 3 2013-6-3 ※slip.sales_member_no = member.member_noです。 テーブル名:sales(売上から入金までのデータを時系列で登録) sales_no|sale_slip_no|sales_goods_no|sales_goods_price|sales_goods_cnt|request|receipt 1 1 2 350 5 1750 2 1 3 400 3 1200 3 2 1 200 5 1000 4 2 3 400 4 1600 5 1 receipt 2950 6 2 receipt 2600 7 3 1 200 8 1600 8 4 2 350 5 1750 9 3 receipt 1600 10 4 receipt 1750 ※sales.sale_slip_no=slip.slip_noです。 sales.sales_goods_no=goods.goods_noです。 以上のようなテーブルがあり、4つのテーブルを結合して、 伝票単位で、売上詳細(sales)、商品名(goods)、顧客名(member)を以下のように伝票番号順で一覧で表示したいと考えていますが、エラーだったり、期待している結果を得ることが出来ません。 どのようにすれば宜しいのかアドバイスのほど頂戴出来れば幸いです。 slip_no 商品名 個数 単価 請求額 入金額 1 みかん 5 350 1750 1 いちご 3 400 1200 1 2950 2 りんご 5 200 1000 2 いちご 4 400 1600 2 2600 3 りんご 8 200 1600 3 1600 4 みかん 5 350 1750 4 1750 以上、お忙しい中恐縮ですが、宜しくお願い申し上げます。
質問日時: 2013/07/08 01:12 質問者: a4_chapp
解決済
1
0
-
書き込みの衝突
MYSQL初心者です。 簡単なメッセ機能を作りたいと思っています。 MyISAMテーブルを使おうとしています テーブルロックならしようとおもえばなんとかできます 質問(ロックしなかった場合) 複数の人が同時に書き込んだ(INSERTした)ときにどんな壊れ方をするんでしょうか? 一番最後の書き込まれた行だけ壊れるんですか? 壊れ方はどんなふうになるんですか?書き込まれないだけですか? 壊れた後でも、書き込みはできますか? テーブルロックしておけば重複したINSERTはふせげますか?
質問日時: 2013/07/05 19:32 質問者: flash0
ベストアンサー
3
0
-
mysqlで表の結合下記のように書きましたが
mysqlで表の結合。 下記のように書きましたが、うまく動きません。 「left JOIN kashu ka2 ON song.kashu_2_ID = ka2.kashu_ID」 「ka2.kashu as kashu2」 ↑この部分、2つを追加しました。 何も表示されませんでした。 上の二つを削除すると動きます。 何がいけないのでしょうか? mysql_query("SELECT song.song_ID, song_name, song_name_yomi, kashu, kashu_yomi, sakushi, sakushi_yomi, sakkyoku, sakkyoku_yomi, hennkyoku, hennkyoku_yomi, tie_up.tie_up, ti2.tie_up as tie_up2, ka2.kashu as kashu2 FROM (((((( song left JOIN kashu ON song.kashu_1_ID = kashu.kashu_ID) left JOIN kashu ka2 ON song.kashu_2_ID = ka2.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) left JOIN tie_up ti2 ON song.tie_up_2_ID = ti2.tie_up_ID where song_name like '%%'");
質問日時: 2013/07/04 21:55 質問者: IrohaKujoh
ベストアンサー
1
0
-
最大値が抽出できない!
SELECT MAX文で、フィールドの最大値を出しています。 これまで、何の問題もなく動作していたのですが、フィールドの数値が9999を超えたとたん、10000、10001などの数値があっても常に9999を最大値として返してくるようになりました。 どうしてでしょうか? 【説明】 A. 例文は次のようなものです。 SELECT MAX(`idc`) from testinvoice; B. `idc`は長さ13のVARCHERです。整数がLatin1で収納されています。 C. `idc`に収納されているデータは、1580からはじまって、9998、9999、10000、10001まで続く約8500件の連番(整数)です。 D. これまで何年も問題なく最大値を出してきました。 とても不思議です。
質問日時: 2013/07/04 16:48 質問者: ken2547
ベストアンサー
1
0
-
ポイントシステムのDB設計
こんにちは!みなさんのお知恵をお借りしたいと思っています。 下記の要件を満たすDB設計をしたいです。 MySQL5.5 + Java 5で実装予定です。 システム概要 (1)ユーザはWebサイトにて、ポイントを購入し、ポイントを使用することでアイテムが購入できる。 (2)ポイントは常時、購入することが可能で、アイテムも同様に常時、購入可能である。 (3)ポイントには有効期限があり、購入日から有効期限(1年)が過ぎたポイントは無効となる。 (4)購入するポイント数はユーザが任意の値を入力することができる。 (5)アイテムを購入する際に必要なポイント数は、アイテムによって異なる。 (6)ポイントが消失するのは月末である。 (例.2013年7月に購入したポイントは2014年8月1日になると消失する) (5)ユーザー数は300万程度 満たしたい要件 ・現在のポイント残高はWebサイトにて常時閲覧可能としたい。 ・当月に無効となるポイント数は常時閲覧可能としたい ・Webサイトをメンテナンスにして、バッチを流すなどの処理はなるべく避けたい。 お知恵を貸して頂けると幸いです。よろしくお願いします!
質問日時: 2013/07/04 01:58 質問者: payaso2012
解決済
3
0
-
phpMyAdminでインポート
■phpMyAdminでint型フィールドへインポート int型のフィールドへcsvファイルからインポートする際に、元データが空白の場合にインポートするとそのフィールドに勝手に「0」が入ってしまいます。 勝手に「0」が入らないようにするにはどのようにしたらいいのでしょうか。 宜しくお願いします。
質問日時: 2013/07/02 19:18 質問者: onishi28
解決済
1
0
-
phpMyAdminのテーブルにビックリマークが
XAMPPを再インストールして パスワードなどを設定して phpmyadminを起動させると 見覚えのない赤字のビックリマークが出現していました 何が原因なのでしょうか?よろしくお願いします。
質問日時: 2013/07/01 19:59 質問者: heavensliger
解決済
1
0
-
MySQLのgroup by同士の結合について
下記のようなSQLについてご指南頂きたく思います。 下記のようなテーブルがあり、 商品毎の売上を販売店毎に 売れた順に格納しています。 <販売テーブル> No | 商品コード | 販売個数 | 販売店コード --------------------------------------------- 1 | 商品A | 1 | 1 2 | 商品A | 1 | 2 3 | 商品A | 1 | 3 4 | 商品B | 2 | 1 5 | 商品B | 2 | 2 6 | 商品B | 1 | 3 7 | 商品A | 3 | 1 8 | 商品A | 4 | 2 9 | 商品A | 1 | 3 上記のテーブルを使って下記のようなデータを取ってきたく考えております。 |商品コード|販売個数 |販売店コード |商品コード毎販売個数合計 | |※ある商品の店毎の販売総数| |※ある商品の販売総数 -------------------------------------------------------------------------------- | 商品A | 4 | 1 | 11 | 商品A | 5 | 2 | 11 | 商品A | 2 | 3 | 11 | 商品B | 2 | 1 | 5 | 商品B | 2 | 2 | 5 | 商品B | 1 | 3 | 5 ----------------------------------------------------------------------------- やり方としては下記の(1)と(2)の結合ができれば良いと考えております。 一回のSQLで上記の結果を得られるようにしたいと考えております。 どなたかアドバイス頂ければと思います。 宜しくお願い致します。 (1)下記のようなSELECT文で商品コード毎の集計はできました。 SELECT 商品コード,SUM(販売個数) FROM 販売テーブル group by 販売テーブル.商品コード; | 商品コード |販売個数 | |※ある商品の店毎の販売総数 --------------------------------------- | 商品A | 11 | 商品B | 5 (2)また、下記のようなSELECT文で販売店、商品コード毎の集計もできました。 SELECT 商品コード, SUM(販売個数), 販売店コード FROM 販売テーブル GROUP BY CONCAT(商品コード,'and',販売店コード) ; | 商品コード |販売個数 |販売店コード | |※ある商品の店毎の販売総数 | ---------------------------------------------------- | 商品A | 4 | 1 | 商品A | 5 | 2 | 商品A | 2 | 3 | 商品B | 2 | 1 | 商品B | 2 | 2 | 商品B | 1 | 3 ----------------------------------------------------
質問日時: 2013/07/01 16:34 質問者: unmarko
ベストアンサー
2
0
-
2テーブルが同じユーザテーブル参照するときの結合
2つのテーブルで、同じユーザテーブルを参照してデータ取得したいのですが、 どうやって結合すれば良いのでしょうか? ■概要 ・ユーザがアクションに挑戦すると、結果を表示 ・その際、「アクション作成者」と「アクション挑戦者(ユーザ)」を表示したい ※「作成者」「挑戦者」は、同じ「user」テーブルで管理したい ■3テーブル ・「result」「action」「user」 ・「result」「action」テーブルには、それぞれ「user_id」カラムがある ・「result」テーブルには、「action_id」カラムがある。1対多? ■知りたいこと ・一気にまとめて一覧として取得する方法 ・最終的に「結果」と、「result」「action」それぞれに対応した「user」テーブルの「name」カラムを取得したい ■試してみたこと ・これだと「挑戦者名」が取得できない SELECT * FROM result r LEFT JOIN `action` a ON r.`action_id` = a.`id` LEFT JOIN `user` u ON r.`user_id` = u.`id` ・これだと「挑戦者」のユーザIDしか取得できない SELECT *,a.user_id AS actionuser_id FROM result r LEFT JOIN `action` a ON r.`action_id` = a.`id` LEFT JOIN `user` u ON a.`user_id` = u.`id`
質問日時: 2013/06/30 05:51 質問者: re97
ベストアンサー
2
0
-
MySQL「 INT」「 DATETIME」違い
MySQLの「 INT」型と「 DATETIME」型の違いを教えてください。 ・「 DATETIME」型とは、単に日付形式を担保してくれる型に過ぎないのでしょうか? ・日付形式(フォーマット)以外を挿入すると、「0000」になってしまうということでしょうか? ■「 DATETIME」メリット ・データ内容が見た目で分かる以外、何があるのでしょうか? ■「 INT」メリット ・早い?
質問日時: 2013/06/27 10:36 質問者: re97
ベストアンサー
3
0
-
ストアドプロシージャが作成されない
●質問の主旨 phpMyAdminのMySQLで ストアドプロシージャの動作確認をしています。 試しに、 delimiter // create procedure pr30() begin select * from tb; select * from tb1l; select * from tb1; end // delimiter ; というプロシージャを作成して、 実行を押しても、画面が全く変化しません。 エラーの表示さえされません。 (もちろんデータベーステーブルのtb、tb1l、tb1が 存在することは確認済みです) また、作成している最中に、 命令文が勝手に消えることもあります。 普通に select * from tb; と、書いていても消えることはないのですが…。 この現象や対策についてご存知の方がいらっしゃいましたら、 アドバイスをお願いします。 ●環境 windows8 xammp1.8.1 phpMyAdmin3.5.2.2 MySQL5.5.27
質問日時: 2013/06/26 11:59 質問者: dradra33
ベストアンサー
1
0
-
mysql admin
現在MySQL Adminにアクセスしています。 選択できるデータベースが多数あります。 このデータベース内の特定のテーブルの最終更新日が1ヶ月以内のものが何があるのか調べたい時どのような方法がありますか?
質問日時: 2013/06/26 11:47 質問者: platina205
ベストアンサー
1
0
-
SQLのinの使い方
次の2つのテーブルがあります。 テーブル master 形式kata 客先kyaku コードcode テーブル data 形式kata 客先kyaku 発行年月hakko 数量suryo 発行年月が201303と201305の両方があるマスタを抜き出したいため、次のSQLを考えました。 select m.kata,m.kyaku,m.code from master m join data d on m.kata=d.kata and m.kyaku=d.kyaku where 201303 in (select d.hakko from data d where m.kata=d.kata and m.kyaku=d.kyaku) and 201305 in (select d.hakko from data d where m.kata=d.kata and m.kyaku=d.kyaku) 無駄があるようで、また速度向上したいのですが、どう記述していいか分かりません。 教えてください。
質問日時: 2013/06/25 11:46 質問者: toshi_2000
ベストアンサー
3
0
-
「順位データ」の持ち方について教えてください
■環境 ・PHP+MySQL ■質問 ・「順位データ」の持ち方について教えてください ・「順位データ」はデータベース側で保存するものでしょうか? ・あるいはPHPで都度処理するのでしょうか? ・ケースバイケース? ■データベース側で保存する場合 ・「通常データ」だと、該当レコードを「挿入」もしくは「更新」すればそれで済みますが、「順位データ」だと1件データを「挿入」もしくは「更新」するだけで、全レコードに影響を及ぼす可能性があります ・この場合、1レコードでもデータを変更したら、全レコードに変更処理をかけるしかないのでしょうか?
質問日時: 2013/06/25 05:23 質問者: re97
ベストアンサー
2
0
-
複数JOINしているとCOUNTが正しく取得できな
LAMP環境で開発をしています。 SQL文でCOUNTを求める際に、まとめて結果を求めようとして上手く行きません。 状況としては以下です。 テーブルdはidをkeyにa,b,c3つのテーブルとjoinしています。 id = 1の場合、テーブルa,b,cにマッチするレコードがそれぞれに4個、1個、0個あります。 ひとつひとつを SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count FROM d INNER JOIN a ON a.id = d.id WHERE d.id = 1 として結果を求めると4,1,0と出るのですが、まとめて SELECT COUNT(CASE WHEN a.name IS null THEN 1 ELSE null END) as a_count, COUNT(CASE WHEN b.name IS null THEN 1 ELSE null END) as b_count, COUNT(CASE WHEN c.name IS null THEN 1 ELSE null END) as c_count FROM d INNER JOIN a ON a.id = d.id INNER JOIN b ON b.id = d.id INNER JOIN c ON c.id = d.id WHERE d.id = 1 とすると28,5,0という値が返されます。 どのように書けば正しい4,1,0を得られるのでしょうか? よろしくお願いします。
質問日時: 2013/06/24 13:36 質問者: bacchus047
ベストアンサー
2
0
-
MySQLの更新が固まってしまう(IEのみ)
Mysql+phpで日報システムを作っています。 独学でWebサイトの情報を見ながら作っているのですが、 更新系の処理に手間取っています。 環境は以下の通りです。 PHP:5.2.4 OS:WindowsServer2003 SP1 MYSQL:5.1.41 元画面から、ボタンを押してDBの更新処理を行うと、画面が真っ白になってしまい固まった状態になります。 MYSQLの問題かなと当初は思ったのですが、更新自体もされてはいますので、PHPの問題ではと思い投稿させて頂きました。 他の参照系のスクリプトは正常に動作します。 ちなみに、この現象はIEでしか出ません。 FFやChromeでは正常に動作します。 ポップアップブロックも外し、IEのアドインを全部外してみましたが、結果は同じでした。 同様の事態を経験された方、考えられる原因を御存じの方がおられましたら、コメント頂ければ幸いです。 更新スクリプトの内容は以下の通りです。 <?php // MySQL 接続 if (!($cn = mysql_connect("192.168.*.***", "user", "password"))) { die; } // MySQL DB 選択 if (!(mysql_select_db("mydatabase",$cn))) { die; } (中略) $SQL="UPDATE NIPPO SET = ***** "; (中略) print $SQL; // ***** この内容が出ずに固まっている ****** $sts = mysql_query($SQL,$cn); if (!$sts) { print "<br><img src='img/error.jpg' width=32 height=32>"; print "更新に失敗しました。"; print "<br><A HREF='javascript:history.back()'>前のページに戻る</A>"; } else { print "<br><img src='img/inf.jpg' width=32 height=32>更新しました。"; print "<br><A HREF='moto.php'>前のページに戻る</A>"; } } ?> </body> </html>
質問日時: 2013/06/24 11:53 質問者: hatsuzo
ベストアンサー
2
0
-
InnoDBのAuto Incrementsの問題
今回、InnoDBとMyISAMの Auto Increments(以下AI)の挙動に対する 対処方法についての質問になります。 以前は5.1のMySQLを使用していましたが、 最近利用しているホスティング会社の方で変更があり、 MySQL5.6へのバージョンアップが行われ、 そこから発生している問題です。 例えば testtb ------------- id item ------------- 1 aaa 2 bbb 3 ccc ------------- というテーブルがあります。(InnoDB) idはプライマリーキーでAIが設定されています。 基本的にこのテーブルでは itemのアップデートくらいで、 レコードを削除するような動作は起こりません。 ところが管理者サイドのテストの際に 下記のように、でMAX(id)を抽出してそのレコードを削除し、 AIの値を削除したMAX(id)に変更するという動作が稀に発生します。 $sql = "SELECT max(id) FROM testtb "; $result = mysql_query($sql, $con); $maxid = mysql_result($result, 0); $sql = "DELETE FROM testtb WHERE id = '{$maxid}' "; mysql_query($sql, $con); $sql = "ALTER TABLE testtb AUTO_INCREMENT = {$maxid} "; mysql_query($sql, $con); 要するにテストで登録した最新idのレコードを削除し、 AI値も元に戻してテスト前の状態に復旧するという内容です。 以前のMySQLのバージョンでは これが問題なく動作していましたが、 MySQL5.6に変わってから InnoDBの場合には、 ALTER TABLE testtb AUTO_INCREMENT = {$maxid} このSQL文を実行しても結果が全く反映されません。 phpmyadminからも実行してみましたが 実行結果にエラーはでないのですが、 同様に結果は反映されず、AI値の変更が行われません。 少しググってみて、innodb_autoinc_lock_mode の設定が関係しているのではと思い見てみると innodb_autoinc_lock_mode = 1になっていました。 ちなみにこの値は共有DBのため、 ホスティング会社の方での固有の設定で 私の方で変更はできません。 上記の問題はMyISAMでは発生しませんので、 InnoDB固有の特徴によるものかと思います。 innodb_autoinc_lock_modeの設定変更なしで 上記を解消する方法はありますでしょうか? もうMyISAMで運用するくらいしか方法が見つかりません。 それからこれに関連する内容で もう一つ質問があります。 これはphpmyadminに関する質問なのですが、 以前ですと、テーブルを選んで 上メニューの「操作」という箇所から AIの値が確認できて変更もできたかと思うのですが 現在はAIの値を操作する箇所が全く見当たりません。 確認のためにSHOW TABLE STATUSを実行する以外に 確認・変更のできる場所はありませんでしょうか? ちなみにphpmyadminのバージョンは4.0.0です。 よろしくお願いいたします。
質問日時: 2013/06/23 10:22 質問者: kayakiss
解決済
1
0
-
INDEXと検索
INDEXが着いていないカラムをSELECTで検索しても他のカラムにプライマリーキーがあれば、検索は高速になるのでしょか? テーブル ID、NAME IDにプライマリーキーが付いていて、NAMEのカラムのみを検索するときにも高速になるのでしょうか?
質問日時: 2013/06/20 22:52 質問者: flash0
ベストアンサー
2
0
-
AUTO_INCREMENTに0はダメ?
「INT」でかつ「AUTO_INCREMENT」のカラムに0をINSERTしようとするとうまくいかないのですが、 「AUTO_INCREMENT」では0はダメなのでしょうか? それとも「INT」だから?
質問日時: 2013/06/20 10:51 質問者: re97
ベストアンサー
2
0
-
sqlの結果をprint出力
データーベースが下記の様にあります、 PHPファイル内で、 この様なSQLを実行して下記の様にprintしてみましたが、 tie_upの部分、AIRとしか表示されません。 このPHPファイル内のprint($row['tie_up']);部分が怪しそうですが、 解決策が思いつきません。 もちろん、外部キーの設定も済んでいます。 --下記、SQL文-- SELECT * FROM ((((( song left JOIN kashu ON song.kashu_ID = kashu.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) LEFT JOIN tie_up ti2 ON song.tie_up_2_ID = ti2.tie_up_ID --SQL文、終わり-- --下記、phpファイル内のprint文-- while ($row = mysql_fetch_assoc($result)) { print($row['tie_up']); } --print文、終わり-- --データベース-- song +-----------+--------------------+--------------------+--------------------+ | ID | song_name | tie_up_1_ID | tie_up_2_ID | +-----------+--------------------+--------------------+--------------------+ | 0 | 鳥の詩 | 0 | 0 | +-----------+--------------------+--------------------+--------------------+ | 1 | 青空 | 1 | 0 | +-----------+--------------------+--------------------+--------------------+ tie_up +----------------+--------------------+------------------------+ | tie_up_ID | tie_up | tie_up_yomi | +----------------+--------------------+------------------------+ | 0 | AIR | エアー | +----------------+--------------------+------------------------+ | 1 | CLANNAD | クラナド | +----------------+--------------------+------------------------+ --データベース、終わり--
質問日時: 2013/06/20 06:11 質問者: IrohaKujoh
ベストアンサー
1
0
-
mysqlでJOIN文
関係有りそうな部分だけ抜粋します。 mysqlで外部キーを設定して、 下記のようなSQLを実行してみましたが、 #1066 - Not unique table/alias: 'tie_up'と エラーメッセージが表示されました。 何がおかしいのでしょうか? 外部キーは「song」テーブルの「tie_up_1_ID」、同「song」テーブルの「tie_up_2_ID」、 それと「tie_up」テーブルの「tie_up」です。 SQLを触るの5年振りなんで・・・。 SELECT * FROM ((((( song left JOIN kashu ON song.kashu_ID = kashu.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) left JOIN tie_up ON song.tie_up_2_ID = tie_up.tie_up_ID;
質問日時: 2013/06/19 20:55 質問者: IrohaKujoh
ベストアンサー
1
0
-
Column '' not found.
jspファイルを実行するとカラムが見つかりませんというエラーが出ました。 対象のテーブルにoniカラムは置いてあります。 どこを見直せば良いのでしょうか?よろしくお願いします。 java.sql.SQLException: Column 'oni' not found. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920) at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1167) at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2851) at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275) at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:275) at suika.SuikaDAO.findKeisanByID(SuikaDAO.java:134) at suika.SuikaServlet.doPost(SuikaServlet.java:39) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)
質問日時: 2013/06/19 14:24 質問者: kp-umum
ベストアンサー
2
0
-
mysqlでのsql文
下記のようにテーブルが有り、外部キーの設定も済んでいますが、 PHPファイル内で「select * form song WHERE song_name LIKE '%%'」と実行すると 「0,眠り姫,0」と表示されます。 このsql文を実行した上の結果の一番右側を「0」でなく「栗林みな実」と出力したいのですが、 なにぶん最後にsqlを扱ったのが5年以上前で、 全部頭から抜けてしまっていますorz 外部キーは「song」テーブルのkashu_IDと「kashu」テーブルのkashu_IDに設定してあります。 mysqlのバージョンは5.1.69
質問日時: 2013/06/19 12:33 質問者: IrohaKujoh
ベストアンサー
2
0
-
sql(left join)の結合条件のルール
(テーブルA)と(テーブルB)をleft joinした際の結合条件について 詳しい方に伺いたいのですが、 on以下の部分は、(テーブルAの中にあるカラム)と(テーブルBの中にあるカラム)を 比較するような文でなければいけないですか? 例えば、、、 ------------------------------------------------------------------------- SELECT* FROM timeTpl2 AS t LEFT JOIN booked AS b ON t.start = b.startTime AND b.settingDay = $day ------------------------------------------------------------------------- 上記の最後の部分(b.settingDay = $day)は テーブルbにしかない要素を変数($day)と比較しています。 ◆疑問 記述としてだいじょうぶかどうかを知りたいです。 つまりon以下結合条件は必ず左右のテーブルの、存在するカラム のみしか比較する事ができないかどうかが知りたいです。 よろしくお願いします。
質問日時: 2013/06/18 10:26 質問者: hayaken73
ベストアンサー
2
0
-
EXPLAINのtypeがALLのときの対応方法
先日問い合わせたSQLの高速化についてEXPLAINについて教えて頂きました。 そのEXPLAINについて調べながら試していくと、同じphpファイル内で動かしている いくつかのSQL文に対してEXPLAINのtypeがALLとなっていたので対応すべき SQLだとは分かったのですが具体的にどのようなSQL文に書き換えればいいか 分からなかったので再度質問しました。 前提としてWORDPRESSでSQLをPHPファイル内で$wpdb->get_results関数を使って 実行しています。 (例1) 条件一致した件数を求めるSQL SELECT a_mst.a_id FROM a_mst WHERE a_mst.a_price >= 100 AND a_mst.a_price <= 200 AND a_mst.a_print_flg = 0 SQLのSELECT にCOUNT等は使わない方がいいようなので主キーのみを出力させて count関数で件数を求めています。 このSQL文をEXPLAINでphpMyadminで実行すると id=1 select_type=SIMPLE table=a_mst type=ALL possible_keys=NULL key=NULL key_len=NULL ref=NUL rows=a_mstに登録してある件数 Extra=Using where でした。SQL文自体はあるマスタにあるデータから値が100~200のもので、フラグが0のものを 出力するというシンプルなSQL文なのでどう改善すればよいのでしょうか? (例2) 2つのテーブルを結合させて条件一致したデータをそれぞれテーブルから出力 SELECT a_mst.a_name, a_mst.a_price, b_mst.b_data FROM a_mst, b_mst WHERE a_mst.a_id = b_mst.b_id AND a_mst.a_price >= 100 AND a_mst.a_price <= 200 AND a_mst.a_print_flg = 0 ORDER BY a_mst.a_price , a_mst.a_id asc LIMIT 20 OFFSET 0 です。a_mstとb_mstをidで結合させて条件一致したあとにそれぞれの テーブルデータをSELECTしています。実際のSQL文はSELECT させている項目数は多いです。 このSQL文をEXPLAINでphpMyadminで実行すると <1行目> id=1 select_type=SIMPLE table=b_mst type=ALL possible_keys=PRIMARY key=NULL key_len=NULL ref=NUL rows=a_mstに登録してある件数 Extra=Using temporary; Using filesort <2行目> id=1 select_type=SIMPLE table=a_mst type=eq_ref possible_keys=PRIMARY key=PRIMARY key_len=NULL ref=b_mst.b_id rows=1 Extra=Using where でした。 EXPLAINを使ったチューニングなどしたことないSQL低級者なのでどのようなSQL文にすればtypeがALLの場合や、ExtraからUsing temporary; Using filesortを消すことができるのか分からないので教えて下さる方がいましたらよろしくお願いします。 ちなみに、a_mstとb_mstはphpMyadminにてそれぞれのテーブルの「構造」を見ると 「インデックスサイズ」のところで、それぞれの主キーであるa_idとb_idがPLIMARY で登録させています。編集ボタンを押したら「インデックスを修正する」画面に変わるので一応それぞれインデックス登録はされているのかな?と思います。
質問日時: 2013/06/17 12:36 質問者: phpjava
解決済
2
0
-
順位の取得
idの順位を取得する方法はありますか? voteが一番多い順にソートして指定したidの順位を取得したいです もしくは、指定したidが3番以内に入っているかどうか調べたいです テーブル id vote 1 5 2 6 3 3 4 1 5 12 ソートした後のテーブルのイメージ id3の順位を指定した場合、4番目なので4を取得したいです id vote 5 12 2 6 1 5 3 3 4 1 よろしくお願いします
質問日時: 2013/06/16 01:56 質問者: flash0
ベストアンサー
2
0
-
テーブル設計について
二つのテーブルの行数は同じとします 1行に10カラム以上あるテーブルから1カラムだけ取得するのと idとvoteだけの2カラムで作ったテーブルから1カラムだけ取得する場合の処理スピードは速くなりますか? updateで更新する時のスピードもカラム数が多いと違いが出ますか? よろしくお願いします sprintf("SELECT vote FROM hoge WHERE id=%d", $id );
質問日時: 2013/06/15 19:20 質問者: flash0
ベストアンサー
1
0
-
CSVをMYSQLにインポートすると文字化けする
XAMPPでmysqlを使ってます。 CSVをインポートするとUTF-8が文字化けしてしまいます。詳しくわかる方いましたらお知恵をお貸しください。 まず、mysqlの設定ですが show variables like 'char%'; をおこなうと +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+ 8 rows in set (0.05 sec) となっています。 次に、アップロードするCSVですが、 1回目は、terapadを愛用しているので、terapadの機能でUTF-8に変換して保存したのですが、インポートすると文字化けしてしまいました。 次は、エクスプローラーでUTF-8に変換したファイルを読み込むと文字化けしており、エクスプローラーのエンコードで文字コードをUTF-8に変換し保存したものを、CSVに変換してインポートしたのですが、やっぱり文字化けしてしまいました。 私の知識ではこれ以上手がないのでなにかあたらしい突破口や間違いがあれば教えてください。
質問日時: 2013/06/15 08:27 質問者: satisfied999
ベストアンサー
1
0
-
テーブルで一番古いレコードだけをSELECTしたい
テーブルで一番古いレコードだけをSELECTしたいのですが、どうすれば良いでしょうか? ■背景 ・テーブルからデータを取得しようと思ったら、「id」及び「autoincrement」に該当するカラムがありませんでした ・日付に該当するカラムもありません ・「phpMyAdmin」で確認すると、いつも同じ並び順で表示されるので、格納したレコード順で表示されているのではないかと思いました ■質問 ・この時、そのテーブルで一番古いレコードだけをSELECTしたいのですが、どうすれば良いでしょうか? ・where?
質問日時: 2013/06/15 07:45 質問者: re97
ベストアンサー
2
0
-
取得する順番
mysq初心者です 値の取得する順番を変えないで、値を取得する方法はありますか? 会員IDが5、1、3で取得したいのですが1、3、5に並び替えられてしまいます テーブルはIDとNAMEのみ、重複なしで、ID番号と名前番号が一致しています sprintf('SELECT id FROM hoge2 WHERE name="%s" or name="%s" or name="%s" ', ほげ5, ほげ1, ほげ3 ); $recd = array(); while ($rec = mysql_fetch_assoc($sql2)) { $recd[] =$rec['id']; }
質問日時: 2013/06/15 02:52 質問者: flash0
ベストアンサー
1
0
【データベース】に関するカテゴリ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
【MySQL】に関するコラム/記事
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlのupdate構文についての質問で...
-
MAMP 99ドル約1.6万円 高いですね
-
(初心者)MySQLやmaraDBで、create t...
-
#1062 - '0' は索引 'PRIMARY' で重...
-
エラー 1068 (42000): 複数の主キー...
-
SQLです教えてくださいお願いします
-
SQLです教えてください。
-
SQLです教えてくださいお願いします
-
SQLです教えてくださいお願いします...
-
utf8bomとutf8mb4の違いがいまいち...
-
SQLです教えてくださいお願いします?
-
東京23区を、皇居を中心とした4つ...
-
mysqlがインストールされているのか...
-
SQLでカラムを追加し、条件に合致し...
-
SQLです教えてくださいお願いします↑正
-
テーブル:生徒名簿 生徒名簿の項目...
-
SQLです!!教えてください。あって...
-
同一日に複数レコードがある場合に...
-
SQLを作ったのですがうまくいきませ...
-
SQLあってますか?こう?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
何にかが違うから エラーなんでしょ...
-
mysqlがインストールされているのか...
-
エラー 1068 (42000): 複数の主キー...
-
#1062 - '0' は索引 'PRIMARY' で重...
-
テーブル名が可変の場合のクエリの...
-
SQLでカラムを追加し、条件に合致し...
-
mysqlの配列データの読み方
-
SQLで漢字名称を都道府県や市区町村...
-
mysqlのupdate構文についての質問で...
-
htmlコードで書かれた表にphpでdbか...
-
SQLを作ったのですがうまくいきませ...
-
【初歩】ラジオボタンをつかったPHP...
-
SQLです教えてください。
-
東京23区を、皇居を中心とした4つ...
-
SQLです教えてくださいお願いします
-
LIMIT で条件を満たしているのにエ...
-
MAMP 99ドル約1.6万円 高いですね
-
〜のような結果を出すためのSQLは以...
-
SQLです教えてくださいお願いします...
-
このSQLあってますか?教えてください
おすすめ情報