なんだか変な事をやってるみたいで恐れ入ります 0630NAME IS NULL2018/11/24(土) 18:07:07.78ID:??? 結局何をしたいのかさっぱり理解できないけどわざわざ違うモデルで答えさせるとか失礼な事するやつだからスルーしとくわ 0631NAME IS NULL2018/11/24(土) 18:18:02.74ID:??? 質問をシンプルにしたくてモデルを 変えましたが、失礼と思われたようで 済みません 0632NAME IS NULL2018/11/24(土) 18:26:04.19ID:??? わざわざスルーするって宣言してる奴なんだからスルーでいいよ 0633NAME IS NULL2018/11/24(土) 21:20:38.92ID:??? 合計値も平均値も割と簡単に計算出来ますし それをテーブルに入れた方が良いのか それともDBを見ているミドルの方で計算させた方が良いのか 全体の仕組みと性能で総合的に考えた方が良いかもしれません 0634NAME IS NULL2018/11/25(日) 01:43:22.84ID:+jUq2Ssihttp://altohumano.com/gt-r%e3%80%80%E8%B2%B7%E5%8F%96/0635NAME IS NULL2018/11/26(月) 21:45:52.63ID:??? mysql,mariadbでmyisamが非推奨になったのはなぜですか? innodbではbeginやcommitが使えるそうですが、メモ的なデータをinsertするぐらいなのですが、 それでもinnodbを使った方がいいのでしょうか? 0636NAME IS NULL2018/11/26(月) 22:42:16.59ID:??? そういうのは各RDBのスレがあるんだから、そこで聞けよ 0637NAME IS NULL2018/11/26(月) 23:01:09.03ID:???>>635 こちらで聞いてみたら
MySQL SQL質問応答スレ https://mevius.5ch.net/test/read.cgi/db/1478776715/0638NAME IS NULL2018/11/27(火) 03:05:52.60ID:??? 専用スレがあったのですね、誘導ありがとうございます。 0639NAME IS NULL2018/11/28(水) 16:28:54.70ID:ZtGMc1/U 【勝谷誠彦(57)死去】 人口が毎年20万人も減るほど被曝して応援させ、さらに70歳まで働いて応援 http://rosie.5ch.net/test/read.cgi/liveplus/1543371270/l500640NAME IS NULL2018/11/29(木) 10:10:36.91ID:??? 以下のようなデータがあった場合、 name date rate AAA 11/1 2000 BBB 11/1 900 CCC 11/1 500 DDD 11/1 700 AAA 11/2 2000 BBB 11/2 1200 CCC 11/2 500 DDD 11/2 700 AAA 11/3 2000 BBB 11/3 500 CCC 11/3 1500 DDD 11/3 700
最新のrateが1000未満だけを抽出するにはどうすればよいでしょうか? DDD 11/3 700 BBB 11/3 500 0641NAME IS NULL2018/11/29(木) 11:07:44.82ID:???>>640 こうかな? select name, MIN(date), rate from hoge where rate < 1000 group by name, date, rate 06426412018/11/29(木) 11:26:02.69ID:??? 違った、こうか? select a.name, a.date, a.rate from hoge as a, (select name, MAX(date) from hoge where rate < 1000 group by name, date) as b where a.name = b.name and a.date=b.date; 0643NAME IS NULL2018/11/29(木) 13:04:58.18ID:??? SELECT * FROM a WHERE (name,date) IN (SELECT name,MAX(date) FROM a GROUP BY name) AND rate<1000 0644NAME IS NULL2018/11/29(木) 13:09:17.80ID:???>>642 レスありがとうございます。 試したのですが、fromのselectでMAX(date)以外のも全て列挙されてしまいます。 DDD 2018/11/01 00:00:00 BBB 2018/11/01 00:00:00 CCC 2018/11/01 00:00:00 DDD 2018/11/02 00:00:00 CCC 2018/11/02 00:00:00 DDD 2018/11/03 00:00:00 BBB 2018/11/03 00:00:00 ちなみに使用DBはpostgresqlです。 0645NAME IS NULL2018/11/29(木) 13:14:19.05ID:???>>643 おお!できました!! ありがとうございます! 整理して理解します。 0646NAME IS NULL2018/11/29(木) 16:31:32.41ID:??? こういうときに色々意地悪な条件をついつい考えてしまう 最新日って言う場合、1件だけになるのか、 それとも同一日は全部該当にするのか 結果表示に時刻まで出てきていると悩んでしまう その後の処理で何を使いたいかにもよるんだろうけど 0647NAME IS NULL2018/11/29(木) 23:50:24.51ID:0rvo1ya5>>646 ここで質問してくるやつはいつも仕様などあまり考えていない。 0648NAME IS NULL2018/12/03(月) 19:05:02.42ID:??? 2つの文字列カラムがあり、一方がもう片方の文字列から始まるものだけを抽出したい場合どうすればいいですか? str1 str2 ABC ABCDEF DEF aiu GHI GHIxxx JKL akasa の場合、 ABC ABCDEF GHI GHIxxx 0649NAME IS NULL2018/12/03(月) 20:36:59.12ID:???>>648 str1の長さがstr2より短いことがわかってるなら where left(str2, len(str1)) = str1 でいいかと 0650NAME IS NULL2018/12/03(月) 22:05:33.10ID:??? ためしてないけど、 where (str1 like str2+'%') or (str2 like str1 + '%')とかでどうだろう 0651NAME IS NULL2018/12/03(月) 22:51:42.17ID:???>>648 んじゃ他ので WHERE PATINDEX(str1 + '%', str2) = 1 0652NAME IS NULL2018/12/04(火) 10:41:43.68ID:???>>649>>650>>651 お三方、ありがとうございました。 ばたばたしてて遅くなりましたが、確認できました。 0653NAME IS NULL2018/12/04(火) 11:20:56.24ID:???>>650-651 str1とかstr2に'%'含んでても大丈夫だっけ? 0654NAME IS NULL2018/12/04(火) 11:59:27.62ID:KJK6oDpE 大丈夫。ただ+が使えるのはMS系だな。 後は使えるやり方に読み換えて 0655NAME IS NULL2018/12/09(日) 16:50:28.29ID:??? SQL SERVERのSQL文について質問です
postgresql9です。 0663NAME IS NULL2018/12/17(月) 19:37:22.24ID:???>>662 postgresql9手元で動かせません。MariaDBです テーブル名はproductと仮定しました
select * from product where (major_ver,minor_ver) in ( select major_ver,max(minor_ver) from ( select major_ver,minor_ver from product where major_ver = (select max(major_ver) from product ) ) as t ); 0664NAME IS NULL2018/12/18(火) 00:22:00.75ID:???>>663 なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか ありがとうございます。 0665NAME IS NULL2018/12/18(火) 01:53:40.53ID:??? window関数使うともっと綺麗に書ける気がする
俺はwindow関数苦手だから書けないが 0666NAME IS NULL2018/12/18(火) 23:18:20.88ID:d1jtTCeB>>661 あんたはDATE型が文字列だとでも思っているのか? 0667NAME IS NULL2018/12/27(木) 14:42:38.04ID:??? a. 顧客テーブル(顧客コード, 顧客名) b. 商品テーブル(商品コード, 商品名) c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数) ↓ 売上日, 顧客名, 商品名, 売上数
このように結果が表示されるSQL文を教えてください 0668NAME IS NULL2018/12/27(木) 15:25:29.94ID:??? 何か基本のキって感じ これが書けないとヤバいと思う 0669NAME IS NULL2018/12/27(木) 15:29:31.60ID:??? こういうのって内部と外部とどっちで繋ぐのがよろしいの? それとも、JOINではなくWHERE内でキーを繋いであげればいいの?? 0670NAME IS NULL2018/12/27(木) 19:19:36.61ID:??? joinを使いなされ 0671NAME IS NULL2018/12/27(木) 19:28:59.29ID:??? まだ書かれていない要求仕様があるんじゃない? 読み取れる範囲だとどっちでも良いように思う 0672NAME IS NULL2018/12/28(金) 01:38:09.32ID:???>>667 select 売上日, 顧客名, 商品名, 売上数 from 売上テーブル inner join 顧客テーブル on 顧客テーブル.顧客コード=売上テーブル.顧客コード inner join 商品テーブル on 商品テーブル.商品コード=売上テーブル.商品コード
>>669 FROMに複数テーブル書いてwhereに結合条件書くのは今は推奨されない 内部か外部かは、商品テーブルにない商品売ってたり顧客テーブルにない顧客に売ってたりしない限りどちらでも同じ結果 どっちでもいいなら普通は内部結合にするんじゃね 0673NAME IS NULL2018/12/28(金) 08:19:26.48ID:???>>672 ありがとうございます メモしておきます 0674NAME IS NULL2018/12/28(金) 16:26:23.93ID:??? 外部キーがあればinnerなければleft joinかな 0675NAME IS NULL2018/12/28(金) 22:03:16.91ID:??? このなかで一番美人なのって真ん中だよね?深キョンレベルだと思うのだが ちなみに向かって右は目も鼻も整形してるって本人が公言してるけどそれ抜きにして誰が一番美人だと思う? http://bigsta.net/media/1933567086757747003_35649070980676NAME IS NULL2018/12/28(金) 23:11:45.98ID:???>>675 ブラクラ 0677NAME IS NULL2018/12/29(土) 10:58:20.71ID:???>>672 そうなのか、勉強になったわー。 講習受けたときはJOINで教わったのに、実際にWHEREで書かれたの使ってる人たちがいて何でだろうと不思議だったんだけど、 歴史的な表記ぶれみたいなもんなんだな。 商品登録がない商品を売ってる可能性とかも全然思いつかなかった。 0678NAME IS NULL2018/12/29(土) 11:00:50.31ID:???>>674 外部キー無いけど繋ぐって、どんなシチュエーション?? 0679NAME IS NULL2018/12/29(土) 19:17:07.38ID:/5Z8+3Hw>>677 結合条件をFROM句にしたのは標準SQL。ただ構文が長ったらしいのは失敗だった。 0680NAME IS NULL2018/12/29(土) 19:20:03.23ID:/5Z8+3Hw>>672 推奨されない?
そんな嘘を書くな。
製品によって結合条件の構文の一部が非推奨になっただけ。 0681NAME IS NULL2018/12/29(土) 19:21:06.30ID:/5Z8+3Hw>>677 上の世代からするとなんでFROM句に書きたがるのか疑問なんだよ。 0682NAME IS NULL2018/12/30(日) 09:09:04.13ID:??? どのテーブルにも脳死したかのように createdとupdatedっていうtimestampなカラムがあるんですが普通なんですか?
SELECT "TableA".*,"TableB"."ID2","TableB"."DATA" FROM "TableA" LEFT JOIN ( SELECT "ID",MAX("KEY") AS "KEY" FROM "TableB" WHERE "KEY"<=2 GROUP BY "ID" ) AS a ON "a"."ID"="TableA"."ID" LEFT JOIN "TableB" ON "TableB"."ID"="a"."ID" AND "TableB"."KEY"="a"."KEY" ORDER BY "TableA"."ID" 0712NAME IS NULL2019/01/19(土) 23:44:19.87ID:???>>711
MAX(KEY)とWHEREが巧妙ですね 0713NAME IS NULL2019/01/19(土) 23:58:53.77ID:???>>711 検証してみたんですが、 TableBに(8,2,3,'b_key3')を追加し、検索KEY=3にした時、 一番若いKEY=1を持って来れてません 0714NAME IS NULL2019/01/20(日) 02:34:11.35ID:??? ? 2より若いじゃ無くて2が無ければ一番若いKEYなのかな KEY=3,4,5の場合3になる? 0715NAME IS NULL2019/01/20(日) 02:37:14.35ID:??? なんかSQL貼り付けようとすると書き込みに失敗する 何故だ 0716NAME IS NULL2019/01/20(日) 03:14:45.59ID:??? 連投スマン 何度か試したけど直接SQL書くとエラーになるっぽい https://ideone.com/UrWptx0717NAME IS NULL2019/01/20(日) 08:31:23.78ID:???>>33みたいに場合分けを含むようなのは素直にunion allでやる方が見通しが良かったりする。 記述は冗長かもだけど。 0718NAME IS NULL2019/01/23(水) 06:30:51.69ID:???>>715 SQLインジェクションって知ってる? 0719NAME IS NULL2019/01/23(水) 08:44:06.11ID:???>>718 最初、>>716の16行目以降のSELECT文を書き込もうとしたら失敗したのよ >>711だと書き込み成功してるのに何故だろうか? どの部分が問題になっているか知ってる? 0720NAME IS NULL2019/01/24(木) 23:55:34.12ID:??? チェックは途中のクラウドで行っているようです SQLの特定のキーワードに反応しているみたい 引っかかるときもあれば引っかからないときもある その辺の基準はよく分からないです チェックする検査項目が変わるのかもしれない 0721NAME IS NULL2019/01/25(金) 19:17:24.19ID:???>>720 ありがとう
書いてみてエラーになったら外部サイトに貼るしかないか 0722NAME IS NULL2019/01/25(金) 20:20:44.91ID:??? 手間だけど、それが一番良いと思う 後は全角文字に置換して貼り付けるくらい 汚くはなるけど、説明と合わせて書きたい時は こうすると良いかな 0723NAME IS NULL2019/01/30(水) 21:50:00.13ID:faG5je+8 初めて質問させていただきます SQLからPostgresへのデータ移行をC#使ってプログラム作ってます csv吐き出しで移行させたいんですが、ダブル型のカラムのデータが.000や10.600という形で入ってるのですがどうにか0にする・余計な0を無くすことが出来るのでしょうか? またそういう事が吐き出しの際指定出来るのでしょうか? 吐き出しはbcpでフォーマットを読ませてます 0724NAME IS NULL2019/01/30(水) 22:08:09.72ID:??? FORMAT()関数とか言うのがあるんじゃねぇの?よく知らんけど 0725NAME IS NULL2019/01/31(木) 14:53:40.26ID:kxiPGIi/>>723 SQL ServerのことをSQL
CSVファイルのデータをわざわざC#でインポートプログラムを作ってインポート
エクスポートや出力にあたる言葉が「吐き出し」
初心者なのかクソ経験者なのか? 0726NAME IS NULL2019/01/31(木) 20:03:35.35ID:???>>725 自己解決しました 申し訳ない急ぎだったのでそういう書き方になってしまった C#は移行という一貫性のあるプログラムです SQL serverからPostgresへの移行と書いてあるように 目的の為の柔軟性もあるという意味合いで情報を付加しただけに過ぎないです 0727NAME IS NULL2019/01/31(木) 21:14:34.97ID:kxiPGIi/ 文字でデータを移行するのに数値型のデータをどう表現するのか指定を行っていない時点で初心者。 0728NAME IS NULL2019/01/31(木) 21:18:44.70ID:???>>726 どういう風に解決したのか書いておいて