MySQL

全4808件中221~240件表示
  • 2つのSQL文で結果に差違が発生する

    私の知識ではお手上げのため、ご教授願いたいのですが、 下記のようなテーブルが仮にあったとして、レコードがそれぞれいくつか入っています。 【itemsテーブル】   id・・・・・連番   cat_id・・・category.id   price ・・・価格   max_num ・・セット数   date・・・・発売日 【categioryテーブル】   id・・・・・連番   cat_name・・カテゴリ名 【orderテーブル】   id・・・・・連番   item_id ・・items.id   paid_price・支払価格 以下の2つのSQL文を実行させた場合、「total_price」の値に違いは発生しますか? 【SQL文 A】----------------------------- SELECT items.cat_id, `category`.`cat_name`, SUM(`items`.`price` * `items`.`max_num`) AS `total_price`, SUM(IF(`order`.`paid_price` > 0, `order`.`paid_price`, 0)) AS `total_paid`, SUM(IF(`order`.`paid_price` = 0 , `items`.`price`, 0)) AS `not_payment` FROM `items` INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`) INNER JOIN `order` ON (`items`.`id` = `order`.`item_id`) WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511 GROUP BY `items`.`cat_id` ORDER BY `items`.`cat_id` ASC ------------------------------------ 【SQL文 B】----------------------------- SELECT items.cat_id, `category`.`cat_name`, SUM(`items`.`price` * `items`.`max_num`) AS `total_price` FROM `items` INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`) WHERE AND DATE_FORMAT(`items`.`date`, '%Y%m') = 201511 GROUP BY `items`.`cat_id` ORDER BY `items`.`cat_id` ASC ------------------------------------ こちらで上記と同じようなSQL文を実行すると、Bで出てほしい値がAでは出てこないのです。 Aの場合は「WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511」が抽出条件として実行されていないような感じです。 すべてのレコードの「SUM(`items`.`price` * `items`.`max_num`) AS `total_price`」が計算されています。 Bだけで実行すればちゃんとほしい値が返ってきます。 何か間違っていますか?

    • ベストアンサー
    • ok-rjak
    • MySQL
    • 回答数4
  • MySQLの接続に使う拡張モジュールについて

    趣味でwebサイト制作を考えている初心者です。 SQL、PHPともに初めて扱います。 基礎からのMySQLという書籍を購入し、進めていたのですが、 この書籍ではmysql_queryを扱うと書かれていました。 しかし、mysql_queryが非推奨になったと知って、困っております。 質問内容 1. 書籍の通り、mysql_queryを一通り学んだ方がよいでしょうか? 2. その他にPDO、mysqliというものがあるそうですが、扱いやすさに違いなどはありますか? よろしくお願いいたします。

    • ベストアンサー
    • noname#257344
    • MySQL
    • 回答数1
  • ドキュメントルートについて(サイト公開パス)

    現在プログラミングを学んでいる超初心者です。 現在PHPを勉強中でレンタルサーバーを使い 動作確認などを行いたいのですがうまくいきません。 レンタルサーバーはウェブクロウと言うところを使っています そしてFFFTPでアップロードしても HTTP403がでたり 「このページは表示されません」になったりしいろいろ調べたりしましたが 現在お手上げ状態です。 サーバー情報に ドキュメントルートというのがありました これは何か関係があるのでしょうか? ドキュメントルートは下記のとうりです。 /home/nakahiro7/[ドメイン名]/public_html/ その他何かご指摘、方法があれば教えていただければ幸いです。 目的は PHPの動作確認、MYSQLとちゃんと連携できているかなどを確認したいです。(会員登録のような機能などちゃんとできてるか確認したい) 無知な私にどうかお知恵をおかしください。

  • シリアライズされた値に対するカラムへの検索方法

    PHPを使ってMysqlDBに入っている値を取得して表示する 表示面のプログラムを作成しております。 下記のようなシリアライズされた値が保管されている項目に対しての 検索条件の記述を現在はLikeを使っております。 FIND_IN_SETのような検索用の関数はございませんでしょうか。 ●検索対象 1269、1260、1254、84 ●シリアライズされた値サンプル a:4:{i:0;s:4:"1269";i:1;s:4:"1260";i:2;s:4:"1254";i:3;s:2:"84";} ●Likeの記述 カラム名 Like "%\"1260\"%" ご教授のほど、よろしくお願いします。

    • 締切済み
    • toema
    • MySQL
    • 回答数1
  • PDOについての質問です。宜しくお願い致します。

    PDOについての質問です。宜しくお願い致します。 久しぶりに質問させていただきますどうかよろしくお願い致します。 技術評論会社から出版されているPHP+MySQL Webシステム構築という書籍を参考に プログラムを組んでいるのですがコードを見るとかなり古くMySQLに接続するコードに mysql_connectなど非推奨のものが使われています。 そのコードを自分なりにPDOに直しているのですが、errorはなんとか無くなり表示も問題なく されるのですがはたして本当に間違いのないプログラムなのか私には判断がつきませんので どうかご教授いただきたいと思っております。 何卒よろしくお願い致します。 プログラムは以下のようになります。 <?php header("Content-Type: text/html; charset=utf-8"); ?> <?php require_once("photolibini.php"); try { $dsn = 'mysql:dbname=photolibdb;host=localhost'; $user = '******'; $password = '*****'; $dbh = new PDO($dsn, $user, $password); $dbh->query('SET NAMES utf8'); //カテゴリを集計するSQLを組み立てます $sql = "SELECT tblphoto.categoryid, categoryname, Count(photoid) AS cnt FROM tblphoto INNER JOIN tblcategory ON tblphoto.categoryid = tblcategory.categoryid GROUP BY tblphoto.categoryid ORDER BY tblphoto.categoryid"; $stmt = $dbh->prepare($sql); $stmt->execute(); $dbh = null; //ページ本文を組み立てます $body = "現在、次のカテゴリの写真が登録されています。表示したいカテゴリをクリックしてください。 <BR><BR> <UL type='circle'>"; //結果セットからデータをループで読み込みます while ($col = $stmt->fetch(PDO::FETCH_ASSOC)) { $body .= "<LI><A href='search.php?categid=$col[categoryid]'> $col[categoryname]</A> " . "($col[cnt]件)"; } } catch(Exception $e) { print'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?> <?php $body .= "</UL>"; //ページヘッダを出力します echo htmlheader("カテゴリ別一覧"); //ページ本文を出力します echo $body; //ページフッタを出力します echo htmlfooter(); ?>

  • ACCESS2003同一小目の非表示・集計

    ACCESS初心者です。現在、解決方法に苦慮しています。ご教示いただけないでしょうか。 テーブル1                      テーブル2 AAA 東京都 20,000               AAA 足立区 501 BBB 東京都 25,000               AAA 江東区 300 CCC 東京都 36,000                BBB 新宿区 312 DDD 東京都 40,000               BBB 渋谷区 700 EEE 東京都 43,000               CCC 葛飾区 680 上記の様なテーブルがあったときテーブル1全件、テーブル2の一致したもののクエリを組んだ際に 以下となると思われます。 AAA 東京都 20,000  足立区 501 AAA 東京都 20,000  江東区 300 BBB 東京都 25,000  新宿区 312 BBB 東京都 25,000  渋谷区 700 CCC 東京都 36,000  葛飾区 680 DDD 東京都 40,000 EEE 東京都 43,000 最終的には印刷するのですがレポートのプロパティにて同一項目は印刷しない事は可能ですが 集計はされてしまうと思うのですがいかがでしょうか。 AAA 東京都 20,000  足立区 501              江東区 300 AAA 計   20,000  足立区 501             江東区 300                 上記のような結果を印刷したいのですが、方法が思いつきません。 簡単な方法等はあるのでしょうか。 宜しくお願いします。

  • SQLを教えてください

    下記2つのテーブルを検索して、結果のようなデータを取得したいと考えております。 tableBのitemnoは1~5まで固定ですが、注文がある場合のみテーブルに存在します。 tableA uid name 16  山田 17 佐藤 tableB uid itemno itemname 16 1 りんご 16 2 みかん 16 3 もも 16 4 かき 16 5 いちご 17 1 りんご 17 3 もも 17 5 いちご 結果 uid name itemname1 itemname2 itemname3 itemname4 itemname5 16 山田 りんご  みかん  もも   かき   いちご 17 佐藤 りんご  null    もも    null    いちご 宜しくお願い致します。

    • ベストアンサー
    • Qo Qoo
    • MySQL
    • 回答数1
  • mysqlにてinsertした件数を取得

    phpからmysqliを利用してmysqlに Insert XX select … の様な形でinsertを行いたいのですが、 この時、insertした件数が必須なのですが、 selectをもう一回発行するのも無駄が気がしており、 insertしながら件数を取得する事は可能でしょうか? 知識不足で恐縮では御座いますが、 何卒宜しくお願い致します。

  • MySQLの文法について

    $sql = "SELECT * FROM profile WHERE (todouhuken='$todouhuken1' OR todouhuken='$todouhuken2' OR todouhuken='$todouhuken3') AND (age between $begin_age and $end_age) AND (photo1 is not null OR photo2 is not null OR photo3 is not null) AND seibetsu=2;"; 画像カラム(photo1, photo2, photo3)のどれかに画像ファイル名が入っていれば、 検索に引っかかるという、このSQL文ですが、データベース上で実際にこの3カラムすべてに 値が入っていないレコードまで引っかかってしまいます。この3カラムすべてに値が入っていないレコードは検索に引っかからないようにしたいのですが、どこが間違っているのか、 ご指導よろしくお願いします。

  • SQL文の変換(Oracle→MySQL)結合句

    OracleからMySQLへSQL文を変換するにあたり、 テーブル結合部分が複数ありややこしくて以下で合っているのか、分かる方いましたらご教授ください。 ■Oracle  SELECT *  FROM m, h, p, c  WHERE m.mid = h.mid(+)  AND m.tcd = '0'  And h.pid = p.pid(+)  And m.rcd = c.rcd  And c.cid = 'aaa' ■MySQL  SELECT *  FROM m left outer join h on m.mid = h.mid and m.tcd = '0'     h left outer join p on h.pid = p.pid     m left inner join c on m.rcd = c.rcd and c.cid = 'aaa'

  • SQLで複数テーブルの変数を1つにまとめる方法

    MySQL 5.5を使用しています。 以下のテーブルA、B(同じ構造でIDは重複しない)において A ID | ポイント 1 | 10 3 | 20 5 | 5 6 | 5 B ID | ポイント 2 | 20 4 | 20 7 | 5 select ID,hoge from A,B; とすると、 A.ID | B.ID | A.hoge | B.hoge 1 |. | 10 |. . | 2 |. | 20 3 |. | 20 |. . | 4 |. | 20 5 |. | 5 |. 6 |. | 5 |. . | 7 |. | 5 という結果が得られますが、これを ID2| foo 1 | 10 2 | 20 3 | 20 4 | 20 5 | 5 6 | 5 7 | 5 という形に同一の変数にまとめるにはどうすればいいでしょうか。 select A.ID as ID2, B.ID as ID2 from A,B; のようにasを使用して1つの変数を作成しようとしましたが、別の変数として 認識されていまいました。

    • ベストアンサー
    • japelin
    • MySQL
    • 回答数1
  • 異なる条件でcountしたい

    使用しているのはMySQL5.5です。 以下のようなデータベース(→元データベース)があり、プロジェクト毎の作業時間と作業日数を出すために select プロジェクト, count(*), sum(時間) order by プロジェクト; としたところ、同一日の作業が二重にカウントされて、正確な作業日数が計算できません。 →誤った集計結果1 また、 select プロジェクト, count(*), sum(時間) order by プロジェクト, 作業; とすると、今度はプロジェクト単位で作業時間が計算できませんでした。 →誤った集計結果2 これを、同一日はカウントせず、作業日数と作業時間を集計するには どのようにすればいいでしょうか。 ・元データベース 日付|プロジェクト|作業|時間 2015-10-01|A|DB作成|2 2015-10-01|A|データ入力|1 2015-10-01|B|DB作成|3 2015-10-02|A|データ入力|1 2015-10-02|B|DB作成|4 2015-10-02|B|データ入力|2 ・誤った集計結果1 プロジェクト|作業日数|時間 A|3|4 B|3|9 ・誤った集計結果2 プロジェクト|作業日数|時間 A|1|2(DB作成のrow) A|2|2(データ入力のrow) B|2|7(DB作成のrow) B|1|2(データ入力のrow) ・理想の集計結果 A|2|4 B|2|9

    • ベストアンサー
    • japelin
    • MySQL
    • 回答数2
  • mysqlにてselectの情報が欠けます。

    phpからselect文を使用した際、一部データが欠けるので、 もし何かお気づきの点があれば、ご指摘頂ければ幸いです。 使用しているもの。 php 5.6.14 mariadb-10.0.21-with-mroonga-5.08-winx64 ※一つのテーブルに向けてのselect文、エンジンはmroongaです。 cakephp 2.5系 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー cakePHPのモデルクラスから、 以下の様なプログラムを書いております。 $sql = "sql文です。※(select ………)"; $data = $this->query($sql); ※全文検索を使用するのでsql文直書きです。cakephp的な書き方がわからず。。あるのかな? あるカラムに例えばですが以下の様に入ってます。 ※emlのccやfromです。 佐藤<********@****.co.jp>,鈴木<********@****.co.jp> これをselectしてviewに表示すると佐藤、鈴木しか残らず、 残りが欠けてしまっております。 workbenchから同じクエリを打っても欠けている様には見えず、 どこで欠けているかわからず頓挫しております。 お気づきの点等あればご指摘を何卒宜しくお願い致します。

  • my sqlについて

    mysql> SELECT * FROM users WHERE id=0; +--------+--------+ | id | pwd | +--------+--------+ | tanaka | a2f9hy | | yamada | sn6s3n | +--------+--------+ これを実行した場合に 'tanaka'=0と解釈されます。 文字列と数値の比較の場合、暗黙に文字列を数値に変換してから比較します。 そして、MySQLに限り、数値に変換できない文字列は 0 に変換するからです。 この結果、'tanaka' = 0 は真になります。 と言うことですが、意味が理解出来ないのですが、 何故、tanakaは数値に変換できないのでしょうか。

    • ベストアンサー
    • yodogou
    • MySQL
    • 回答数1
  • PHPとMySQLについて。

    初心者です。 さくらインターネットのスタンダードプランを使っています。 phpmyadminで「test」というCSVをインポートしました。 http://php.net/manual/ja/pdo.connections.php#example-976 こちらのページをそのままコピペして「test.php」をつくりました。 <?php try { $dbh = new PDO('mysql:host=○○○.db.sakura.ne.jp;dbname=データベース名', 'ユーザ名', 'パスワード'); foreach($dbh->query('SELECT * from test') as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; die(); } ?> しかし下記のエラーが出てしまいます。 エラー!: SQLSTATE[HY000] [1045] Access denied for user 'ユーザ名'@'IPアドレス' (using password: YES) IPアドレスは調べたら、さくらインターネットのものでした。 現在サイトを作っている最中なので.htaccessでアクセス制限していたのが原因かと思い、このIPアドレスも許可したのですが同じエラーが出ます。 どうしたら正常に表示できるのでしょうか? xamppでは、 ڑ ς݂ Ăяo 悪 Ԃ ߂ Ă Ȃ ߁A ڑ ł ܂ ł B ܂ ڑ ς݂ z X g Ȃ ߁A m ꂽ ڑ s ܂ B のように完全に文字化けして、◆の中に?がある謎の記号が並んでいたり、何が何やら・・・。 完全にお手上げでどなたか助けていただけないでしょうか。

  • MySQLにあるデータを元にした送付状の自動作成

    MySQLにある顧客データを元にしたWordもしくはPDF送付状の自動作成プログラムを作りたいのですが、どういう風につくったらいいでしょうか? Wordの差し込み印刷で、EXCELのデータを挿入できるというのは知っていたのですが、本屋を梯子したところ、どの本にもEXCELの差し込み印刷の方法しか書いておらず、その場合、一旦Webアプリケーションから顧客データをCSV等でローカルにダウンロードしなければならず、手間がかかります。 参考) http://blog.goo.ne.jp/xmldtp/e/1c399b1733c18760497282c660fbc862 Web上でWordへの差し込みまでを完結できないのでしょうか。Wordでなくても、送付状が生成されればOKです。 宜しくお願い申し上げます。

  • MySQLで他テーブルを使用した複数行同時変更

    tanakaさん、matsudaさん、komatsuさんの3人が買い物に行きました。それぞれの所持金は50000円、購入した商品&価格は下記のとおりです。 【g】テーブルg 所持金 userId,g_money tanaka,50000 matsuda,50000 komatsu,50000 【ca】テーブルca 購入したもの userId,goods,price tanaka,watch.13000 matsuda,cardgame,1000 komatsu,bag,22000 matsuda,ballpen,500 tanaka,tablet.15000 tanaka,battery.1000 komatsu,chocolate,100 これをMySQLで、gの所持金から、caの購入リスト通りに引き算していくSQLを組みたいと思っています。 REPLACE INTO g(userId,g_money) SELECT (userId,VV) FROM (SELECT ca.userId,(SELECT g.g_money - ca.price) AS VV FROM ca, g WHERE ca.userId = g.userId) AS CG 下記のエラーが出てしまいます。 #1241 - Operand should contain 1 column(s) どのように修正すればいいかご教示いただけますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • tajix14
    • MySQL
    • 回答数1
  • SQLでのレコード更新、追加処理

    Windows7 32bit MySQL5.5を使用しています。 テーブルのスペースが崩れてしまっていて見づらいかと思いますが よろしくお願いします。 ・table B +------+------------------+------+ | id | name | id_A | +------+------------------+------+ | 1 | 手順書作成 | 1 | | 2 | レビュー | 1 | | 3 | 開発 | 2 | | 4 | 社内・社外研修 | 3 | +------+------------------+------+ (id=主キー、name=文字列、id_A=テーブルAを参照するための外部キー) ↓ 1回だけ以下のプログラムを実行し、table Cを生成します create table C (SELECT * FROM B); alter table C add flag Boolean default FALSE; ↓ ・table C +------+------------------+------+------+ | id | name | id_A | flag | +------+------------------+------+------+ | 1 | 手順書作成 | 1 | 0 | | 2 | レビュー | 1 | 0 | | 3 | 開発 | 2 | 0 | | 4 | 社内・社外研修 | 3 | 0 | +------+------------------+------+------+ その後、Bが不定期に更新されるため、どこかの タイミングで、同様にCにも更新情報を反映したいのです。 ↓ ・更新されたtable B +------+------------------+------+ | id | name | id_A | +------+------------------+------+ | 1 | 手順書作成 | 1 | | 2 | レビュー | 1 | | 3 | 開発 | 2 | | 4 | 社内研修 | 3 | | 5 | 社外研修 | 3 | +------+------------------+------+ ↓ ・table C +------+------------------+------+------+ | id | name | id_A | flag | +------+------------------+------+------+ | 1 | 手順書作成 | 1 | 1 | | 2 | レビュー | 1 | 0 | | 3 | 開発 | 2 | 0 | | 4 | 社内研修 | 3 | 1 | ←このレコードは更新したい | 5 | 社外研修 | 3 | 0 | ←このレコードは追加したい +------+------------------+------+------+ どのように指定をすればいいでしょうか。 思いつくのは create table temp( select B.id, B.name, B.id, C.flag from B left join C on(C.id=B.id)); drop table c; create table c(select * from temp); drop table temp; という方法ですが、もう少しスマートな処理方法がないか、 そして、default値が反映されたものにしたいのです。 (上記を実行すると以下になります) ・table temp +------+------------------+------+------+ | id | name | id_A | flag | +------+------------------+------+------+ | 1 | 手順書作成 | 1 | 1 | | 2 | レビュー | 1 | 0 | | 3 | 開発 | 2 | 0 | | 4 | 社内研修 | 3 | 1 | | 5 | 社外研修 | 3 | NULL |←NULLではなく、FALSEとしたい +------+------------------+------+------+ どうぞ宜しくお願いします。

    • ベストアンサー
    • japelin
    • MySQL
    • 回答数1
  • SQLのLIKEでの_%あるなし

    こんにちは SQLのLIKEにおいて、LIKEだけだと、頭文字での一致を探すのみで、 _%でやると2文字目以降にも含まれれば検索されるということですか? 逆にいうと、LIKEのみでは頭文字の一致しか検索できないのですか?

  • MySQLを別ファイルから操作する方法

    こんにちは MySQLのコマンドプロンプト上ではなく、別ファイルからJavaScriptなどの動的処理によってMySQLのデータを動かす方法はあるのですか? 例えば、window.promptでのサブウィンドウに入力された値をMySQLのデータに追加させる等々