0240神 ◆YDp73vGOso3d 2018/04/06(金) 01:28:52.77ID:??? テンプレ見ろゴミ ここは初心者用スレだよ なのに俺の質問は基礎的すぎるとかいう謎老人のおかげで誰も答えんのや まじでゴミSEは右ならえの自我すら持たない穢多非人よ 0241NAME IS NULL2018/04/06(金) 08:24:33.64ID:??? いつまで粘着してんだ、このキチは 0242NAME IS NULL2018/04/06(金) 12:19:44.04ID:1nt8ANDW>>239 IT技術者の間ではよくわからない質問によくわからない回答をして お互い納得するのがデフォルトスタンダードですものねw 0243NAME IS NULL2018/04/06(金) 12:43:29.95ID:??? ここはわざと言い間違えるスレか? 0244NAME IS NULL2018/04/06(金) 12:58:57.72ID:GwnuWxH/ まず質問者が無礼。回答者がとりあえず想像で回答。これがこのスレが機能していない理由。 0245NAME IS NULL2018/04/06(金) 13:59:04.00ID:GwnuWxH/>>240 初心者向けであれば、SQLを回答するのではなく、何をしようとしているのを確認するのが先です。できればいい論をデータベース板で確認するのはおかしいので、プログラム板やプログラマ板で質問すべきです。 0246神 ◆YDp73vGOso3d 2018/04/06(金) 20:23:48.23ID:???>>245 わかったわかったお前の意見とかどうでもいいわ 文体見るだけで中年のごみおっさんってわかるわやばいよ君? 0247NAME IS NULL2018/04/06(金) 20:45:46.08ID:??? 匿名の掲示板で誰でも書き込めるんだから 気に入らなければスルーすれば良いだけ 質問者が無礼って、お前に害悪を加えてきたわけじゃあるまいし 0248NAME IS NULL2018/04/06(金) 21:22:42.32ID:+EV0F8Wd 助けてください。 ACCESSのDBなんですが、 tblAは、[id][なまえ][電話番号][性別][入会日]というフィールド構成のマスター名簿 tblBは、[id][入金日][入金額]というフィールド構成です。
このテーブルを元に、ACCESSやEXCELのVBA上で、
[id] [なまえ] idごとの[入金額]の合計 WHERE 昨日=<[入金日] <= 明日
というレコードセットを取得したいです。 tblBの集計に、tblAからもってきたなまえフィールドをくっつけたい、という感じです。 INNER JOINとか、そういうのを駆使して、なんとかひとつのSQL文を作りたいのですが、 うまくいきません。 どなたか、SQL文そのものをご教示ください。 お願いします。 0249NAME IS NULL2018/04/06(金) 21:55:43.69ID:???>>248 このままだとよくわからん 「誰が」入金したという情報はどこで管理しているの? 0250NAME IS NULL2018/04/06(金) 22:00:07.59ID:+EV0F8Wd>>249 すみません。idというのは、メンバーidのことです。レコードidではありません。 わかりづらくてすみません。
メンバー(マスターで、idから名前がわかる)による入金の記録がBテーブルです。 それぞれのメンバーが、合計でいくら入金したのか、を集計したいのですが、 Bテーブルにはidしかなく、集計表には名前も欲しいので、Aテーブルから持ってきたいのです。 0251神 ◆YDp73vGOso3d 2018/04/06(金) 22:08:41.64ID:???>>250 君質問する以前の問題だよ? あと今質問受け付けてないからばいばい 0252NAME IS NULL2018/04/06(金) 22:09:44.34ID:???>>250 えーと 同じ日に2件以上の入金はないということ? 0253NAME IS NULL2018/04/06(金) 22:12:55.34ID:+EV0F8Wd>>252 ありえます。 なので、SUM[金額] GROUP BY id としたいです。 0254NAME IS NULL2018/04/06(金) 22:20:07.86ID:???>>253 そもそもテーブル設計がまずいのでは 同じ人が同じ日に同じ金額を入金したらどうなるの? 主キーは? 0255NAME IS NULL2018/04/06(金) 23:15:05.62ID:+EV0F8Wd Bテーブルにはオートナンバーのridフィールドがあります。 0256NAME IS NULL2018/04/07(土) 04:28:00.74ID:??? GROUP BY [id],[なまえ] 0257NAME IS NULL2018/04/07(土) 09:47:12.83ID:???>>248 Accessは知らんが一般的なSQLではこんな感じ
select A.id, A.なまえ, B.合計 from tblA A inner join (select id, sum(入金額) as 合計 from tblB where 入金日 between 昨日 and 明日 ) B on A.id = B.id ; 02582572018/04/07(土) 09:48:19.23ID:??? サブクエリ内にgroup by id書くの忘れた 0259NAME IS NULL2018/04/07(土) 15:34:15.71ID:???>>248 accessで作ってやったぞ これでどうだ。
SELECT tblA.ID, tblA.[なまえ], Sum(tblB.入金額) AS 入金額の合計 FROM tblA INNER JOIN tblB ON tblA.ID = tblB.ID WHERE (((tblB.入金日)>='2018-04-06' And (tblB.入金日)<='2018-04-08')) GROUP BY tblA.ID, tblA.[なまえ] ORDER BY tblA.ID; 0260NAME IS NULL2018/04/07(土) 20:09:01.50ID:???>>259 ありがとう! 0261NAME IS NULL2018/04/10(火) 10:35:12.39ID:dRsp0g4C 【シオンの議定書は反日】 『マス・レジャーとクイズを盛んに』 『あなたは極めて優秀だから寝返れ』 http://rosie.5ch.net/test/read.cgi/liveplus/1523323225/l500262NAME IS NULL2018/04/15(日) 00:36:03.26ID:???>>4 のよくある質問2で、keyに別テーブル?配列?を指定することはできますか。 (key=3など、BDにない項目のカウント結果は当然ゼロになるが、それも結果として欲しい)
DBは、Google Fusion Tablesです。 0263NAME IS NULL2018/04/15(日) 00:56:40.79ID:???>>262 具体的にテーブルの内容を例示してみて 0264NAME IS NULL2018/04/15(日) 01:11:20.64ID:??? outer joinのことを言いたいんだと思う 0265NAME IS NULL2018/04/15(日) 01:41:28.73ID:??? OUTER JOIN? …慌ててググる…そうそうそれです!
Google Fusion TablesはWHERE句で関数が使えないなどSQLはやや貧弱なのですが、 OUTER JOINはあるようなので(LEFTだけ?)勉強してやってみます。 ありがとうございました。 https://developers.google.com/fusiontables/docs/v2/sql-reference0266神 ◆YDp73vGOso3d 2018/04/15(日) 17:01:53.04ID:Bs6Qpy/T おいおいおいおいouter joinとかいう初心者以前の質問には答えて 俺の質問には答えんのかい お前らほんと捻くれてるな これだからSEとかいうオタク共はいじめたくなるんだよなあ 0267NAME IS NULL2018/04/15(日) 17:33:52.27ID:???>>58 専門学生の宿題だろこれ? 0268NAME IS NULL2018/04/19(木) 00:19:53.73ID:ACyU9sdk>>266 答えられんのはプログラマーとかゆうコーダーだろ SEとゆうのは俺様みたいな有能のことたぜボーイ! 0269NAME IS NULL2018/04/19(木) 01:05:53.36ID:pgNamYVa>>268 you? 0270NAME IS NULL2018/04/20(金) 20:42:22.38ID:cUph+NAS>>269 なんや?SE様に何か用か? 0271NAME IS NULL2018/04/28(土) 20:00:00.97ID:??? テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど この値がどのidなのか毎回自分でテーブル確認してinsertするのが大変で困ってます リストボックスみたいなので'ゆうちょ'を選んだら(bank_id=)3みたいに支援してくれる機能ってSQLでできませんか? RDBMSはMySQLでLinuxのターミナル使ってます 0272NAME IS NULL2018/04/28(土) 21:05:32.03ID:??? それはSQLではなくWeb画面等使って選択させれば良いだろう 0273NAME IS NULL2018/04/28(土) 21:36:58.41ID:f64A+t1T>>271 SQLの話ではないな。 0274NAME IS NULL2018/04/28(土) 22:38:37.03ID:??? ACCESSでも使ってろ 0275NAME IS NULL2018/04/29(日) 03:58:48.45ID:uDICrjO7>>271 IDを使わず銀行名でやってみてください。
自分が経験しなければ、なぜそうした方がいいのか、わかりませんよ。 0276NAME IS NULL2018/04/29(日) 10:54:53.31ID:??? >テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど
それは分かってるっていうよりメリットデメリット理解しないまま鵜呑みにしてるだけだよね。 どうせ鵜呑みにするなら教科書通りのリレーショナルDB設計から入ればいいのに。 0277NAME IS NULL2018/04/29(日) 11:08:37.04ID:??? 更新時のレコード件数を減らしたり情報の集約・一元化がメリットですよね。ざっくりとは理解してるつもりです。 ただターミナルからSQLで複数のレコードを追加するには自力でテーブル確認する必要あるのが使いづらいなと思って 0278NAME IS NULL2018/04/29(日) 11:34:58.17ID:??? select bank_id from m_bank where bank_name = ’ゆうちょ’
こんなサブクェリーを追加SQLに埋め込む 0279NAME IS NULL2018/04/29(日) 12:34:02.47ID:???>>278 こういうときに副問合せ使うんですね、使いやすそうで凄く良さそう。 早速使ってみます。 ありがとうございます。 0280NAME IS NULL2018/04/29(日) 13:38:14.58ID:uDICrjO7 マスタテーブルではないのか? 0281NAME IS NULL2018/04/29(日) 14:23:08.00ID:??? >複数のレコードを追加するには自力でテーブル確認する必要ある
これの意味が判らん 0282NAME IS NULL2018/04/29(日) 18:36:41.80ID:??? 説明下手ですみません。 初心者なのですごく初歩的な質問でした。 取り敢えずサブクエリで解決しましたが一応
declare cur cursor for select No,A from t order by No desc; declare exit handler for not found set done = 0; set done = 1; set _flag = 0; set _cnt = 0;
open cur; while done do fetch cur into _no, _a; if _a = 1 and _no > 0 then update t set b = 0 where No = _no + 1; set _cnt = _cnt + 1; else update t set b = _cnt where No = _no + 1; set _cnt = 0; end if; end while;
if _a = 1 then update t set b = 0 where No = _no; else update t set b = _cnt where No = _no; end if; close cur; end; 0324NAME IS NULL2018/05/13(日) 05:37:55.80ID:???>>322 ありがとうございます。 教えていただいたキーワードをもとに 調べてみます。
>>323 ありがとうございます。 今はPCをさわれる環境にないので月曜日に試してみたいと思います。 0325NAME IS NULL2018/05/13(日) 07:21:58.29ID:???>>322 再帰やストアドなんて要らんでしょ >>318 の結果を得たいだけなら
select T1.NO, T1.A, ( select min(T3.NO) as NO from T as T3 where T1.NO < T3.NO and T1.A <> T3.A ) - T1.NO as [連続数] from T as T1 inner join T as T2 on T1.NO - 1 = T2.NO and T1.a <> T2.a where T1.A = 1
で十分でしょ (わかると思うけど表名は T ね) 0326NAME IS NULL2018/05/13(日) 09:51:48.44ID:???>>325 ありがとうございます。 試してみます。 0327NAME IS NULL2018/05/13(日) 11:09:02.63ID:??? 再帰SQLでやるならこんな感じ 最初に1がでたところで表示したいとのことなので レコードの最後から加算積み上げてる 半角でレスしようとしたらインジョクションかなんかでエラーになった ため全角に変換してます
よろしくお願いします。 0335NAME IS NULL2018/05/17(木) 22:21:17.05ID:???>>334 で何をやりたいかはだいたいわかったけど (たぶん STARTしてからSTOPするまで KEKKAを1にすればよいはず) 行順を保持しつつ状態遷移させるのって普通のSQLでできるのだろうか? 0336NAME IS NULL2018/05/17(木) 22:27:50.57ID:??? START、START、STOP、STOPって並びになったときはどうすんの? 0337NAME IS NULL2018/05/17(木) 22:28:51.14ID:??? 334見てなかった、すまん 0338NAME IS NULL2018/05/17(木) 22:51:31.55ID:???>>334 スタートがあったら1加算ストップがあったら1減算する累積計算すればいいじゃねえ select no sum( start + end * -1) as kekka from t as m left join t as s on t.no<=m.no group by no 0339NAME IS NULL2018/05/18(金) 01:30:58.99ID:???>>338 いろいろ細かいミスは置いといて、それSTOPの行が1にならんだろ
>>329 select NO,START,STOP, (select isnull(sum(START),0) from t where t.NO <= m.NO)- (select isnull(sum(STOP),0) from t where t.NO < m.NO) KEKKA from t m とかで出来んじゃね