mpro-gram の回答履歴
- 順位を示すSQLをベースに文字項目の抽出
生徒の成績の得意不得意をあらわすSQLを考えています。 MySQL 5.5 CentOS6.3 どの教科がその生徒にとって一番得意科目であり、その教科はクラスで何位なのかを示すSQLです。 「クラスでの相対順位のもっとも高い教科とその順位」を表示します。 kamedaの一番の得意科目(クラスでの相対順位が最上位)は英語で、クラス2位である ということが分かるようにする予定です。 一度に名前と順位が入るようにするのが理想なのですが、その方法が分かりませんでしたので、別々にアップデートすることとしました。 アップデートには相対順位がもっとも高い教科を示す【順位SQL】とその教科を表示する【教科SQL】の2つを用意します。 【順位SQL】 「kamedaの一番の得意科目(クラスでの相対順位が最上位)は●●で、クラス2位」を表示する順位SQLは下記のSQLでうまくいきました。 【教科SQL】 次に、●●の部分を埋めるために、教科SQLを組みました。 しかしながら、 #1241 - Operand should contain 1 column(s) になってしまいます。 どこが適切ではないのか、ご教授頂けませんでしょうか? よろしくお願いいたします。 また、もし、2つのSQLに分けずに一回でアップデート可能な方法があれば、同時にお教え頂けましたら幸いです。よろしくお願いいたします。 **************************************************** ベースとなるデータ CREATE table seiseki2 (usr_id TEXT,kyoka_name TEXT,point INT); CREATE table point_rank (p_usr_id TEXT,1st_kyoka_name TEXT,1st_rank INT); INSERT INTO seiseki2 (usr_id,kyoka_name,point) values ('kameda','数学',85),('suzuki','数学',71),('kaneko','数学',32),('yosida','数学',61),('tanita','数学',70),('suyama','数学',80),('kisida','数学',61),('komine','数学',99),('tomita','数学',89),('sugita','数学',75),('kameda','国語',80),('suzuki','国語',46),('kaneko','国語',52),('yosida','国語',89),('tanita','国語',77),('suyama','国語',67),('kisida','国語',81),('komine','国語',89),('tomita','国語',69),('sugita','国語',70),('kameda','英語',94),('suzuki','英語',86),('kaneko','英語',50),('yosida','英語',59),('tanita','英語',48),('suyama','英語',97),('kisida','英語',74),('komine','英語',82),('tomita','英語',59),('sugita','英語',60); INSERT INTO point_rank (p_usr_id,1st_kyoka_name,1st_rank) values ('kameda','',''),('suzuki','',''),('kaneko','',''),('yosida','',''),('tanita','',''),('suyama','',''),('kisida','',''),('komine','',''),('tomita','',''),('sugita','',''); ************************************************ 【順位SQL(完成)】 UPDATE point_rank SET 1st_rank= (SELECT ( SELECT count( * ) +1 FROM seiseki2 AS t2 WHERE 1 AND t2.point > t1.point AND t2.kyoka_name = t1.kyoka_name ) AS rank FROM seiseki2 AS t1 WHERE t1.usr_id = point_rank.p_usr_id ORDER BY rank ASC LIMIT 0 , 1) 【教科SQL(未完成)】 UPDATE point_rank SET 1st_kyoka_name= kyoka_name WHERE (SELECT kyoka_name,( SELECT count( * ) +1 FROM seiseki2 AS t2 WHERE 1 AND t2.point > t1.point AND t2.kyoka_name = t1.kyoka_name ) AS rank FROM seiseki2 AS t1, point_rank AS p1 WHERE t1.usr_id = p1.p_usr_id ORDER BY rank ASC LIMIT 0 , 1) #1241 - Operand should contain 1 column(s)
- MySQLリファレンスマニュアル(公式)の見方
MySQLの公式サイトのリファレンスマニュアルに、そもそもの見方が説明されているページは用意されていますか? 探したのですが、見当たらなかったので質問させていただきました。 特に斜体の部分が説明がなされているページがあれば大変助かります。 斜体の部分とは、例えば、以下のページのtable_references等です。 http://dev.mysql.com/doc/refman/5.1/ja/update.html 英語の意味からざっくり予想することはできるのですが、直訳してもよく分からないものもあるので。 ご教示のほど、なにとぞよろしくお願い申し上げます。
- 再帰関数のサポートについて
http://ja.phptherightway.com/pages/Functional-Programming.html 上記ページにありますようにPHPは再帰関数をサポートとあります。 関数プログラミングなるものはこの再帰関数を使ってループをつくったりすると ききました。 たとえば function roop($i){ print($i); $n = $i + 1; if($n < 100){ roop($n); } } roop(1); というようなコードでしょうか。 これは1~99までのループですよね。 これはPHPがインタープリターといえど、一度 PHP専用のバイトコードに変換して からPHPエンジンがバイトコードを実行するため再帰が可能という解釈でもんだいないですかね? もしほんとうに逐次解釈なインタープリターなら解釈途中に、その関数自体の定義をインタープリターが認識? し終わる前に未定義状態の関数が出現してしまうってことですよね? undefined な関数があるといようなエラーがでてくのでしょうか? 生Cのソースみればわかるのでしょうけれども、私はCがわからないので・・・。 概要でよいのでご教授ください。
- suEXECのサーバについて
レンタルサーバで、CGIのパーミッション設定が、 suEXECなので、○○にしてください、とのことから、設定をして、CGIが使えるようになりました。しかし、今度はPHPが動きません。どのようにしたらいいのでしょうか?ネットで検索して、suEXECの場合のデフォルトのPHPのパーミッション設定方法を当ててみても動きません。
- 親子に分けた方が良い? テーブルの正規化?
■知りたいこと ブログカテゴリー(親・子) を取り扱う際、普通は「1テーブル」でいくのでしょうか、それとも、親と子の2テーブルを作成するのでしょうか? ・それぞれのメリットデメリットは? ・「ケースバイケースによるので一概には言えない?」or「どちらでも同じ?」 ・また、「2テーブル(親子)」に分けることを正規化というのでしょうか? ■現状 ・1テーブルで運用(parent_idカラム利用) ・子カテゴリー数が多くなると、phpMyAdmin等で目視する際、カテゴリーテーブルから親カテゴリーIDを探しづらくなる(条件で抽出するので、大きな問題ではないですが)
- BASIC
BASICを始めたのですが、つくったプログラムをコンパイルするソフトを探しています。 今僕は、N88BASICでプログラムを書いています。
- 締切済み
- その他(プログラミング・開発)
- noname#262366
- 回答数1
- PHP+MyAdmin INSERT文字化け
PHPを利用しテキストファイルのアップロード、その後ファイルを読込INSERT。 上記のような流れでデータベースに値を代入するスクリプトを作成中ですが タイトルの通り、代入すると文字化けが起こり、上手く代入する事が出来ません。。。 初歩的なご質問かと思いますが宜しくお願いします。 データベース ・phpMyAdmin さくらインターネット レンタルサーバー利用 ・全てUTF-8のカラム設定 PHP/HTMLファイル ・全てUTF-8フォーマットにて保存・アップロード INSERTに利用するファイル ・某サイトよりダウンロードしたSJISフォーマットのテキストファイル(タブ区切り) 実際の動作(1) 1.テキストファイルダウンロード 2.ブラウザよりテキストファイルアップロード 3.ブラウザよりテキストファイル読込・代入 【結果】文字化け発生 実際の動作(2) 1.テキストファイルダウンロード 2.一度テキストエディタで開きSJIS⇒UTF-8へ保存 3.FileZillaにてサーバーへアップロード 4.ブラウザよりテキストファイル読込・代入 【結果】正常 実際の動作(3) アップロードするPHPへ mb_convert_encoding($FILE,"UTF-8","AUTO") mb_convert_encoding($FILE,"UTF-8","SJIS") mb_convert_encoding($FILE,"UTF-8","SJIS-WIN") 等の記述を変更しながら実験 【結果】文字化け発生 Googleにて色々検索しマルチバイト関数を有効にとの情報があり http://manual.xwd.jp/ref.mbstring.html を参考に設定 (1)(2)(3)を実行するが文字化けは変わらず。 アップロード後の文字エンコード判定を実施 http://www.phppro.jp/qa/388 ・ダウンロードそのままをブラウザよりアップロード ・テキストダウンロード後、エディタにてUTF-8に保存したファイルをブラウザよりアップロード どちらもSJISと判定される。 記述方法も曖昧なまま setlocale(LC_ALL, 'ja_JP.UTF-8'); も実験しましたが無理でした。 SQL実行前に $test = mysql_query('SET NAMES utf8', $link) or die("文字コードを指定できませんでした。"); $test = mysql_query($sql, $link) or die("クエリの送信に失敗しました。"); の記述も問題なのでしょうか。 問題はアップロード時に問題、、、? サーバー側の設定の問題、、、? 正直お手上げです。(涙 どうかご教授お願いいたします。
- ベストアンサー
- MySQL
- buzinesswa
- 回答数1
- IISでcakePHP
現在IIS上でcakePHPを利用してPHPのwebアプリを作成しています。 事情によりrewriteは行わずに作成しているのですが、 URLを指定すると404エラーが返ってきます。 URLは以下です。 http://localhost/test/index.php/posts/index cakePHPはinetpub/wwwroot/test/直下に配置しています。 http://localhost/test/index.php の画面は見れています。 IISでrewriteをせずcakePHPの画面が見れる方法をご存知の方がいましたらご教授願います。 ●環境 windows XP Professional sp3 IIS 5.1 PHP 5.3.5 CakePHP 2.2.2
- 集約関数のDUPLICATEKEY UPDATE
テーブルmoney、テーブルmoney2にある金額の合計をテーブルmoney3に1日に1回、EVENTでインサートします。money、money2の金額は随時変わるため、最終結果をmoney3に毎日更新していきます。 CREATE table money(g_usr_id INT,g_money INT); CREATE table money2(n_usr_id INT,n_money INT); CREATE table money_all(o_usr_id INT PRIMARY KEY NOT NULL,g_money_all INT,n_money_all INT); 構文 DELIMITER // CREATE EVENT money ON SCHEDULE EVERY 1 DAY STARTS '2012-09-05 00:30:00' ENDS '2013-03-31 00:30:00' DO BEGIN INSERT INTO money_all(o_usr_id,g_money_all,n_money_all) SELECT o_usr_id,SUM(g_money),SUM(n_money) FROM (SELECT g_usr_id AS o_usr_id,g_money,0 AS n_money FROM money UNION ALL SELECT n_usr_id,0,n_money FROM money2) AS T GROUP BY o_usr_id; END; // DELIMITER ; これで初日目の分は無事インサート出来たのですが、翌日以降EVENTがアップデートしようとするとDUPLICATE KEYエラーが出て更新できていません。(当たり前ですが) そこで下記のようにON DUPLICATE KEY UPDATE を付けてみたのですが、エラーになってしまいました。 質問です。 集約関数のON DUPLICATE KEY UPDATE以降はどのように書けばいいか、下記の構文を修正いただけませんでしょうか DELIMITER // CREATE EVENT money ON SCHEDULE EVERY 1 DAY STARTS '2012-09-05 00:30:00' ENDS '2013-03-31 23:30:00' DO BEGIN INSERT INTO money_all(o_usr_id,g_money_all,n_money_all) SELECT o_usr_id,SUM(g_money),SUM(n_money) FROM (SELECT g_usr_id AS o_usr_id,g_money,0 AS n_money FROM money UNION ALL SELECT n_usr_id,0,n_money FROM money2) AS T GROUP BY o_usr_id ON DUPLICATE KEY UPDATE g_money_all=NEW.SUM(g_money),n_money_all=NEW.SUM(n_money) FROM (SELECT g_usr_id AS o_usr_id,g_money,0 AS n_money FROM money UNION ALL SELECT n_usr_id,0,n_money FROM money2) AS T GROUP BY o_usr_id; END; // DELIMITER ; よろしくお願いいたします。(MySQL 5.1です)
- LocationでのPOSTの方法
AサーバーからBサーバーへHTMLのformにてPOSTデータを送り Bサーバーで処理して、header("Location:で再びAサーバーに戻す処理をしたいのですがうまくいきません Aサーバー <form method="post" action="Bサーバー"> <input type="text" name="sample"> Bサーバ curl_setopt($handle, CURLOPT_URL, "Aサーバ"); curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_POSTFIELDS, , "smaple=" . $_POST['sample']); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($handle); curl_close($handle); header("Location: Aサーバ"); このようにcurlで送る設定をしているのですがPOSTのデータは戻って来ません アドバイスをお願いできないでしょうか。
- データベースの選択エラー
次のmysql文を実行しているのですが、no database selectedと出てしまいます。 データベースのデータはphpmyadminを利用しています(添付画像参照) データベース名をzから始まるサーバー名のようなものを除いたものにしても ダメです。アドバイスいただけませんでしょうか。 (下の分の前後にはサーバーへの接続と切断のリクエストが入り、どちらも 無事接続、切断されています) mysql_select_db("z****_data1"); $re=mysql_query("SELECT * FROM simple_board ORDER BY bang"); echo mysql_error($s); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print " : "; print $kekka[1]; print " : "; print $kekka[2]; print "<br />"; }
- 締切済み
- MySQL
- trotrotron
- 回答数1
- 「mysqli_fetch_assoc」で、プリペ
「mysqli_fetch_assoc」で、プリペアドステートしたいのですが、「mysqli_stmt_fetch」との違いなどがよく分かりません。 下記リンク先、「test4.php」のコードを、「mysqli」手続き型用に書き換えていただけないでしょうか? ▽データの取得(SELECT) - MySQLへの接続 - PHP入門 http://www.phpbook.jp/tutorial/mysql/index6.html <希望内容> ・「mysql」→「mysqli」 ・「mysqli」手続き型 ・SELECT idの「id」部分を動的対応(プリペアドステート) ・可能なら(?)、「mysqli_stmt_fetch」ではなく、「mysqli_fetch_assoc」利用
- 「mysqli_fetch_assoc」で、プリペ
「mysqli_fetch_assoc」で、プリペアドステートしたいのですが、「mysqli_stmt_fetch」との違いなどがよく分かりません。 下記リンク先、「test4.php」のコードを、「mysqli」手続き型用に書き換えていただけないでしょうか? ▽データの取得(SELECT) - MySQLへの接続 - PHP入門 http://www.phpbook.jp/tutorial/mysql/index6.html <希望内容> ・「mysql」→「mysqli」 ・「mysqli」手続き型 ・SELECT idの「id」部分を動的対応(プリペアドステート) ・可能なら(?)、「mysqli_stmt_fetch」ではなく、「mysqli_fetch_assoc」利用
- Javaのアプレットについて
Javaのアプレットでゲームを作ろうとしているのですが、フリー音楽制作ソフトの「Domino」を起動したままアプレットを使うと処理速度が速くなってしまうことがわかりました。 一応自分なりに原因を考えたのですが確証がないので、原因をご存知の方がいらっしゃれば教えていただきたいです。また、そうでなくても、何か参考になることや、皆さんなりの考え、どのようなパソコン・ソフトで同じ症状が出るのか、など、些細なことでもいいので教えていただきたいです。 わからないなりに僕が考えたのは、Dominoが使っているシステム時間とアプレットのシステム時間にはつながりがあって、Domino側がそこをいじってしまうせいでアプレットがおかしくなっているのではないか、というものです。そもそもアプレットの書き方がおかしいのかもしれませんが・・・(「考えた」ってほどよく考えてない・・・) 一応確認している範囲では、「Domino」、「Music Studio Producer」、「RPGツクールXP」などのDirectX使用ソフト、「YouTube」などの動画サイト、などなどを同時に起動していると処理が速くなることを確認しています。 問題が解決できないものであったとしても、説明書に対処法を書きたいので、よろしくお願いします。 一応、適当に作った実験用のプログラムを書いておきます。 ---------------------------------------------------- import java.applet.Applet; import java.awt.*; public class Test extends Applet implements Runnable{ Thread thread; Image bufferImage; Graphics bufG; int to_x,to_y,to_x2,to_y2,count,time; long preTime, nowTime; final int fps = 60; final double frameTime = 1000 / fps; public void init(){ to_x=to_y=to_x2=to_y2=0; count=0; time=0; preTime = 0; nowTime = 0; requestFocus(); thread = new Thread(this); thread.start(); } public void run(){ while(true){ count++; if(count>=60) { count=0; time++; if(time>=60) { time=0; } } to_x = (int)(200 * Math.cos(Math.PI*(time-15)/60*2)) + 400; to_y = (int)(200 * Math.sin(Math.PI*(time-15)/60*2)) + 240; to_x2 = (int)(100 * Math.cos(Math.PI*(count-15)/60*2)) + 130; to_y2 = (int)(100 * Math.sin(Math.PI*(count-15)/60*2)) + 350; while(nowTime-preTime < frameTime){ nowTime = System.currentTimeMillis(); } preTime = nowTime; repaint(); } } public void paint(Graphics g){ bufferImage = createImage(640,480); bufG = bufferImage.getGraphics(); bufG.setColor(Color.black); bufG.fillRect(0, 0, 640, 480); bufG.setColor(Color.white); bufG.drawLine(400,240,to_x,to_y); bufG.drawLine(130,350,to_x2,to_y2); bufG.setFont(new Font("Serif",Font.BOLD + Font.ITALIC,14)); bufG.drawString("time = " + time,20,30); bufG.drawString("milli_second = " + 1000*count/60,20,60); g.drawImage(bufferImage, 0, 0, this); } public void update(Graphics g){ paint(g); } }
- Appletの起動でエラーが出てしまう
こんばんは、tomcatを使ったAppletの起動方法についての質問です。 自分でも問題の整理が付いていない部分があり、多少解りづらい質問になってしまうかもしれませんが、お読み頂けると嬉しいです。 現在、tomcatのwebapps内にフォルダを作り、そこにjarファイルとhtmlファイルを置いている状態です。 具体的には webapps/firstClient-HomeWork/firstClient.html webapps/firstClient-HomeWork/firstClient-HomeWork_fat.jar といった状態になって居ます htmlファイルの中身は //firstClient.html <html> <body> <applet code="firstClient.firstClient" width=960 height=540> <param name=archive value="firstClient-HomeWork_fat.jar"> </applet> </body> </html> となっています。 jarファイルの中身のコードについては、詳細を貼ってしまうと、学校の課題として提出出来なくなってしまうため、コードそのものなどは貼れませんが、Eclipseで作った時の階層などを説明させて頂きます。 コードまでは firstClient/src/firstClient/firstClient といった階層になっています、左からプロジェクト名、src、パッケージ、classです。 また、Twitter4J等の外部ライブラリや、プログラム中で使われている画像ファイルなどを、Fat jarというEclipse上で作ったプロジェクトを全て纏めてjarファイルにするプラグインを使って作成しました。 この状態で、htmlファイルを起動すると java.lang.AssertionError:java.lang.reflectInvocation TargetException が出てきます、詳細ボタンを選択しても何も表示されませんでした。 java.lang.AssertionErrorは宣言が失敗している、というエラー java.lang.reflectInvocation TargetExceptionは調べても解りませんでした。 このエラーのせいで起動できないようなのですが、詳細に何も表示されない為、何処がエラーの原因なのか解らず困っています。 コード中にあるのか、或いはhtmlやjarの問題なのか、そもそもjarは認識しているのかなど、全く解らない状態です。 以前、jarファイルとhtmlファイルだけで起動できたプログラムがあるため(そのプログラムがどこか変だったのかもしれませんが) webapps内には先ほどのファイル以外は何も入っていません、classesやbeansもフォルダはあるものの中身は空となっています。 一体何処が間違っているのでしょうか..?前回出来たプログラムと同じように作る、といった方法でやってしまい、アプレットの起動方法について大した勉強をしていなかったので、自業自得なのですが、自分で調べた限りでは分からず、どうすれば良いのか解らない状態です。 お手数おかけしますが、解決方法をご存知の方が居ましたら、解答頂けると助かります。 これだけでは情報が足りないようでしたら、教えて頂ければ追加します、宜しくお願いします。
- SELECT INTO OUTFILEの追記
日経225の株価を定期的にmySQLに記載する仕組みをつくりました。 この定期的にmySQLのテーブル(ni225)に書き込まれる株価について、 書きこまれるたびにトリガを発動し外部csv(225.csv)にも書き込みたいと考えております。 dataディレクトリを777にし、 トリガで下記のコマンドを実行することで225.csvに書き込むことが可能です。 SELECT * INTO OUTFILE '../../../home/test/public_html/data/225.csv' FROM ni225 しかしながら、一度225.csvに書き込むと、次の日経平均アップデートでのトリガ発動時には 追記出来ずエラーとなります。 外部CSVファイルに追記可能な方法は御座いませんでしょうか? 追記というコマンドがない場合、なにか妥当な方法がないものかご指導頂けましたら幸甚です。 宜しくお願い致します
- MySQL及びPostgreSQLに繋がらない
恐らく、単純な設定ミスなのでしょうが、自分のスキルでは解けなかったので質問させて頂きます。 表題の通り、MySQL及びPostgreSQLに接続が出来ません。 テスト環境としてXAMPP(現時点での最新版)を使用し、PostgreSQLに接続できない動作を回避しようと思い、phpは公式から5.2.17を落としてC:\xamppディレクトリにphpというディレクトリで設置(前のphpディレクトリは別名で保存)してあります。 Xampp Controlから無事に起動を確認し、簡単な接続テストを行ったのですが接続が行えません。 しかし、コンソールから php test.phpなどとすると無事に接続出来ているのです。 上記動作はMySQL及びPostgreSQLでも同様です。 検索でよく引っかかる対応策、PATHを通す、extensionのコメントアウト解除などは勿論適用済です。 xamppページのmySQLAdminも現在動作しない状態となっています。 こういったケースで考えられる原因、または解決方法をご存知の方、いらっしゃいましたらご教授をお願いします。
- use と requireの違いは?
use と require(やinclude)の違いは何でしょうか? requireの使い方はほぼ理解できていると思っていますが、useの使い方がわかりません。 useを使っているところでrequireを使えたりするのでしょうか? phpの公式をみてもいまいちピンときません。 useについてわかりやすく教えていただけないでしょうか?
- 締切済み
- PHP
- baaaaaaaaan
- 回答数4
- cakephpのページネーションURLについて
いつもお世話になっております。 ドメインを設定してサイトを作っており、 routes.phpの設定を Router::connect('/:action', array('controller' => 'controller名')); とコントローラーを含めて設定しており、↓のような形になるようにしております。 http://xxxxx.xx.xx/controller名/ → http://xxxx.com/ しかし、ページネーションの際に http://xxxx.com/controller名/action/page:番号 とURLにコントローラー名が出力されます。 コントローラー名が出力されないようにしたいのですが どうすればよろしいでしょうか?
- ベストアンサー
- PHP
- sakura_question
- 回答数1
- ファイル作成に失敗する
@pagesとE-Townという2つのサーバーで同じPHPプログラムを動作させるのですが、 @pagesのほうは、phpファイルがあるパス上にしかファイルやディレクトリを作成できません。 パーミッションを手動で777に設定してもダメでした。 何が原因で、どのように対処したらいいのでしょうか? <コード> file_put_contents("file1", "piyo"); mkdir("./testdir"); chmod("./testdir", 0777); <- ここまでは両者とも成功する file_put_contents("./testdir/file2", "piyo"); <- @pagesではこれが失敗する よろしくお願いします。
- 締切済み
- PHP
- minimax2005
- 回答数2