「phpとmysqlでDBにある前日と1ヶ月前の差分を計算したい」という質問の続きになってしまうのですが、前日のデータ(前月のデータ)がないメンバーは表示しないようにしたいのですが可能でしょうか?
前回の質問
https://oshiete.goo.ne.jp/qa/10954721.html
具体的には教えていただいた下記sqlのメンバー106(11番=1/25に初めてデータ登録された人)は前日のデータがないのでselectで抽出したときに表示させないようにしたいのです。
create table tbl(id int primary key, member_id int, follower_count int, d date,unique key(member_id,d));
insert into tbl values
(1, 101, 55, '2019-01-24'),
(2, 102, 123, '2019-01-24'),
(3, 103, 10, '2019-01-24'),
(4, 104, 5, '2019-01-24'),
(5, 105, 88, '2019-01-24'),
(6, 101, 70, '2019-01-25'),
(7, 102, 80, '2019-01-25'),
(8, 103, 50, '2019-01-25'),
(9, 104, 150, '2019-01-25'),
(10, 105, 55, '2019-01-25'),
(11, 106, 1, '2019-01-25'),
(12, 101, 1, '2019-01-23');
11番=1/25に初めてデータ登録された人
12番=もっと古いデータ
select
t1.id
,t1.member_id
,t1.follower_count-coalesce(t2.follower_count,0) as zougen
from tbl as t1
left join tbl as t2 on t1.member_id=t2.member_id
and t2.d='2019-01-24'
where t1.d='2019-01-25'
order by zougen desc
sql側でできない場合は、php側で処理するしかないでしょうか?
No.3ベストアンサー
- 回答日時:
なるほど
tblをleft joinからinner joinにするだけでいけるかも
select
t1.id
,t1.member_id
,t3.name
,t1.follower_count-t2.follower_count as zougen
from tbl as t1
inner join tbl as t2 on t1.member_id=t2.member_id
and t2.d='2019-01-24'
inner join member as t3
on t1.member_id=t3.member_id
where t1.d='2019-01-25'
order by zougen desc
No.2
- 回答日時:
んー、ちょっと状況がわかりません
select
t1.id
,t1.member_id
,t3.name
,t1.follower_count-t2.follower_count as zougen
from tbl as t1
left join tbl as t2 on t1.member_id=t2.member_id
and t2.d='2019-01-24'
inner join member as t3
on t1.member_id=t3.member_id
where t1.d='2019-01-25'
order by zougen desc
で、106のユーザーは表示されませんよね?
表示されないのが正解なら問題ないような・・・・
言葉足らずで申し訳ありません。
上記を実行してみると
id, member_id, name,zougen
9 104 太田智 145
8 103 宇野次郎 40
6 101 安倍里美 15
10 105 佐藤将弘 -33
7 102 五十嵐太郎 -43
11 106 加藤博也 NULL
このように表示されまして、zougenがNULLで表示されました。
この「106 加藤博也 NULL」自体を表示させないようにすることは可能でしょうか?
No.1
- 回答日時:
> 前日のデータがないのでselectで抽出したときに表示させないようにしたい
> php側で処理するしかないでしょうか?
いや、むしろこちらの方がラクです
select
t1.id
,t1.member_id
,t1.follower_count-t2.follower_count as zougen
from tbl as t1
inner join tbl as t2 on t1.member_id=t2.member_id
and t2.d='2019-01-24'
where t1.d='2019-01-25'
order by zougen desc
yambejpさん、いつもありがとうございます!
私のミスで最初からこちらで出しておけばよかったのですが
select
t1.id
,t1.member_id
,t3.name
,t1.follower_count-t2.follower_count as zougen
from tbl as t1
left join tbl as t2 on t1.member_id=t2.member_id
and t2.d='2019-01-24'
inner join member as t3
on t1.member_id=t3.member_id
where t1.d='2019-01-25'
order by zougen desc
memberテーブルもjoinしたこちらのsqlで試すと、zougenは空ですがメンバー106も抽出される・・・で合っていますか?
php側でzougenが空の人は表示させないようにして思っていた通りに表示できたのですが、
もしかしてsql側でメンバー106の人を抽出させないことができるのかなと思い、また質問させていただきました。
何度も申し訳ございません。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP php エラー 2 2022/10/23 16:43
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
副問合せの書き方について
-
sqlで、600行あるテーブルを100...
-
書籍の内容はまともでしょうか?
-
SQLサーバから、項目の属性(型...
-
阪急三番街 ATM(ゆうちょ)は...
-
【MySQL】本当に困っているので...
-
DataTableで重複行を削除したい
-
SQL Left Join で重複を排除す...
-
Unionした最後にGROUP BYを追加...
-
1対多結合で多を絞り込み条件と...
-
php+mysqlで複数選択削除について
-
PL/SQLの変数について
-
[MySQL] UNIQUE制約の値を更新...
-
LAST_INSERT_IDで同時にアクセ...
-
Access パラメータクエリをcsv...
-
画像とカテゴリーを出力したい...
-
マイクラPC版のコマンドで効率...
-
Mysql でレコードを追加した時...
-
VMwareがCDドライブを認識する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報