お世話になっております。
PHPからMySQL5を呼出すスクリプトを制作しています。
no id date price
----------------------------
1 4 2013-4-29 2100
2 2 2013-5-1 3150
3 2 2013-5-31 4200
4 7 2013-6-1 2100
5 2 2013-6-2 1575
6 4 2013-6-2 8400
というようなデータがありますが、下記のように、2番のid、かつ現在から1ヵ月前の期間内のpriceの合計額を算出したいのですが、
SQLおよび変数はどのようなものになりますでしょうか?
id: 2
total: 5775
ネットで調べながらSQL文などを色々と試していますが、PHPの変数をどのようにしていしたらいいのかが分からず、結果を返すことが出来ずに立ち止まっている状況です。
大変お恥ずかしい質問と認識しているところですが、アドバイスのほど頂戴出来れば幸いです。
宜しくお願い申し上げます。
No.1
- 回答日時:
SELECT id SUM(PRICE) FROM テーブル名
WHERE id = 2 AND DATE BETWEEN #2013-5-1# AND #2013-5-31#
日付のところは必要に応じて変数にしてください。
この回答への補足
$sql = "SELECT id SUM(PRICE) FROM テーブル名
WHERE id = 2 AND DATETIME BETWEEN '2013-5-1' AND '2013-5-31'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
というスクリプトとなっています。
結果を返すための変数もお教え頂けると幸いです。。
(テーブル名は実際の名称)
>maiko0318さま
こんばんは。前回に引き続き有難うございます。
早速とばかり試してみましたが、エラーとなってしまいます。
質問時、文字数を省略するため、dateカラムをdate型で書きましたが、実際はdatetime型なので、
SELECT id SUM(PRICE) FROM テーブル名
WHERE id = 2 AND DATETIME BETWEEN #2013-5-1# AND #2013-5-31#
としましたが、この認識で宜しかったでしょうか?
また、#2013-5-1# AND #2013-5-31# の部分ですが、シャープを記述するのは初めて見ましたが、シングルコーテーションと同様の使い方になるのでしょうか?
それと、結果を返すための変数はどのようなものになりますでしょうか?
お恥ずかしい質問ばかりで恐縮ですが、引続きご指導頂ければ幸いです。
No.3
- 回答日時:
>WHERE id = 2 AND DATETIME BETWEEN #2013-5-1# AND #2013-5-31#
SELECTで書くのはカラム名であって、データ型とは違います。
DATETIME型の記述はやったことがありませんm(__)m
>結果を返すための変数
PHPはわからないのですが、SELECTで返ってくるのはDATETIME型です。
この回答への補足
maiko0318さま
こんばんは。お世話になっております。
先のお返事、お礼が疎かになっていました。
前回に続けての貴重なアドバイス、感謝しています。
ありがとうございました!
No.4
- 回答日時:
>定義の書き方(置き方)が分かりません
まずMySQLにおける現在=本日はCURDATE()で得られます
「現在から1ヵ月前の期間」というのは実はあいまいで
考え方の一つとしては、「1カ月前の1日後から今日まで」というのが一般的です
たとえば今日が2013年6月4日なら1か月前=5/4の1日後=5/5から6/4がそれにあたります。
月の長さは一定ではないので考え方が微妙です
仮に5/31の1カ月前をとるときMySQLでは4/30を返します。
これは5/30の1カ月前とっても同じ4/30がかえってくるので想定した期間と
ことなる可能性があります。
同様に4/30の1カ月前は3/30ですから、4月のデータを集計しようとして
4/30から1カ月さかのぼろうとしても3/31のデータを拾ってしまうケースが
あるということです。
そういった例外処理むししていいなら、前述した1カ月前の1日後から当日までを
集計期間として、以下のようなSQLを発行します
select id, sum(price) from テーブル名
where id = 2
and `date` between curdate() - inteval 1 month + inteval 1 day and curdate()
yambejpさま
ご丁寧にご説明頂き有難うございます!
回答を拝見し、かれこれ3時間ほど(恥)色々と試していますが、構文エラーとなっているようで結果を求めることが出来ません。
以下のスクリプトが実際に試している内容ですが、何処か不適切な個所はありますでしょうか?
また、結果を返すための変数などもお教え頂けると幸いです。
$con = mysql_connect("localhost", "***", "******");
mysql_select_db("***", $con);
$sql = "SET NAMES ujis";
mysql_query($sql);
$sql = "SELECT id, SUM(price) FROM sales WHERE id = '2' AND `date` between curdate() - inteval 1 month + inteval 1 day AND curdate()";
$result = mysql_query($sql);
$rows = mysql_num_rows($result) or die("error");
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- SQL Server SQL 期間内の実施数を合計したい 2 2023/03/03 22:28
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JOINを使った文で、date > now();
-
下記の問合せを行うクエリを、 ...
-
単一グループのグループ関数で...
-
複数のテーブルから値を合計出...
-
AccessのSQL文で1件のみヒット...
-
count関数の値をwhere句で使用...
-
select文の実行結果に空白行を...
-
2回実行のSQL文を1回にしたい
-
int型フィールドにnullを登録で...
-
テーブルのフィールドの一番長...
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
並べ替えについて
-
レコードの登録順がおかしい
-
レコードの更新履歴について
-
ACCESSのクエリで空白以降を別...
-
【PL/SQL】FROM区に変数を使う方法
-
ファイルの漢数字の順番につい...
-
コンボボックスのソートについて
-
SQL*Loader Append
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP+MySQLで月ごとの数量を表...
-
【PL/SQL】DATE型の時刻の表示...
-
PHPとMysqlを使用した集計表の...
-
データ更新用のphpの記述でデー...
-
PHPでMySQL内のデータの合計値...
-
postgresのカレンダーについて
-
EXCELマクロのSQL文での引用符...
-
bash内のaws cli cloudwatch Lo...
-
日替わりメッセージを表示させ...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
select文の実行結果に空白行を...
-
テーブルの最後(最新)のレコー...
-
count関数の値をwhere句で使用...
-
【PL/SQL】FROM区に変数を使う方法
-
SELECT FOR UPDATE で該当レコ...
-
2つの列が同じ値の行を取得するSQL
-
レコードの登録順がおかしい
-
<SQL>重複しているデータの場合...
-
AccessのSQL文で1件のみヒット...
おすすめ情報