SQL初心者質問スレ [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1NAME IS NULL2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。

2NAME IS NULL2016/05/14(土) 12:04:11.91ID:???
2get
teradataの識者いる?

3NAME IS NULL2016/05/26(木) 15:09:21.05ID:???
スレなかったっけ、、、と探したら無いな、、落ちたんかな

4NAME IS NULL2016/06/18(土) 19:48:26.11ID:wQWiAJ0q
外部の利用者が自由にテーブルを追加できるシステムを sqlite で検討しています。
テーブルが重複しないように利用者番号をテーブル名のプレフィックスにつけようと思います。

もしも、同じようなシーンでの一般的な方法などありましたら教えてください。
よろしくお願いします。

5NAME IS NULL2016/06/18(土) 21:48:46.05ID:???
>>4
利用者ごとに
dbはどう?

6NAME IS NULL2016/06/18(土) 22:19:58.66ID:???
>外部の利用者が自由にテーブルを追加できるシステム
が一般的な使い方とは思えないのに一般的な方法とか...

7NAME IS NULL2016/06/19(日) 04:42:21.27ID:???
>dbはどう?
この意味がよくわかりません。すみません。

利用者ごとにというのは、少し誤りでした。
正確にはプラグインとして db を操作するモジュールを追加できる仕組みです。
そのモジュールから db に対して create table もできるようにしたいです。
そのときにテーブルの名前の重複を避けたいので、質問させていただきました。

8NAME IS NULL2016/06/19(日) 09:41:12.88ID:???
sql というよりはそのモジュールの運用方法の話のようだな

9NAME IS NULL2016/06/19(日) 10:24:19.80ID:???
無謀な気が
ユーザーごとにDB分けちゃダメなん?

10NAME IS NULL2016/06/19(日) 11:22:35.41ID:???
1つのファイルのほうがユーザが使いやすいかと思っています。

もしかしたら sql という枠組みで話す質問ではないのかもしれません。
sql は初心者なので、動的テーブル名などを調べたのですが何か違う気がしました。
sql は歴史もあるし、自分の考えている程度のことはすでに枠組みができているのかと思い質問しました。

sql の枠組みですんなり当てはまるものがないとわかっただけで前進です。
ありがとうございました。

11NAME IS NULL2016/06/19(日) 11:31:36.67ID:???
DBの世界でデータをストアすると言いますが、
では読み出す場合は何て言うのでしょうか?

12NAME IS NULL2016/06/19(日) 11:35:49.20ID:???
>>9
1つのファイルにこだわりすぎていたかもしれません。
DB を分ける案を検討しようと思います。
ありがとうございました。

13NAME IS NULL2016/06/19(日) 11:58:16.35ID:???
>>12
5にも礼を言っとけ。
全く同じこと先に言ってる

14NAME IS NULL2016/06/19(日) 13:52:20.11ID:???
>>13
そういう意味だったんですね

>>5
ありがとうございました。

15NAME IS NULL2016/06/21(火) 16:53:37.04ID:???
一旦作ったテーブルを長期間使うのではなく、一日にテーブルのcreateやdropを何十回も繰り返すような使い方は特に問題有りませんか?

16NAME IS NULL2016/06/21(火) 18:07:42.86ID:???
要件次第

17NAME IS NULL2016/06/21(火) 18:32:30.12ID:???
>>15
大丈ー夫

18NAME IS NULL2016/07/09(土) 17:51:20.85ID:uRuLwqJe
取得した順番に数値をインクリメントして表示したいのですが、どういった文法をすればいいですか?
シーケンスとかそういうことではなく、

select
user,num
from
user

みたいなsqlで
userA 1
userB 2
userC 3

のようにnumに取得した順番に数値をインクリメントしたいです。

19NAME IS NULL2016/07/09(土) 17:59:50.73ID:uRuLwqJe
set @i:=0;
select @i:=@i+1 as rownum,user_id from user;

こういう書き方で自己解決しました。

20NAME IS NULL2016/07/21(木) 20:04:08.07ID:W6OLWaxQ
質問するときはRDBの名前くらいは書きましょう。

21NAME IS NULL2016/08/07(日) 07:38:31.22ID:???
mysql 5.6.20 です

daily_tblからcode毎の最新入力日付を得るのに
select a.code,code_name ,max(input_date) as saishin
from daily_tbl a
inner join master b
on a.code = b.code
group by code
order by code;
で出せたんですが、
今度はその日付が指定の日付でないもののみを出そうとして
select a.code,code_name ,max(input_date) as saishin
from daily_tbl a
inner join master b
on a.code = b.code
where max(inout_date) != '2016-08-05'
group by code
order by code;
とすると、Invalid use of group function ってエラーで出来ません。コード毎の最新入力日付が指定の日付でないもののみを
出すようにするにはどうすればいいのでしょうか

22NAME IS NULL2016/08/07(日) 10:36:30.57ID:???
inputなのかinputなのか気になるが、、、
having by 使うケースかなこれ?

23NAME IS NULL2016/08/07(日) 10:37:21.81ID:???
おっとgroup by の文字省いた時にby残しちゃったhaving ね

24212016/08/07(日) 16:10:17.24ID:???
あぁinoutになってるw inputです

25212016/08/07(日) 16:17:17.84ID:???
select a.code,code_name ,max(input_date) as saishin
from daily_tbl a
inner join master b
on a.code = b.code
group by code
having max(input_date) != '2016-08-05'
order by code;

で出てきました。実際に使う時に全然havingなんて思いつきもしなかったです^^;

26NAME IS NULL2016/08/07(日) 16:18:21.01ID:???
>>22
ありがとうございます

27NAME IS NULL2016/08/07(日) 16:59:37.21ID:mqpBG9Ui
>>25
テーブル修飾があったり、なかったりしているところがちょっと気持ち悪い。

28252016/08/07(日) 18:45:08.20ID:???
この場合、codeについては付けないと ambiguous 曖昧と言って怒られてしまうんですが、全部にどちらのテーブルのものなのか
はっきりさせておけってことですか?

29NAME IS NULL2016/08/07(日) 19:19:26.47ID:???
>>28
はい

30252016/08/07(日) 20:34:00.34ID:???
努力します^^;

31NAME IS NULL2016/08/07(日) 20:46:40.28ID:mqpBG9Ui
この例の場合、同じカラムがあるなら、FROM句の最初にあるテーブルのテーブル別名aで修飾するのが一般的。

他人がこのSQLだけを見たとき、この書き方だとどちらのテーブルのカラムか分からない。

32NAME IS NULL2016/08/21(日) 09:41:45.55ID:???
mysql5.7を使用しています
ユーザーのゲーム内マネーをwalletテーブルで管理していて
新たにユーザーの最大マネー記録の管理が必要になったので
recordテーブルを新たに作ることにしました

walletテーブル: id, user_id, gold
recordテーブル: id, user_id, max_gold

質問なのですが、walletテーブルのgoldから
recordテーブルのmax_goldを全ユーザー分一括で更新するにはどうしたらいいでしょうか
よろしくお願いします

33NAME IS NULL2016/08/21(日) 14:33:49.32ID:???
recordには全idすでにある前提?

UPDATE record
SET max_gold = (SELECT MAX(gold) FROM wallet
WHERE record.user_id = wallet.user_id);

とかは?

34322016/08/22(月) 01:44:39.00ID:???
>>33
レスありがとうございます
説明が不足していてすみません
userテーブルとwalletテーブルは1対1になっています
userテーブルとrecordテーブルも1対1です
全user分のwalletとrecordが存在します
walletテーブルのgoldは増減します
recordテーブルのmax_goldは過去最高goldです
あるタイミングで複数walletに一斉にgoldがプラスされます
そのときにwalletのgoldがrecordのmax_goldより大きければmax_goldを更新したいです
自分なりに調べてupdateとjoinを使うのだろうということはわかりましたがSQLを書けずにいます
教えていただけると嬉しいです
よろしくお願いします

35NAME IS NULL2016/08/22(月) 01:49:54.86ID:nVybO4PH
>>34
まずはひとつずつ考えて。

段階的に考えていかないと。

36NAME IS NULL2016/08/22(月) 04:14:30.36ID:???
別にその条件でも>>33でいけるだろ

37NAME IS NULL2016/08/22(月) 04:17:24.95ID:???
あー元がmaxより小さいケースがあんのか、でもl条件一つ追加するだけだよな

38322016/08/22(月) 10:24:05.45ID:???
自己解決できたみたいです

update record
left join wallet on record.user_id = wallet.user_id
set record.max_gold = if(wallet.gold > record.max_gold, wallet.gold, record.max_gold)
where record.user_id = wallet.user_id;

これでやりたいことはできたと思います
ありがとうございました

39NAME IS NULL2016/08/22(月) 10:41:57.37ID:???
ちょっと見ただけですけど
recordテーブルを追加するのではなく、
walletテーブルに max_goldという項目を追加すれば良いのでは?

40NAME IS NULL2016/08/22(月) 10:57:44.22ID:???
user_idごとに1件しか無いのにidが別にあることとかいろいろ気になるけど
まあなんか書いてない理由があるんだろう、、、

どうしても最新状態保つなら単にトリガ書くだけのが早そうだが

41NAME IS NULL2016/08/22(月) 13:08:23.88ID:nVybO4PH
>>38
正直に言ってくそSQLだわ。

他人があとでみたら、こいつ殺すと思われるレベル。

42NAME IS NULL2016/08/22(月) 13:40:23.90ID:???
初心者スレなんだからぼろくそに言うのではなく改善案を提示しないと

43NAME IS NULL2016/08/22(月) 13:59:03.07ID:???
これは更新が1回でも失敗したらもう最大値が出せなくなるじゃん

44NAME IS NULL2016/08/22(月) 18:58:47.51ID:???
>>34
walletに時系列データはないのか?
ないと実現出来ないのではないか?

45322016/08/22(月) 20:10:31.73ID:???
だめなSQLのようですね
どこが悪いのかがわからないのでどう改善していいのかもわかりません
具体的に指摘してもらえると助かります
SQL難しいですね

>>39
recordにはユーザーの最大ゴールド以外にもいろいろな記録を持たせようと思っています

>>44
時系列データはありません

46NAME IS NULL2016/08/22(月) 22:48:38.43ID:???
開始の残高ファイルと更新データがあれば累計関数使って累計残高viewを作ってその最大値で更新したほうがいいと思う
mysqlでは下記リンク先参照
http://pct.unifas.net/mysql/3712

47NAME IS NULL2016/08/22(月) 23:24:46.87ID:nVybO4PH
>>45
疑問なのは、UPDATE文ひとつでやらないと本当にいけないの?

こういう状況がわからない。

48NAME IS NULL2016/08/23(火) 03:22:31.82ID:???
>>38のSQLでは、実行時のwalletの値が最大値だったときしか更新されないぞ
履歴保持してないのに全ユーザ一括は無理(全ユーザのwallet更新タイミングが同じでない限り)

walletが時系列や履歴を持たずに、現在値しか保持してないなら
walletの更新時にrecordを更新しないとダメ

で、普通のDBMSなら、こういうのはwalletにトリガ張ってやる
walletを更新するストアドプロシジャ作ってそれでチェックするって方法もあるけど

49322016/08/23(火) 12:32:35.01ID:???
>>47
どういうサイトなのかを説明すべきでしたすみません
ざっくり言うと競馬のようなサイトをやっています
レース終了後に払い戻しとして的中した全ユーザーのwalletのgoldを
ユーザーが賭けた額×オッズ分プラスします
この払い戻しのタイミングでmax_goldを更新したいと思い>>38のようなSQLを考えました
goldが増えるタイミングは払い戻し時のみです

>>48
トリガ、ストアドプロシジャを初めて知りました
調べてみようと思います。ありがとうございます

50NAME IS NULL2016/08/23(火) 12:41:04.01ID:???
>>40 でトリガって書いてるのになw

51NAME IS NULL2016/08/23(火) 12:42:04.90ID:???
どっちにしてもストアドもトリガも知らないくらいの初心者がDB設計して使い物になるとは思えない
SQL以前にDB設計じゃねえの

52NAME IS NULL2016/08/23(火) 12:55:29.40ID:???
>>51
> どっちにしてもストアドもトリガも知らないくらいの初心者がDB設計して使い物になるとは思えない
と思ってるような奴の方が使い物になるとは思えんな

53322016/08/23(火) 13:06:07.75ID:???
データベースの勉強をおろそかにしてORMに頼ってたツケが回って来た感があります
データベースについて基本からしっかり勉強し直したいのですが
おすすめの本やサイトを教えていただけないでしょうか

54NAME IS NULL2016/08/23(火) 14:43:56.01ID:???
>>53
amazonでデータベースで検索し、設計関連の評判の良いものを5冊買え

55NAME IS NULL2016/09/01(木) 16:46:33.47ID:???
SQLっていうか、DBそのものに関する質問になってしまうんですが。。。

データベースに同じUserID、同じパスワードで複数ログイン出来るってのは一旦資格を与えられたユーザーに
ついてはその権限の範囲なら信用するってことなんですかね。

56NAME IS NULL2016/09/01(木) 17:48:15.50ID:???
1ユーザ1コネクションの制限を設けたとしたら、マルチプロセスやマルチスレッドなクライアントが任意のタイミングでコネクションを生成するのに苦労するよ。

57552016/09/01(木) 18:40:00.10ID:???
そちらの方のプログラミングには疎いんですが、とにかくそういう制限があるとまずいってわけなんですね。^^;
例えば一般ユーザーに開放しているデータベースがあるとして、そこにアクセスするユーザーにいちいちidとパスワード、権限を
与えるのも大変だなとは思ったんですが。

58NAME IS NULL2016/09/01(木) 19:02:23.73ID:???
何に関しては疎くないの?

59NAME IS NULL2016/09/01(木) 20:30:50.75ID:???
>>58
バカ発見

60NAME IS NULL2016/09/01(木) 21:43:12.28ID:???
>>59
回答してあげなよ ^^

61NAME IS NULL2016/09/01(木) 22:57:57.54ID:???
>>57
なんかいろいろ勘違いしてる

62NAME IS NULL2016/09/02(金) 02:24:24.57ID:RT8+OUHE
>>57
RDBMSでもOSでも1ユーザー、1セッションというものの方が珍しい。

63NAME IS NULL2016/09/02(金) 02:39:07.81ID:???
まあRDBMSによって「ユーザー」というものの定義は異なるけどな

64NAME IS NULL2016/09/04(日) 21:42:59.71ID:???
トランザクションとかの話?

65NAME IS NULL2016/09/04(日) 21:58:50.03ID:???
ユーザ用(id,パスワード)のテーブルがあった方がいいと思うけど

66NAME IS NULL2016/09/04(日) 22:33:29.15ID:???
>>57
>例えば一般ユーザーに開放しているデータベースがあるとして、
>そこにアクセスするユーザーにいちいちidとパスワード、権限を
>与えるのも大変だなとは思ったんですが。

一般ユーザーに直接データベースを操作させることは普通しないと思う。

そうではなく、データベースを利用するシステムが、利用ユーザーに提供する
業務用アカウントの話じゃないのかな?

67NAME IS NULL2016/09/04(日) 22:40:44.03ID:???
ユーザ用って書き方がおかしかった
ユーザを管理するテーブル

68NAME IS NULL2016/09/05(月) 16:09:42.99ID:???
最初にテーブルを作成したら、新しいテーブルは必要ないシステムを作っています
この場合、テーブル構造をどう保存するのが正しいやり方ですか?
とりあえずcreate文を保存しています

69NAME IS NULL2016/09/05(月) 16:42:31.07ID:???
>>68
それでいいよ

70NAME IS NULL2016/09/05(月) 16:46:05.98ID:???
DBのツールでスキーマ保存すると結局CREATE文だけってのもあるしな

71NAME IS NULL2016/09/05(月) 16:53:22.93ID:???
>>69
ありがとうございます

72NAME IS NULL2016/09/16(金) 14:02:36.57ID:???
例えば名簿のtableがあって、
id name address
という三つのカラムがあります。
idは重複しない番号です。
この時 id で order by して、
idが1000番台の人の最初の100人取り出す。
idが2000番台の人の最初の100人取り出す。
みたいな処理を連続で行う場合、毎回 order by するのは効率悪いと思うのですが、
何か良い方法はありますか?
MySQLです。

73NAME IS NULL2016/09/16(金) 15:12:58.45ID:???
>>72
between

74NAME IS NULL2016/09/16(金) 15:37:16.31ID:???
>>72
> みたいな処理を連続で行う場合、毎回 order by するのは効率悪いと思うのですが、
indexが使われるなら効率は悪くない

75NAME IS NULL2016/09/16(金) 15:46:47.88ID:???
>>73>>74
すみません、初心者なのでもう少しヒント下さい。
よく理解できません。

76NAME IS NULL2016/09/16(金) 15:50:26.47ID:???
>>75
select * from 名簿 where id >= 1000 order by id limit 100;
とかするんだろうけど、idにindexが付けられてるなら効率は悪くない
これでわからないのならお手上げ

77NAME IS NULL2016/09/16(金) 15:57:39.07ID:???
処理が必ず1000番台ごとにするなら
もう一つ項目daiを追加して、indexを張っておき
id 1000〜1999 には 1 をセット
id 2000〜2999 には 2 をセット
id 3000〜3999 には 3 をセット
というのは?
select * from 名簿 where dai=1 order by id limit 100;

78NAME IS NULL2016/09/16(金) 16:32:17.70ID:???
>>77
それだとindexは使われない

79NAME IS NULL2016/09/16(金) 17:12:26.30ID:???
>>75
select *
from 名簿
where
id between 1 and 100 or
id between 1000 and 1100 or
id between 2000 and 2100

80NAME IS NULL2016/09/16(金) 17:17:10.22ID:???
>>78
そんなのDBMSとオプティマイザの判断次第
カーディナリが十分高ければ、daiのインデックスは使われる可能性が高いだろ

元質問はMySQL指定か。MySQLのオプティマイザでは絶対使わんっていう話なら知らん

81NAME IS NULL2016/09/16(金) 17:19:10.66ID:???
>>78
idに抜け番がないとはどこにも書いてないけどな

82NAME IS NULL2016/09/16(金) 17:39:29.68ID:???
>>80
MySQLのこと知らんなら黙っとけよ

83NAME IS NULL2016/09/16(金) 17:42:18.69ID:???
>>82
まいしーくぇる

84NAME IS NULL2016/09/16(金) 18:05:34.85ID:???
mysqlはクソだからしかたがない。

85NAME IS NULL2016/09/16(金) 18:10:25.81ID:???
>>84
まいしーける

86NAME IS NULL2016/09/16(金) 18:25:35.23ID:???
そういや、mysqlではsub queryが劇遅だってのは直ったの?

87NAME IS NULL2016/09/16(金) 21:39:39.26ID:???
>>80
daiのカーディナリティも十分に大きければそのインデックスも使われるだろうけど、
常にそれよりカーディナリティが大きいidのインデックスを使った方がいいに決まってる。
それにそもそもidでソートするわけだし。

88NAME IS NULL2016/09/17(土) 02:16:52.23ID:???
ありがとうございました
indexを試してみます

89NAME IS NULL2016/09/22(木) 11:38:01.04ID:???
SELECT * FROM table
WHERE ...
 AND ...
 AND ...
 AND ...
のようにAND条件をズラズラ並べる場合、
その条件を並べる順番で処理速度は変わりますか?

90NAME IS NULL2016/09/22(木) 12:44:02.41ID:???
長文失礼します。
mysqlで
article_infoテーブルに title(記事タイトル),url(記事のurl)を持っています。
blog_infoテーブルには blog_title(ブログのタイトル),blog_url(ブログのtopのurl)を持っています。

やりたいこと:
article_infoで取得した記事のブログのタイトルを一緒に取得したい。
article_info.url は、,blog_urlのレコードのどれかを含んでいます。
例:
blog_title:サンプルブログ
blog_url:http://sample.com/
article_info.url:http://sample.com/article/001


   
のようになっているので、もし取得したurlがblog_urlに含んでいた場合、対応するblog_titleを共に表示したいと考えています。

91902016/09/22(木) 13:24:14.82ID:???
ちなみに
SUBSTRING(url,1,LOCATE('/',url,8))  でblog_urlのどれかとマッチするurlが作れることがわかりました。

92NAME IS NULL2016/09/22(木) 13:32:19.51ID:???
>>89
普通は検索方法はオプティマイザが判断するから関係ない

定義順に条件書かれてないと複合インデックスが使用できないDBMSがあるとかいう噂は昔聞いたことある
その場合は複合インデックスの定義順に並べるほうが早い可能性が高い

オプティマイザが貧弱で検索順を入れ替えられないDBMSも聞いたことがある
その場合はカーディナルの高い順に検索条件並べろと教えられたことはある
単一テーブルの単純な検索なら、最悪でもそのテーブルのフルスキャン1回ですむから
まあどうでもいいと思うが

93902016/09/22(木) 13:33:17.23ID:???
すみません。下記のかんたんなsqlで取得できました。お騒がせしました。
select
a.title,
a.url,
b.blog_title
from
article_info a,blog_info b

94NAME IS NULL2016/09/22(木) 20:16:59.13ID:???
>>92
詳しい説明ありがとうございました。
MySQLです。
念のために順番を考慮してAND条件を書いてみます。

95NAME IS NULL2016/09/22(木) 23:39:21.90ID:???
>>93
fromでカンマで繋げるのは
INNER JOINの省略形な

96NAME IS NULL2016/09/22(木) 23:45:57.18ID:???
cross joinだろ

97NAME IS NULL2016/09/22(木) 23:53:56.92ID:???
ふつう直積(CROSS JOIN)だと思うんだが、>>93読んであれ?と思った。
MySQLってそうなのか?

98NAME IS NULL2016/09/23(金) 00:03:00.24ID:???
whereでなんかしてなければ直積だな

99932016/09/23(金) 02:59:28.95ID:???
すいません、できたと思ってたけどできてませんでした。
しょうがないのでarticle_infoとblog_infoにblog_idカラムを追加して
Inner join で持ってきました。

100NAME IS NULL2016/09/24(土) 09:51:02.05ID:UI+2ILvZ
教えて下さい。
インサートしたカラムに不要な文字[:]がついてしまったのですが、
replaceで毎回取り除いてるとクエリが遅くなるので、すべて更新したいのですが、
update文で出来ますか?

1011002016/09/24(土) 09:57:30.44ID:UI+2ILvZ
できました。忘れてください。

102NAME IS NULL2016/10/05(水) 22:12:12.17ID:???
mysqlで質問です。
ng_wordテーブルがあります。
テーブルには、wordカラムにキーワードが登録されています。

main_textテーブルのtextカラムの中には
テキストの文章が入っています。

もしmain_textの中にng_wordのwordが含まれていたら、取得したくないのですが、
ロジックを挟まず、sqlだけで取得できますか?

103NAME IS NULL2016/10/05(水) 22:26:56.73ID:???
WHERE main_text NOT LIKE '%word%' じゃだめだったか?

1041022016/10/05(水) 22:40:45.63ID:???
>>103
ワードが1つならそれでも良いかもしれませんが、
複数あるので…

105NAME IS NULL2016/10/06(木) 00:04:56.18ID:???
このスレ、SQL文書こうとするとエラーになる
どうしたもんかな・・・

106NAME IS NULL2016/10/06(木) 00:19:48.71ID:???
Sorry, you have been blocked
You are unable to access 2ch.net

There are several actions that could trigger this block including submitting
a certain word or phrase, a SQL command or malformed data.

SQL文を投稿しようとすると、ハッキング行為とみなされるみたい

107NAME IS NULL2016/10/06(木) 00:22:02.92ID:???
>>102
http://codepad.org/7UvXuxkK

こちらに書いてみた

108NAME IS NULL2016/10/06(木) 18:36:58.34ID:???
不便になったもんだな

109NAME IS NULL2016/10/16(日) 17:07:47.24ID:9/d7j9zT
>>106
まあSQLインジェクション対策なんだろうけどな。

110NAME IS NULL2016/10/16(日) 17:11:39.20ID:53yW0F3M
>>107
前の書き込みをよく見ていないけど、テーブルの結合条件もなければ、カラムのテーブル名修飾もなくてわからない。

テーブル間の関係を説明してくれ。

そもそも初めに書いたようにSQLの書き方そのものが悪い。

111NAME IS NULL2016/10/16(日) 19:59:14.27ID:???
>>102 に書いてあるだろうに、何が分からないのか分からない

112NAME IS NULL2016/10/16(日) 23:41:51.01ID:yy6enVq7
兄弟関係の抽出 と LIMIT、OFFSETに代わるもの (マルチ)

OS: Windows 10 Pro
Access Version: 2016 (2010も使用)
VBA:Excel,Powerpointのみ
VBAでの回答:否
検索キーワード:access SQL 件数 指定


http://www.accessclub.jp/bbs2/0051/beginter16860.html
「No16860.SQLで件数を指定する方法」

SELECT [電話番号] FROM [T_児童マスタ] GROUP BY [電話番号] HAVING Count(*)>1

上記2つ等を元に、次のテーブルに適応させようとしていますが、
スマートな文、クエリ(または他の手法)が思いつきません。
どうかアドバイスをお願いいたします。


T_児童マスタ

学級 氏名 電話番号
11  A  1111-11-1111
21  B 2222-22-2222
31  C 1111-11-1111
41  D 2222-22-2222
51  E 1111-11-1111
61  F 3333-33-3333



望む出力結果

学級 氏名 電話番号    兄弟学級1 兄弟氏名1 兄弟学級2 兄弟氏名2 兄弟学級3 兄弟氏名3
11  A  1111-11-1111  31     C     51     E     
21  B 2222-22-2222  41     E
31  C 1111-11-1111  11     A     51     E
41  D 2222-22-2222  21     B
51  E 1111-11-1111  11     A     31     C
61  F 3333-33-3333

113NAME IS NULL2016/10/17(月) 01:58:23.01ID:ee1NFGBS
>>102
直積で結合して、textとwordを引数にとる文字列検索関数があれば、それをWHERE句の絞り込み条件にすればできるな。

114NAME IS NULL2016/10/17(月) 07:12:12.69ID:???
>>112
兄弟の数は可変なの?
2固定なら普通にjoinすればいい

115NAME IS NULL2016/10/17(月) 07:13:39.77ID:???
>>114
よくみたら2じゃなくて3か

116NAME IS NULL2016/10/17(月) 07:25:17.32ID:???
堂々とマルチと宣言すれば文句言われない!キリッ

117NAME IS NULL2016/10/17(月) 07:35:53.31ID:w90R1vLK
>>112
こんな感じでいいと思う
SELECT
MM.学級 
,MM.氏名 
,MM.電話番号
,S1.学級 AS 兄弟学級1
,S1.名前 AS 兄弟氏名1
,S2.学級 AS 兄弟学級2
,S2.名前 AS 兄弟氏名2
,S3.学級 AS 兄弟学級3,
S3.名前 AS 兄弟氏名3
FROM T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
on S1.電話番号 = MM.電話番号
and S1.学級 <> MM.学級
LEFT JOIN T_児童マスタ AS S2
on S2.電話番号 = MM.電話番号
and S2.学級 <> MM.学級
and S2.学級 <> S1.学級
LEFT JOIN T_児童マスタ AS S3
on S3.電話番号 = MM.電話番号
and S3.学級 <> MM.学級
and S3.学級 <> S1.学級
and S3.学級 <> S2.学級
WHERE nz(S1.学級,999) <= nz(S2.学級,999)
and nz(S2.学級,999) <= nz(S3.学級,999)

118NAME IS NULL2016/10/17(月) 13:02:38.65ID:???
>>105
全角

119NAME IS NULL2016/10/17(月) 18:24:29.94ID:3tZ2amHg
>>117
ありがとうございます。
これから試してみます。

120NAME IS NULL2016/10/17(月) 19:50:25.76ID:3tZ2amHg
>>117
少し拡張してみたところ「演算子がありません」とのエラーが
出てしまいます。かなり初歩的な質問になってしまいますが、
問題点をお教えください。宜しくお願いします。


SELECT MM.ID, MM.入学年度, MM.学年, MM.[クラス], MM.[クラス内番号],
MM.姓, MM.名, MM.[せい], MM.[めい],
MM.性別, MM.生年月日, MM.電話番号,
MM.市区町村, MM.町域,MM.番地, MM.号, MM.建物名, MM.郵便番号,
MM.地区・常会, MM.下校コース,
MM.父名, MM.父連絡先, MM.父連絡先電話番号,
MM.母名, MM.母連絡先, MM.母連絡先電話番号,
MM.緊急連絡先1, MM.緊急連絡先2, MM.緊急連絡先3,
S1.学年 AS 在学兄弟姉妹クラス1, S1.名 AS 在学兄弟姉妹名1,
S2.学年 AS 在学兄弟姉妹クラス2, S2.名 AS 在学兄弟姉妹名2,
S3.学年 AS 在学兄弟姉妹クラス3, S3.名 AS 在学兄弟姉妹名3,
MM.PTA役員, MM.備考, MM.除籍
FROM T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
ON S1.電話番号 = MM.電話番号  ←ここ
AND S1.学年 <> MM.学年     ←ここ
LEFT JOIN T_児童マスタ AS S2
ON S2.電話番号 = MM.電話番号
AND S2.学年 <> MM.学年
AND S2.学年 <> S1.学年
LEFT JOIN T_児童マスタ AS S3
ON S3.電話番号 = MM.電話番号
AND S3.学年 <> MM.学年
AND S3.学年 <> S1.学年
AND S3.学年 <> S2.学年
;

121NAME IS NULL2016/10/17(月) 20:30:12.67ID:3tZ2amHg
>>112 >>117 >>120
こんな感じにしてみましたが、
今度は「JOIN式はサポートされていません。」
と出てしまいます。

SELECT MM.ID, MM.入学年度, MM.学年, MM.[クラス], MM.[クラス内番号],
MM.姓, MM.名, MM.[せい], MM.[めい],
MM.性別, MM.生年月日, MM.電話番号,
MM.市区町村, MM.町域,MM.番地, MM.号, MM.建物名, MM.郵便番号,
MM.地区・常会, MM.下校コース,
MM.父名, MM.父連絡先, MM.父連絡先電話番号,
MM.母名, MM.母連絡先, MM.母連絡先電話番号,
MM.緊急連絡先1, MM.緊急連絡先2, MM.緊急連絡先3,
S1.学年 AS 在学兄弟姉妹クラス1, S1.名 AS 在学兄弟姉妹名1,
S2.学年 AS 在学兄弟姉妹クラス2, S2.名 AS 在学兄弟姉妹名2,
S3.学年 AS 在学兄弟姉妹クラス3, S3.名 AS 在学兄弟姉妹名3,
MM.PTA役員, MM.備考, MM.除籍
FROM
(
(
T_児童マスタ AS MM
LEFT JOIN T_児童マスタ AS S1
ON S1.電話番号 = MM.電話番号
AND S1.学年 <> MM.学年
)
LEFT JOIN T_児童マスタ AS S2
ON S2.電話番号 = MM.電話番号
AND S2.学年 <> MM.学年
AND S2.学年 <> S1.学年
)
LEFT JOIN T_児童マスタ AS S3
ON S3.電話番号 = MM.電話番号
AND S3.学年 <> MM.学年
AND S3.学年 <> S1.学年
AND S3.学年 <> S2.学年
;

122NAME IS NULL2016/10/18(火) 00:34:12.50ID:???
>>121
accessでは一つのクエリではできないみたい
サブクエリ作って3段重ねで繋げてみて

123NAME IS NULL2016/10/18(火) 03:32:30.90ID:???
重複行を見付けたら一行のみ残して他を削除したいのですが、
列名などを指定せずに、
DeleteDuplicateRow テーブル名
みたいなコマンドは無いのでしょうか?
キーは有りません。

124NAME IS NULL2016/10/18(火) 11:21:45.19ID:???
その残す1行の指定はどうやって決まる?
基本的にSELECTできるものは消せる

125NAME IS NULL2016/10/18(火) 11:44:05.07ID:???
>>124
重複しているので、どれを消しても良いと思うのですが。

126NAME IS NULL2016/10/18(火) 11:49:15.77ID:???
重複って言うのは、特定のフィールドだけじゃなく
(プライマリーキー以外)全てのフィールドが同じ値になるレコード
って意味で良いのかな?

127NAME IS NULL2016/10/18(火) 11:52:11.08ID:???
>>126
そうです。
プライマリキーも設定していません。

128NAME IS NULL2016/10/18(火) 12:29:42.88ID:???
>>127
a
a
a
これを一行残して消すとか無理だろ

129NAME IS NULL2016/10/18(火) 12:34:08.13ID:???
distinctで作り直す

130NAME IS NULL2016/10/18(火) 12:36:25.12ID:???
>>128
a

131NAME IS NULL2016/10/18(火) 12:36:59.34ID:???
>>128
sqlserver ならrownumber関数使えばできる

132NAME IS NULL2016/10/18(火) 12:39:09.00ID:???
>131
とりあえずMySQLです。SQL SERVERでもやりたいです。

133NAME IS NULL2016/10/18(火) 14:01:40.70ID:???
>>132
やはり他の同じ値になるレコードと区別するために
一意のカラムをつけないと削除は無理だと思います
あるいは、>>129さんのやり方でテーブル全体を作り直すのが簡単

134NAME IS NULL2016/10/18(火) 15:17:32.19ID:???
一意になるフィールドがあれば(例えばプライマリキーがあれば)、
プライマリキー以外のフィールドでグループ化し、
その上で、一番小さなプライマリキー値のリストを取得、
そのキーリスト以外の全レコードを削除、って感じでできます。

135NAME IS NULL2016/10/18(火) 17:24:15.67ID:???
RDBMSで全く同じレコードは扱うの大変だし意味ないので今後のためにキー追加するか
重複したものは登録できないようにしたほうが良さげ

136NAME IS NULL2016/10/19(水) 01:24:02.04ID:wlxzgloU
皆さん、いろいろアドバイスありがとうございました。
134さんの方式を試してみます。
重複する行を除去するような操作は普通はやらないのですか?

137NAME IS NULL2016/10/19(水) 06:20:22.91ID:???
だからその重複させるような事態そのものを発生させないようにしてるんだってば

138NAME IS NULL2016/10/19(水) 07:09:29.07ID:???
>>136
そのためのプライマリキーです

139NAME IS NULL2016/10/19(水) 07:23:29.08ID:???
重複データ消すのに、rownumber 関数が使えればorder byが使えるので、金額が大きいのとか最新のを残すとかできて便利なんだよな
http:/sotoattanito.hatenablog.com/entry/2015/10/20/230208

140NAME IS NULL2016/10/19(水) 18:19:03.82ID:???
>>121 >>122

かなり長文になりましたが、うまくいきました。
ありがとうございました。

141NAME IS NULL2016/10/20(木) 05:26:44.31ID:???
>>140
質問だけなら長文にならないだろ
後付けの条件あるからだろ

142NAME IS NULL2016/10/25(火) 01:39:06.04ID:???
以前見たDBのER図でずっと気になってるのがあるんだが
複合主キーでテーブル繋げていくやり方って普通なんかな

例えば

「個人」テーブルでは「氏名・電話番号・性別・年齢」を主キー →
繋がる「生徒」テーブルで「生徒番号」が追加 →
「塾」テーブルでは「塾番号」が追加 →
「教室」テーブルでは「教室番号」が追加

DB連携の案件(基幹系のDBに、WebとDBが一緒になった鯖からでリンクドサーバで合体)で、その教室テーブルの先に
「塾生がどこの塾で試験申し込んだか」を突っ込むテーブルこさえてどうこうするって奴だったんだが

みたいなのとでもいうか、SQLで書くと

select *
from school inner join
(select *
  from person inner join student on
  person.name = student.name and person.tel = student.tel and
  person.gender = student.gender and person.age = student.age) as selected_student on
  selected_student.name = school.name and selected_student.tel = school.tel ... ;ごめんもう無理

みたいな奴
細部があってるかどうかは覚えてないが、だいたいそういうSQLでないと仕様がない
ER図だったから泣きながらやった

書籍を見るととりあえずID振って縛りたいのにユニーク制約らしいんだが
実際だと複合主キー使っていくんだろうか?
正直DBの設計よくわかってない下請けのアホなんで、NE〇の方が正しいのかなあ、などと疑問が

1431422016/10/25(火) 01:43:49.46ID:gb+5Pezb
正確にはプログラマーですらない事務員 orz なんか釈然としないんだが、そういうものなのかなあ、と

144NAME IS NULL2016/10/25(火) 10:09:16.25ID:???
>>142
>「個人」テーブルでは「氏名・電話番号・性別・年齢」を主キー
そもそもこれが普通じゃない

> 正直DBの設計よくわかってない
本買って読め

145NAME IS NULL2016/10/25(火) 17:32:39.12ID:???
個人で主キーに年齢含むのは普通ないとは思うが
複合キーそのものは別に珍しい物でもない

まあ、ミドル層の都合で全部にID振ろうとか言う流れも無いわけではないけどな

146NAME IS NULL2016/10/25(火) 19:09:21.76ID:???
年齢は毎年変わるだろう
キーにしたいなら、生年月日の方

147NAME IS NULL2016/10/25(火) 20:35:20.47ID:???
実は死没者名簿だったとか

148NAME IS NULL2016/10/25(火) 21:14:22.45ID:???
死没者の集まる塾の教室か

149NAME IS NULL2016/10/26(水) 03:35:36.48ID:???
>>146
17からインクリメントしない声優なら知っている

150NAME IS NULL2016/10/26(水) 08:42:54.61ID:???
現在年齢とは言ってない気がする。

151NAME IS NULL2016/10/26(水) 10:55:39.68ID:???
人によって異なる解釈を受けるような定義名は避けた方がいい

152NAME IS NULL2016/10/26(水) 23:41:52.61ID:iZaFjONH
qiitaって無能のくせにタイトルで煽って
一読すれば書き手が思い込みの激しい初心者だってわかるんだけど
多数からコメントで間違い指摘されるとクソリプがwwwwwwwと煽ったり
せやから違う場合もあるって最後に書いてるやろ日本語読めんのかバカチョンwww
みたいな臭い奴が結構混じってるけどアレなんのためにやってんの?
誤解を招くタイトルでgoogle上位になるとqiitaから金もらえるの?

153NAME IS NULL2016/10/27(木) 00:01:04.98ID:zKThEwol
てすてす

154NAME IS NULL2016/10/28(金) 12:59:25.79ID:F5E1O/a0
お邪魔いたします。
ManegementStudioでストアドプロシージャをかけるようになりたいのですが、
家庭教師をしてくださる方いらっしゃいませんでしょうか?
お礼はご相談にて。
捨てアドをさらしますので、ボランティア精神にあふれる方お待ちしております。

rirarira_01@yahoo.co.jp

155NAME IS NULL2016/10/28(金) 13:40:24.99ID:7+o0ZZYT
>>154
お礼をするというのにボランティアとはどういうことなのか?

156NAME IS NULL2016/10/28(金) 13:43:36.79ID:7+o0ZZYT
>>154
Transact-SQLの本ならあるだろ。

昔からそんなに変わってない。

Management Studioがどうこうというはどういう意味?

1571542016/10/28(金) 14:13:08.47ID:F5E1O/a0
>>155
すみません、言葉足らずでした。
お礼はするんですが、なかなかお忙しい皆様が多いかと思いますので、
不勉強な私に時間を割いてくださるボランティア精神にあふれる方を
募集しておりました。

>>156
ありがとうございます。
早速購入してみます。

一次面接を合格した企業様がManegementStudioを使用しており
(SQLserber2014)ManegementStudioを使用して、
ストアドプロシージャをかけるようになりたいので、
ManegementStudioの操作性、ストアドプロシージャの知識、
両方が必要となる感じでございます。

現在ManegementStudio勉強環境にインストールして少しずつ勉強中ですが、
二次面接まで時間がないもので、どなたかに家庭教師していただけないかと思い、
失礼ながら書き込ませていただきました。

二次面接は来週早々なので、本が届くのが先か面接が先かという風になってし舞うかと思いまし手…。

どなたかお引き受けいただけませんでしょうか?

158NAME IS NULL2016/10/28(金) 14:29:29.64ID:???
綴りの間違いは恥ずかしいから直して
企業様wもそういうのチェックするよ

1591542016/10/28(金) 14:42:22.19ID:F5E1O/a0
>>158
失礼いたしました。
注意いたします。

160NAME IS NULL2016/10/28(金) 20:18:08.51ID:???
>>157
論理構成に難があるようだけど
二次は慎重にね。

161NAME IS NULL2016/10/31(月) 06:20:51.45ID:tmLBVYkg
SQLserber?serberって何?

162NAME IS NULL2016/10/31(月) 07:34:39.53ID:???
>>161
こんな簡単な間違いもくみ取れないバカは黙ってろw

163NAME IS NULL2016/10/31(月) 13:41:48.42ID:???
その環境での開発経験が必須スキルって面接なら不合格になるべき状況だし、
そうじゃないなら環境作ることができて、足し算するだけのストアドつくれりゃあとはどうとでもなると思うよ。

1641542016/11/04(金) 10:04:18.05ID:hFXlISxO
>>160
ありがとうございます。
ありのままのスキルをお話ししてきました。

>>163
ありがとうございます。
ストアドはできれば尚可の条件なので必須ではないのですが、
出来てくれると嬉しいな、ということでしたので勉強しておりますが、
環境作るところまでしか進んでおりません。

本日結果が出るのでお世話になったお礼に結果はご報告させていただきます。

165NAME IS NULL2016/11/07(月) 18:39:43.62ID:???
サブクエリを使う場合、サブクエリも範囲を絞ることで結果扱うデータ量が減って計算時間が短くなりますが、コードの可読性が悪くなります。
なにか良いアイデアはありませんか?

166NAME IS NULL2016/11/07(月) 19:12:51.29ID:???
サブクエリを使わない

167NAME IS NULL2016/11/07(月) 22:54:57.56ID:???
>>166
アホは書き込まないでくれる?

168NAME IS NULL2016/11/07(月) 22:59:55.73ID:GjWHsT4m
サブクエリエオ使ったぐらいで「コードの可読性が悪くなります。」なんてウスラバカはそしたらここに書き込む低能

169NAME IS NULL2016/11/07(月) 23:29:01.28ID:???
いっそプロシージャーにして見えなくしてしまったら?

170NAME IS NULL2016/11/08(火) 06:31:47.39ID:???
関数みたいなことは出来ないの?

171NAME IS NULL2016/11/08(火) 12:30:50.38ID:???
サブクリエリオ

172NAME IS NULL2016/12/14(水) 04:41:53.30ID:Z9OjftC8
よろしければ教えていただければと思います
変数名に使われるstrsplって何の略でしょうか?

どうにも気になってしまって

173NAME IS NULL2016/12/14(水) 08:17:11.10ID:???
string split かねぇ
ggrと strsql を案内されるな

174NAME IS NULL2016/12/14(水) 16:13:54.74ID:???
TBS

175NAME IS NULL2016/12/15(木) 17:35:03.27ID:???
ちょっと教えて欲しいんですけど。
select * で出てくるものについて、 レコードは並び順は不定ってのは知ってるんですが、カラムの順ってのはどうなってるんですか?
create tableで定義した順?
mysqlで自分で作ったテーブルで見るとなんか定義した順みたいだけど。。。

176NAME IS NULL2016/12/15(木) 17:44:44.64ID:???
まあこれは定義した順
でもまあそういうのが気になる状況では * あまり使わないかなあ

177NAME IS NULL2016/12/15(木) 19:01:53.50ID:???
>>176
ありがとです。自分で書いているのは * の時でも全部カラム名を書くようにはしているんですが。

178NAME IS NULL2016/12/16(金) 04:41:17.71ID:???
select * で列リストが定義順でない実装は見たことがないけど
それってちゃんとSQL仕様として決まってるのか

179NAME IS NULL2016/12/16(金) 08:01:01.01ID:???
>>178
知らんけど決まってないと * 表記自体使えなくね?
insert もカラム指定なくても使えるし。
information_schema 見れば分かるのかな。

180NAME IS NULL2016/12/17(土) 02:25:18.86ID:???
列リスト指定しないinsertは*とは書かないからなぁ
information_schemaで列の定義順がみれたしても、*の出力が定義順だという保証にはならないだろ

集合論として行の順番に意味がないなら、列の順番にも意味はないような気がするけど
列の順番はデータじゃなくて定義の一部だって言われたら意味があるような気もするが

181NAME IS NULL2016/12/17(土) 21:14:23.77ID:???
>>180
select * の順番は何かしら定義されていると思うよ。そうでないと何で select * と書くことが認められているのか分からない。

insert で列リストを省略した時も values に最初に書いた値がどの列に入るか分からなかったら、何で省略できるのさって話になる。

あと列リストは組とかタプルとかいうやつで集合じゃないでしょ。こっちは順序あるし同じ値が勝手に1つにまとめられたらチョー困る。

182NAME IS NULL2016/12/24(土) 02:14:16.89ID:???
table1
code  comment
-----  -------------
A001  コメント1です
A002  コメント2です
A005  コメント5です


table2
name  code1  code2  code3
-----  ------  ------  ------
名前8  A003  A002  A007
名前3  A004  A003  A001
名前2  A008  A001  A005

があり、例えば特定のキーワード

keyword = '1です'

に comment が部分一致するような code を含む table2 の行を取り出したいのです。
この例では、
名前3
名前2
の行です。

事前にtable1でキーワードに一致するものを見付けてそれを含むtable2の列を探せば良いと思うのですが、
SQL初心者なのでとっかかりが分かりません。
どういう命令でやるべきなのかヒントを教えて下さい。

183NAME IS NULL2016/12/24(土) 04:29:21.61ID:???
ヒントをってことなんだけど、table2からA001のコードを持つ行を取得することはできるんだろうか

184NAME IS NULL2016/12/24(土) 07:36:26.32ID:???
Like と In でできるだろうけど、遅そう。

185NAME IS NULL2016/12/24(土) 09:08:19.15ID:???
>>184
そのSQLを書いて頂けませんでしょうか?

186NAME IS NULL2016/12/24(土) 09:22:17.32ID:???
ヒントじゃねーじゃん

187NAME IS NULL2016/12/24(土) 10:30:13.30ID:???
わらた

188NAME IS NULL2016/12/24(土) 11:03:45.73ID:???
select t21.name
from table1 as t1
inner join table2 as t21 on t1.code = t21.code1
where t1.comment like '%1です%'
union
select t22.name
from table1 as t1
inner join table2 as t22 on t1.code = t22.code2
where t1.comment like '%1です%'
union
select
t23.name
from table1 as t1
inner join table2 as t23 on t1.code = t23.code3
where t1.comment like '%1です%'


多分↑で通るけど、もっといい模範解答求む

189NAME IS NULL2016/12/24(土) 12:12:04.02ID:???
ヒント like in exists

190NAME IS NULL2016/12/24(土) 13:00:19.00ID:???
>>182
ヒント where

191NAME IS NULL2016/12/24(土) 13:13:57.30ID:???
select name from table2 t2,
(select code from table1 where comment like '%1です%') t1
where
t2.code1 = t1.code or t2.code2 = t1.code or t2.code3 = t1.code;

192NAME IS NULL2016/12/24(土) 13:43:58.17ID:???
>>191
さんの方法で出来ました。
>>188
さんの方法も試したのですが、うまく行きませんでした。
私のやり方が悪いのかもしれません。
皆さんありがとうございました。助かりました。

193NAME IS NULL2016/12/24(土) 14:45:42.42ID:???
もう一つ教えて下さい。
>191さんの方式ですと出力が
name, code になりますが name のみにして distinct したいのですが
やり方が分かりません。
宜しくお願い致します。

194NAME IS NULL2016/12/24(土) 15:01:12.39ID:???
>>193
その通りやってますか?
select文に指定している name しか表示しないはずですけど

先頭行に distinct 加えれば重複している name は消えます。
select distinct name from table2 t2,

195NAME IS NULL2016/12/25(日) 01:34:13.09ID:G9kEUO4A
csvからphpmyadminでインポートしてるんだけど途中で止まってしまう
7000行くらいのデータが3000ちょいで切れて、その後継ぎ足しても10行程でまた切れる
あんまりsql関係ないけど原因わかる人いたら教えて
ちなみにxampp

196NAME IS NULL2016/12/25(日) 02:16:42.88ID:???
>>194
勘違いでした。
select * ...
としていました。
うまく行きました。
ちなみに>191のような
selectの中に(select ... )があるのは何ていう方式なのでしょうか?
ググルためのキーワードを教えて下さい。

197NAME IS NULL2016/12/25(日) 02:22:28.53ID:???
えっ、データベースの板に来るくらいなら、いくらなんでもサブクエリという名前くらい知っとけよ

198NAME IS NULL2016/12/25(日) 12:45:10.61ID:???
>>197
ありがとうございました。
サブクエリ、初めて耳にしました。難しいです。
一時テーブル(#テーブル)と言うやつとは違うんですか?

199NAME IS NULL2016/12/25(日) 13:04:03.09ID:???
一応ここは初心者スレって名前ついているし
ベテランから見たら知ってて当たり前と思う質問でも
優しく回答してやれよ

200NAME IS NULL2016/12/25(日) 13:37:54.49ID:GwZs/74I
>>195

php文字化けとかめんどくさいから
.Netとかでそういうのやってる

201NAME IS NULL2016/12/25(日) 23:40:17.47ID:G9kEUO4A
195だが
エラー行から改めて入れて、エラー行から改めて入れて
何回かやったら全部入ったわ
原因はわからん
なんやら文字コード的なエラーメッセージだった気がする

202NAME IS NULL2016/12/26(月) 11:14:14.73ID:fjjmXLRb

203NAME IS NULL2016/12/26(月) 17:20:52.17ID:5PC6tP3J
DBに突っ込んだデータに対してちょっと込み入った操作をしたいとき、
例えば、「ORDER BY id ASC した状態で、前の行と比較して DATA の値が2以上離れてる行が3行以上続く」ケースを抜き出したいとき、
一般的に (個人的にでもいいです) どんなやり方が最も望ましいんでしょうか?

全行ガサッと取ってきてプログラム側でせこせこ判定していく以外思いつけなくて、これでいいのか不安です

204NAME IS NULL2016/12/26(月) 18:47:08.33ID:???
>>203
SQLや処理系ごとの拡張で頑張るとか
ストアドで処理するとか

それだけではどの方法が最善かはわからん

205NAME IS NULL2016/12/26(月) 18:52:31.92ID:???
>>203
実現できる方法でやる。
結果が問題なければ
そもそも何を不安に思う?
それは何故よ?

206NAME IS NULL2016/12/26(月) 19:34:01.38ID:???
>>203
window関数

207NAME IS NULL2016/12/26(月) 20:24:10.05ID:???
日本終了

ーーーーーーーーーーーーーーーーー
 22日からの大雪で航空機が相次いで欠航となった北海道の新千歳空港で、24日夜、100人あまりの中国人が抗議し激しく詰め寄る騒ぎがあった。

208NAME IS NULL2016/12/26(月) 22:19:59.12ID:???
>>203
window関数のlagを使った例

select
id
,data
from
(
select
id
,data
,data - lag(data, 1) over(order by id) as delta1
,lag(data, 1) over(order by id) - lag(data, 2) over(order by id) as delta2
from
tab1
)
where
abs(delta1) >= 2
and abs(delta2) >= 2
;

209NAME IS NULL2016/12/26(月) 22:22:29.01ID:???
select
id
,data
from
(
select
id
,data
,data - lag(data, 1) over(order by id) as delta1
,lag(data, 1) over(order by id) - lag(data, 2) over(order by id) as delta2
from
tab1
)
where
abs(delta1) >= 2
and abs(delta2) >= 2
;

210NAME IS NULL2017/01/02(月) 16:54:20.40ID:???
教えて下さい。
カラムが
code,:index
name:名前
date_from:始めの日付 2017/1/1
date_to:終わりの日付 2017/1/3
days:差分 2
というレコードが1つあった場合に

2017/1/1 index 名前
2017/1/2 index 名前
2017/1/3 index 名前

という風に出力するSQL文を教えて下さい。
ちなみに postgresql です。

211NAME IS NULL2017/01/02(月) 17:15:10.65ID:???
>days:差分 2

このカラムの意味が分からない

212NAME IS NULL2017/01/02(月) 20:22:33.09ID:???
質問させていただきます。

2017-01-01 01:00:00
2017-01-02 01:00:00
2017-01-03 01:00:00
2017-01-04 01:00:00
といったdatetime型(Y-m-d H:i:s)のレコードdtimeを持つt1テーブルと
2017-01-02
2017-01-03
といったdate型(Y-m-d)のレコードdateを持つt2テーブルがあります。

t1テーブルのdtimeからt2テーブルのdateと日付(Y-m-d)部分が一致しないレコードを取り出すにはどのような記述をすれば良いでしょうか
この例の場合はdateにある2,3日のレコードを省いて1,4日のレコードのみを取り出したいです。

213NAME IS NULL2017/01/02(月) 20:37:55.02ID:???
>>210
365行のテンポラリテーブルを用意してうんぬん

214NAME IS NULL2017/01/02(月) 20:39:30.91ID:???
>>212
標準SQLの範囲じゃないような気もするけど、
DateTime型からDateだけ取り出す関数があるだろうからそれを使う。

215NAME IS NULL2017/01/02(月) 21:38:43.27ID:???
>>210
Select date_from + g.gs as 日付
, code1,name
From Test1 t
,(
  select generate_series(0,10) as gs
) g
Where g.gs <= t.days;


でも>>211が言うようにdaysは演算で処理すべきだべ

216NAME IS NULL2017/01/02(月) 21:45:28.71ID:???
>>212
mysql と仮定して
select dtime from t1 where
date(dtime) not in (select date from t2);

217NAME IS NULL2017/01/03(火) 09:50:33.91ID:???
>>213,215
できました。ありがとうございました。

>>211
テーブル設計自体はすでにあったものでして…

218NAME IS NULL2017/01/03(火) 10:39:07.59ID:???
>>214
>>216
できました、ありがとうございました。
datetimeをdateに置き換える簡単な方法があったんですね。

219NAME IS NULL2017/01/14(土) 10:16:41.35ID:???
phpmyadminでデータベースを作成しようと思ったのですがSQLタブのテキストエリアにコピペができません(右クリックしてもコピー、切り取り、貼り付けがでない)
コピペをするのに設定などがあるのでしょうか?

220NAME IS NULL2017/01/14(土) 10:36:37.05ID:NxfK13Qk
MySQLの質問させてください
データ更新するとき、phpmyadminのインポートで更新するには、sqlのファイルはどのように書けばいいのでしょうか?

新規作成するときは、INSERT文でこんな風にしました
上書きするときの書き方があれば教えてください
INSERT INTO `sample_table` (`abc_id`, `efg_id`, `meta_key`, `meta_value`) VALUES
(202, 4002, '_thumbnail_id', '4001'),
(212, 4012, '_thumbnail_id', '4011'),
(222, 4022, '_thumbnail_id', '4021');

221NAME IS NULL2017/01/14(土) 12:04:14.38ID:???
外部結合クエリで
・A LEFT JOIN B
・B RIGHT JOIN A

これらは全く同じものではなく、結果が異なる場合があるので
外部結合は左のみ使うべしってどこかのサイトで見た記憶がある
どなたかそのカラクリを知っていたら教えて

222NAME IS NULL2017/01/14(土) 18:06:07.65ID:???
>>221
俺の中ではそんな事ないから答えられない

223名無しさん2017/01/14(土) 18:09:24.89ID:/fuRSrl8
無料誹謗中傷対策のブッダワークス
http://www.buddha-works.net

224NAME IS NULL2017/01/14(土) 20:16:43.44ID:???
>>221
見たサイトの運営者に聞け

225NAME IS NULL2017/01/14(土) 21:05:14.36ID:???
>>220

insertでするなら on duplicate key update
又は replaceでというのも

それぞれについて説明をちゃんと読んでから使ってね

226NAME IS NULL2017/01/15(日) 22:54:38.21ID:???
>>225
ありがとうございます!
確認して使ってみます

227NAME IS NULL2017/01/16(月) 18:03:02.75ID:tiD/G6HX

228NAME IS NULL2017/01/19(木) 06:50:34.21ID:???
DISTINCT がキーボードで打ちづらいです

229NAME IS NULL2017/01/19(木) 12:41:28.22ID:???
そんなあなたにオススメDvorak配列キーボード

230NAME IS NULL2017/01/19(木) 18:01:27.09ID:???
ユーザー登録ありのシステムを組むにあたってユーザーが2種類いる場合
テーブルは分けるべきでしょうか?

例えば、Amazon マーケットプレイスのような
販売ユーザーと購入ユーザーの2種類のユーザーが存在する
このような場合のテーブル設計についてご教示いただけると有り難いです。

スレ違いでしたらすいません。

231NAME IS NULL2017/01/19(木) 18:18:15.03ID:???
>>230
DB設計を語るスレ 9

232NAME IS NULL2017/01/19(木) 18:56:48.57ID:???
>>231
スレ違いでしたねすいません
スレを教えていただきありがとうございます。

233NAME IS NULL2017/01/24(火) 21:51:15.94ID:oe0NRhg4
何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信

仲間という人間に対する盗聴盗撮生ネット配信の会

しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる

そんなことが今この国では行われています

仄めかしの隠語は
猫 穴 水 仲間 

234NAME IS NULL2017/01/26(木) 14:18:16.41ID:73KKygNS

235NAME IS NULL2017/01/28(土) 12:44:07.31ID:T1kC9Cn+

236NAME IS NULL2017/01/31(火) 13:26:45.74ID:???
selectで取得するカラムにAUTO_INCREMENTを指定する方法はありませんか

237NAME IS NULL2017/01/31(火) 17:11:46.30ID:???
>>236
取得したレコードに連番を付けたいなら方法はある
もしそうなら、これ以降は自分が使っているデータベーススレに移動しろ

238NAME IS NULL2017/02/01(水) 19:11:49.33ID:???
>>236
開始番号はどうやって決めるの?

239NAME IS NULL2017/02/02(木) 07:10:22.66ID:???
普通は1からだろ100からとか別でも足せばいい

240NAME IS NULL2017/02/06(月) 16:33:18.22ID:???
>>237
どのDBでも大差ないだろ・・・
と思って実験したらmysqlとoracleとpostgresとsqliteで全部やり方違うのな
ちょっと面白かった

241NAME IS NULL2017/02/08(水) 00:06:58.96ID:wCjGsKbG
>>238
フェッチした順に普通は1から振られる。

242NAME IS NULL2017/02/08(水) 23:19:57.51ID:???
質問させて頂きます

社員IDひとつに対して10行の権限管理レコードが必要です
これを500人分ひとつのテーブルに追加します

レコード例

社員ID, 画面ID, 閲覧, 編集, 削除, …
00000, W001, true, false, false, …
00000, W002, true, true, true, …

00000, W010, false, false, false, …

権限管理10行のテンプレと追加したい社員IDのリストはあります
SQL Management StudioかAccessを用いて作業したいのですが、この道具をどのように活かしてクエリを書けばいいのか思い浮かばなかったので質問させて頂きました
アドバイスよろしくお願いします

243NAME IS NULL2017/02/09(木) 01:15:59.62ID:I+KHRssK
>>242
絞り込み条件が社員IDと画面IDなんだろ?
何がやりたいのか書いてくれ。

244NAME IS NULL2017/02/09(木) 07:12:02.44ID:???
>>242
手作業多めでいいなら
1 適当なエディタでカンマをタブに変換
2 excelを開いてシート全体を文字列に設定
3 1をシートに貼り付け
4 テーブルとおなじ列に加工
5 accessのテーブルに貼り付け
まあinsert文に加工して実行でもいいかもね

245NAME IS NULL2017/02/09(木) 09:16:23.10ID:I+KHRssK
>>244
どう読んだらCSVファイルの取り込みと解釈できるのか?

246NAME IS NULL2017/02/09(木) 12:27:52.21ID:???
>>243-245
レスありがとうございます

今回は>>244さんのアドバイスを元に
社員IDと画面IDのテンプレを二重ループで合体させてテキストに出力した5000行を
テキストエディタとExcelで整形してAccessに貼り付けて追加しました

247NAME IS NULL2017/02/09(木) 12:36:20.74ID:???
馬鹿がよく分からん絡み方してるw

248NAME IS NULL2017/02/09(木) 18:13:26.82ID:???
言語の設定ってインストールするときに指定する仕様なんですか?
何も指定しないと勝手にユニコードになると思っていたのですが

249NAME IS NULL2017/02/09(木) 18:16:49.08ID:???
>>248
自分が使っているデータベーススレに移動して、疑問に思っていることをもっと具体的に聞け

250NAME IS NULL2017/02/09(木) 18:30:19.23ID:???
>>249
移動します
SQLServer2012なんだけど
俺もよくわかってない

251NAME IS NULL2017/02/09(木) 22:23:19.19ID:???
>>242
insert ... select ... from 権限管理10行のテンプレ (innnerとかcrossとか)join 追加したい社員IDのリスト
で行けるんじゃないのか
もうエクセル整形でやったのならそれでいいけど

252NAME IS NULL2017/02/09(木) 22:32:25.23ID:???
何をやろうとしているかは大体想像できるんだが、
こういう仕組みを実装する時って、
個人単位で権限を操作するのかな?
新しい機能が追加される度に、全てのユーザーに
権限の可否を設定しないといけなくならないか?

253NAME IS NULL2017/02/10(金) 00:54:29.88ID:UY3eO74e
>>252
ロール

254NAME IS NULL2017/02/10(金) 03:00:09.46ID:???
>>251
自分も「これは直積(cross join)でやるかな」と思ったんだけど
直積って実用上はあんまり出てこないんだよな
(SQLの考え方としてはとても重要だと思うのだけど)
それを初心者スレで勧めていいものかと躊躇ってしまった

255NAME IS NULL2017/02/10(金) 06:43:28.54ID:???
244書いたの俺だけどリストって書いてあったから
深く考えずにテキストファイルかなんかだと思ったわ
騒がせてすまんね

256NAME IS NULL2017/02/10(金) 08:29:16.23ID:???
>>242
要件にもよるかも知らんが事前に全部追加せんでいい方向もある。
ユーザーテーブルとの乖離にどう対処するか面倒だし。
ユーザーテーブルがなかったら、うん、まぁ、うん。

257NAME IS NULL2017/02/15(水) 17:17:09.16ID:???
超初心者です。
ユーザーごとに掲示板を作る場合
例えば
boardsというテーブルを作って、すべての掲示板の書き込みをそこで管理するのがいいのか、
それともユーザーごとに001boardsみたいにテーブルを作って管理するのがいいのでしょうか?
一元管理の場合、書き込み数が多くなった場合に処理が遅くなるなどの、問題点はないでしょうか?

アドバイスをよろしくおねがいします<(_ _)>

258NAME IS NULL2017/02/15(水) 17:33:15.31ID:IlwZKpGL
>>257
ユーザーごとにテーブルを作るのは管理がたいへんだろ。性能の問題はかなりのデータ量でないかぎりは問題ないと思っていい。

259NAME IS NULL2017/02/15(水) 17:53:19.35ID:???
>>258
一元管理で設計してみたいと思います。
アドバイスありがとうございました。

260NAME IS NULL2017/02/15(水) 23:57:28.11ID:???
>>257
ユーザーごとだろ普通

261NAME IS NULL2017/02/16(木) 01:27:11.83ID:???
>>260
ユーザーごとだとして、
例えばテーブル(ユーザー)数が1万を超えても問題ないでしょうか?

この場合レンタルサーバーなのでsqlite3を使うことになると思います
(Mysqlはテーブル数の制限がある)

262NAME IS NULL2017/02/16(木) 01:33:57.13ID:???
>>260
アホか

263NAME IS NULL2017/02/16(木) 01:39:58.29ID:???
レンタルサーバー運営、やろうってこと?

264NAME IS NULL2017/02/16(木) 01:45:38.81ID:???
レンタルサーバーでサイトを作るだけです
そこでユーザー登録をして、ユーザーごとに専用の掲示板を建てるイメージです

265NAME IS NULL2017/02/16(木) 01:51:19.83ID:???
その程度なら一つのテーブルで良いと思うけど
不具合あると、隣のユーザーの掲示板が覗けるとかあるかもね

266NAME IS NULL2017/02/16(木) 02:04:14.76ID:???
>>265
アドバイスありがとうございます。

267NAME IS NULL2017/02/16(木) 07:12:43.93ID:???
ユーザー退会したらデータどうすんの?
破棄するならテーブル別がらくじゃね
同一テーブルだと日次で深夜にでも削除実行するんか

268NAME IS NULL2017/02/16(木) 07:20:00.53ID:???
また削除フラグの話にw

269NAME IS NULL2017/02/16(木) 07:42:42.89ID:???
盛り上ってまいりましたw

270NAME IS NULL2017/02/16(木) 07:47:37.22ID:???
>>261
なおさら別テーブルだね

271NAME IS NULL2017/02/16(木) 12:00:10.67ID:???
>>267
>>270
頭湧いてんな

272NAME IS NULL2017/02/16(木) 12:05:27.40ID:???
>>271
sqliteで複数ユーザーが
同一テーブルにアクセス、

まだわからないかなw

273NAME IS NULL2017/02/16(木) 15:04:33.47ID:???
>>261
> (Mysqlはテーブル数の制限がある)
どこ情報かしらないが、普通は制限はないよ

また、仮にsqlite3を使うとしたとき、重大な問題が別に発生する
それは、誰かが書き込みをするとファイルがロックするということ
要件的にそれで大丈夫かどうかは熟考する必要がある

逆にMySQLを使う場合でもユーザ単位でテーブルを分割する場合もある(ユーザIDによる水平分割)
ソシャゲ界隈では良くあること
これも、要件と相談してからだな

2742732017/02/16(木) 15:10:47.58ID:???
あ、テーブル数の制限って、レンタルサーバだからなのか
なるほどねー

275NAME IS NULL2017/02/16(木) 16:32:37.42ID:???
まあこのまま続けてたら半年後にはなんでこんなバカな質問したんだろうと思うこと請け合い

276NAME IS NULL2017/02/16(木) 16:51:32.11ID:???
ユーザ数が1万人を超えるようなサービスを、MySQLのテーブル数が制限されるようなゴミレンサバで実行するなんて・・・

すごーい(別の意味で)

277NAME IS NULL2017/02/16(木) 17:08:18.22ID:???
金取るシステムとは思えん
無料サービスだろ
エラーが発生してもデータが壊れても、すいませんテヘで済むような奴

278NAME IS NULL2017/02/16(木) 21:27:52.23ID:???
>>276
例えばな
たーとーえーばーww

279NAME IS NULL2017/02/16(木) 21:34:17.50ID:???
>>278
君がいるだーけーでー

280NAME IS NULL2017/02/16(木) 22:26:13.47ID:???
盛り下がってまいりました、、、

281NAME IS NULL2017/02/16(木) 22:44:43.41ID:???
会員数1万人のWebベースのサービスやりたいんだったら、SQLがどうのではなく、
それなりの通信環境、ハードウエア、システム要員を用意しないと駄目だろう

282NAME IS NULL2017/02/17(金) 07:10:18.37ID:???
そもそもこんなところで質問するようなやつなんだから
訳分からず質問してるだけだろ
察して遊んでやれよ

283NAME IS NULL2017/02/17(金) 09:29:17.57ID:???

284NAME IS NULL2017/02/17(金) 09:51:42.36ID:???
>例えばテーブル(ユーザー)数が1万を超えても問題ないでしょうか?

要求仕様じゃないかな?

285NAME IS NULL2017/02/17(金) 17:25:57.52ID:???
テーブル名をフラグに使ったことならあるよ
テーブルがオープンできない=それは未使用

当時はみな気がくるっていた

286NAME IS NULL2017/02/23(木) 21:19:47.86ID:???
これからSQL勉強する者です
独学で本を参考にするつもりですが、まずSQLでデータベースから抽出できます、といえる程度になるにはどのくらいの期間見込めばいいでしょうか?

287NAME IS NULL2017/02/23(木) 21:40:13.23ID:???
30分

288NAME IS NULL2017/02/23(木) 21:40:25.72ID:???
抽出だけなら、5分も掛からないんじゃないか?

289NAME IS NULL2017/02/23(木) 22:36:11.91ID:???
本を買いにいく時間がある

290NAME IS NULL2017/02/23(木) 22:43:24.60ID:???
いや真面目に・・3ヶ月くらいだろうか?ととりあえず予測を立てたのですが・・
実務でできないのが痛いところなのですが

291NAME IS NULL2017/02/23(木) 22:47:49.28ID:???
何をインストールするのか知らんけど、つまずく奴はRDBを自分のPCにインストールするとこからつまずくからなw
あれこれやる前から考えてもしょーがない。自分でコマンドをどんどん入れてみるこったよw

292NAME IS NULL2017/02/23(木) 22:50:45.60ID:???
>>286
七分

293NAME IS NULL2017/02/23(木) 22:52:18.28ID:???
>>290
そこ期間の内訳出してみ

294NAME IS NULL2017/02/23(木) 22:54:07.87ID:???
君がPCを所有していて、OSが入っていて、ネットに接続できているなら
適当なSQLをダウンロードしてインストールすれば
勉強は今すぐにでも開始できそうなんだが

295NAME IS NULL2017/02/23(木) 22:55:54.53ID:???
>>290
あんたの才能とやる気次第としか言えない
SQLはかなり癖のある言語だから、ダメな人は1分で本を閉じて終わり

296NAME IS NULL2017/02/23(木) 22:58:52.89ID:???
>>291
MySQL
能書きいうよりまずやることは経験済み納得だが、今後の方向づけを検討しての質問だった

297NAME IS NULL2017/02/23(木) 23:01:31.26ID:???
>>294
そうなんですよ
いまうちmacしかも壊れた・・(へぼくてすまん)
つうことでうちは会社があまりダウンロードとかうるさくないのですが、
会社のwinマシンに落とすことを目論み中ですが、会社PCに個人で落としてる人いますか?

298NAME IS NULL2017/02/23(木) 23:27:33.63ID:???
それはここで聞かずに、上司に聞くべきことだろ
ちゃんと理由を説明して、何をインストールしたいか説明し
それが仕事で必要なことだとなればインストール可能じゃないのかな?

君の会社での役割が管理者で、PCの設定に関して権限があるなら、聞かなくてもいいだろうけど

299NAME IS NULL2017/02/23(木) 23:34:32.60ID:???
やはりこっそりはまずいか…
実務じゃ必要ないって言われるのが関の山だ
だってうちの上司ろくに関数もわからないお馬鹿…なんでもマッチョに力技が得意技なもんで
なくせに色々要求してくる
んでそんなとこを抜け出すためのSQL習得なのです
Winマシンを大人しく速攻買おう
つうことで安いの探すとこから始めます
Dellあたりかなー できたらVAIO

300NAME IS NULL2017/02/24(金) 05:16:28.19ID:???
けっこうまじめに質問したんだけどやっぱ2ちゃんだな
冷やかしだけで答えてはもらえないか
ま、いいやとっととやるから

301NAME IS NULL2017/02/24(金) 07:04:10.04ID:???
>>300
ガンバレ

302NAME IS NULL2017/02/24(金) 08:44:57.02ID:???
真面目に回答しても冷やかしとしか受け取って貰えない w

303NAME IS NULL2017/02/24(金) 09:11:23.71ID:???
>>300
だいぶ抽象的で、何に役立つのか
分かりにくい質問だったことは
覚えておいて。

304NAME IS NULL2017/02/24(金) 10:00:29.90ID:???
DB板は、おふざけな質問でない限りマトモに答えてくれるよ

305NAME IS NULL2017/02/24(金) 11:03:39.31ID:???
SQLでデータを抽出する基本だけなら、みんな言うように1日でできるぞ
select文流すだけだからな

問題は、SQLを発行する方法とそのための環境の構築が難しいだけで

306NAME IS NULL2017/02/24(金) 12:02:44.51ID:???
>>300
また聞きにおいで

307NAME IS NULL2017/02/24(金) 18:58:00.39ID:U+kKk5Yi
>>305
基本ってなんだよ?

308NAME IS NULL2017/02/24(金) 20:33:06.13ID:???
>>307
select hello from world

309NAME IS NULL2017/02/24(金) 20:52:10.93ID:dYCyIIDS
まず初心者には結合が1日で理解できるかどうか。

310NAME IS NULL2017/02/24(金) 21:09:40.60ID:???
批判も応援する言葉もどちらもありがとう

290で3ヶ月と言ったのは、会社のちょっとデータ詳しいちょー意地悪なおっさん(でも非エンジニアで営業部のデータ取りまとめしてる程度)に
SQL独学で3ヶ月でてきて当たり前、オレは3ヶ月で覚えた、と言われて

もちろんそれはマウントしたいだけだからどの辺りまでかなんて言わないしこっちも聞かない

だから漠然とした答えに困るような素人くさい愚問なアホな質問とわかっていたんだけど、
とりあえずの導入としてはどのくらい見ればいいかな、と知りたくなってしまって

だから答えてくれた時間とかはその通りでもあるし、その限りでないこともわかってる

そのおっさんは独学で覚えたのが自慢で、でもそのおっさんがExcelで作ったものはちょっとした普通の作業が汚い

SEの人と一緒に働いたとき当たり前のことをちゃん綺麗に整えて作るからとても感心した

そんななんやかやがあり
スレ違いになり申し訳ない

Hello world

311NAME IS NULL2017/02/24(金) 23:02:19.13ID:???
本日、postgresqlをDB2に替えたらwebアプリが動かなくなったわ。
もう逃げたい。俺のせいじゃないけど。

312NAME IS NULL2017/02/25(土) 00:22:52.30ID:???
テストもせずにいきなり入れ替えたのかよ
そんなことができる現場、逆にすごい楽しそうだな

313NAME IS NULL2017/02/25(土) 20:49:52.03ID:???
SQL言語ってオラクルとかMysqlとか、MSで違うんですか?

314NAME IS NULL2017/02/25(土) 20:58:21.27ID:???
基本は同じ
それぞれ拡張している部分がある

315NAME IS NULL2017/02/25(土) 21:38:20.64ID:???
要するに、違う。

316NAME IS NULL2017/02/25(土) 22:09:37.73ID:???
SQLとMySQLって違うの?
でSQLがあってのOracle?

317NAME IS NULL2017/02/25(土) 22:27:30.71ID:???
ここでそんな質問する前に本の1冊でも読めよ

318NAME IS NULL2017/02/25(土) 23:02:52.27ID:???
>>316
単語それぞれでググってみればわかる
MySQLとOracleはデータベースソフトウェア製品の名前
SQLはそれらで共通に使われている(ただし方言あり)言語の名前

319NAME IS NULL2017/02/25(土) 23:11:02.85ID:???
そんくらいわかってるわ

320NAME IS NULL2017/02/25(土) 23:40:52.73ID:???
誰が質問者か分からなくなってきた

質問者はsageをせずに書き込むと良いですよ
そうすれば、ID表示でますから

321NAME IS NULL2017/02/26(日) 14:45:56.38ID:LVGuIyS4
SQL ServerとMySQLを単にSQLと略す馬鹿がいるので混乱する。

322NAME IS NULL2017/02/26(日) 14:52:17.07ID:???
>>321
それだ

323NAME IS NULL2017/02/26(日) 16:08:09.91ID:???
初めてダウンロード
PostegerSQLとMySQLどちらがいいだろうか?

324NAME IS NULL2017/02/26(日) 16:09:23.95ID:???
両方入れとけ
管理方法が違うのでコンソールまたはツールで馴染んだほう残せばいい

325NAME IS NULL2017/02/26(日) 16:21:31.02ID:???
ツール使うなら、両者ともそれほど違いはなかったと思う
コンソールだと、違いがあるから慣れるまで時間掛かりそう

326NAME IS NULL2017/02/26(日) 16:30:27.98ID:???
>>324
おけ
両方入れる

>>325
んーよくわからず、まだ先のことだろうから後で考えるわ

327NAME IS NULL2017/02/26(日) 16:31:06.94ID:???
>>324,325
ありがとです

328NAME IS NULL2017/02/28(火) 12:15:15.76ID:???
SQLを触ったことないんですが、クエリ文を覚えるためにはどうすればいいでしょうか?
C#という言語でLINQというものは触ったことあるのでまったくわからないとは思わないのですが・・・

329NAME IS NULL2017/02/28(火) 13:53:34.15ID:???
>>328
普通の人は、本買って読むんだけど・・・

330NAME IS NULL2017/02/28(火) 14:01:20.31ID:???
とりあえず環境を用意する

331NAME IS NULL2017/02/28(火) 18:25:09.54ID:???
SQL試す環境つくればいいよ、上にあるMySQLやPostgreSQLをローカルに入れて
PgAdmin3とかMySQL Workbenchとか動かしてみては
SQLite3でも試せるけどね

332NAME IS NULL2017/02/28(火) 19:39:01.87ID:jzPtOTcH
>>328
SQLとクエリと言ってる時点でおかしい。たぶんSQL Serverが前提なんだろうな。

333NAME IS NULL2017/02/28(火) 20:04:26.66ID:yUIIsXa+
sql serverが前提だとなんか困るのかな

334NAME IS NULL2017/02/28(火) 21:21:44.81ID:???
職場でAccessって使う人少ないですか?

335NAME IS NULL2017/02/28(火) 21:58:28.42ID:???
>>334
質問の意図がわからない
それをここで俺らに聞いて何をしようというのだ?

336NAME IS NULL2017/02/28(火) 22:07:13.89ID:???
>>334
えっ!?!?
いやいや普通もれなく全員清掃係りの人も警備の人も使うでしょ
おたく使ってないの???

337NAME IS NULL2017/02/28(火) 23:17:08.33ID:???
使ったt事あるよ。で、それがどうした。

338NAME IS NULL2017/03/01(水) 02:02:24.28ID:???
accessは帳票必要なシステムでは楽チンだけど
帳票なかったらphpのほうが楽チンだな

339NAME IS NULL2017/03/01(水) 07:11:22.21ID:???
>>328
業務で使うsqlのパターン は限られてるから
初心者向けの本を買えばいいと思うよ

340NAME IS NULL2017/03/01(水) 12:20:17.22ID:???
業務で使わないsqlは多種多様なのか?違いが分からん

341NAME IS NULL2017/03/01(水) 12:40:46.33ID:???
>>340
そうだよ
違うよ

342NAME IS NULL2017/03/01(水) 15:57:14.00ID:???
DB自体の操作やユーザー管理も含めて言っているのじゃないかな?

343NAME IS NULL2017/03/01(水) 18:47:02.65ID:???
業務で使う時は特殊な記述を避けるというだけの話かと

344NAME IS NULL2017/03/01(水) 20:05:39.23ID:???
sqlに特殊な記述なんてあったか?

345NAME IS NULL2017/03/02(木) 03:01:35.02ID:???
顧客id 顧客名
取引id 顧客id 取引額 取引日

こんな2つの顧客テーブルと取引テーブルがあるとします。
取引テーブルの取引日と顧客idはUNIQUEな関係です(同じ日の再度の取引はない)。
ある顧客との、ある期間中どれだけ取引があったか(回数と総額)の計算をしたいです。

顧客テーブル
  顧客id INT PK
  顧客名 VARCHAR NN

取引テーブル
  取引id INT PK
  顧客id INT FK
  取引額 INT NN
  取引日 DATE NN
  UNIQUE (顧客id, 取引日)

インデックスを貼るべきところとかよくわからないのですが、テーブルはこんな感じでいいのでしょうか?
検索(WHERE)に取引日を使うので、取引日にもインデックス貼ったほうがいいのでしょうか?
あと取引日のDATE型なんですが、UNIXTIMEのようにある日からの起算のほうが検索早そうなのでINTにしたほうがいいですか?

346NAME IS NULL2017/03/02(木) 06:14:34.18ID:???
>取引日にもインデックス貼ったほうがいいのでしょうか?

それで検索をよくするんだったら良いんじゃないの。自分は株価テーブル作っててPKが(コード、出来高年月日)なんだけど、
出来高年月日での検索もするんでその出来高年月日にindex貼ったら実行スピードめちゃ上がったし

347NAME IS NULL2017/03/02(木) 14:18:17.25ID:???
>>345
DATE型使っても、内部表現はバイナリー値だから実行スピードは変わらないだろう

3483452017/03/03(金) 05:48:15.55ID:???
>>346-347
レスありがとうございます。
実例での効果まであげていただいて感謝です。
DATA型でも検索速度は変わらないとのことなので、
このままでCREATEしたいと思います。

349NAME IS NULL2017/03/03(金) 09:25:17.22ID:???
>>348
なぜそう結論できる?

350NAME IS NULL2017/03/03(金) 12:26:59.01ID:???
当たり屋かよw

351NAME IS NULL2017/03/03(金) 17:39:50.51ID:???
(DATA型は)このままでってことだろう

352NAME IS NULL2017/03/04(土) 06:08:32.02ID:GZ+afmPr
RDBMSの内部構造を意識するのが初心者なのかと。

353NAME IS NULL2017/03/04(土) 07:48:26.00ID:???
まあプログラムやってればその辺はちょっとは検討つくでしょう
JavaScriptみたいのしかやったことないとかだとDBいじる機会もなかなかないだろうし
ところでDATE型とINT型の検索速度の比較って
ググって見るとINT型のほうが早いみたいだけど

354NAME IS NULL2017/03/04(土) 08:31:07.04ID:???
郵便番号と地名が書いてるデータベースを作るとして
0から始まる北海道はとりあえず無視するとして
7桁のユニークな数字になるわけですが
そういう番号があっても主キーにせずオートインクリメントなサロゲートキーを作るべきですか?

355NAME IS NULL2017/03/04(土) 08:46:24.32ID:???
郵便番号は郵便局が自分たちの業務をやりやすくするために振っただけのものであって
地名との一対一の紐付けを保証するものではないし
郵便局の都合で変更されることもある
そのへんを理解した上で使うなら別にいいんじゃない?

356NAME IS NULL2017/03/04(土) 09:03:59.24ID:???
「郵便番号の」サロゲートだとしたらそのへんは何も変わらんが。

357NAME IS NULL2017/03/04(土) 09:23:42.43ID:???
>>353
> ところでDATE型とINT型の検索速度の比較って
> ググって見るとINT型のほうが早いみたいだけど

そらそうよ。プログラムやってれば見当つくはず。

>>354
困ったことに、郵便番号と地名は1:nです

358NAME IS NULL2017/03/04(土) 09:32:54.15ID:???
データベースは当然、1:n関係を表現できるだろうに。何を困ることがある?

359NAME IS NULL2017/03/04(土) 09:34:36.06ID:???
>>347は嘘やったんやな

360NAME IS NULL2017/03/04(土) 10:37:00.43ID:???
郵便番号はちょっと例えが悪かったかな・・・
例えばクレジットカードとか連番だと都合が悪いけど一意な番号
それでもサロゲートは必要?

361NAME IS NULL2017/03/04(土) 10:49:39.48ID:???
そういう質問している人には必要ない。

362NAME IS NULL2017/03/04(土) 11:01:27.93ID:???
だってとりあえずauto incrementを主キーにしとけって書籍に書いてるんだもの

363NAME IS NULL2017/03/04(土) 11:13:05.17ID:???
晒せ。

364NAME IS NULL2017/03/04(土) 11:36:56.78ID:???
初心者にはあれこれいうよりベストな書き方覚えろっていう
ベストでもないオレオレ書き方教える書籍は多い
全部のテーブルにcreated updated作れみたいな

365NAME IS NULL2017/03/04(土) 15:42:19.31ID:???
SQLはなんで大文字が好きなの?

366NAME IS NULL2017/03/04(土) 23:32:19.88ID:b+Y4fejK
>>353
そもそもどのRDBMSのINT型なのか知らないが、標準SQLではコンピュータの数値表現としているので、速いのはあたりまえ。

ちなみにOracleでは標準SQLのINT型はNUMBER型なのでまったく違う。当然Oracleでは計算が遅くはなる。

367NAME IS NULL2017/03/04(土) 23:33:46.81ID:b+Y4fejK
>>365
プログラミング言語の歴史では、小文字をメインに使うようになったのはC言語あたりから。

368NAME IS NULL2017/03/04(土) 23:57:32.49ID:???
Oracleの場合、内部で大文字に変えていると聞いたことがある
本当かどうかは確かめたことないし、今もそうなのかは分からないが
使っていた当時は全部大文字で書いてたな

369NAME IS NULL2017/03/05(日) 04:43:17.86ID:???
DB側で用意してる関数含めてユーザ入力による変数になってる
テーブル名とかカラム名以外は全部大文字にしてる
`table` `long_table_name` `column` `long_column_name`
ご丁寧に``で囲んでるけどこれもいらんのよなあ
なんかいい規則があればいいんだけど

370NAME IS NULL2017/03/05(日) 11:05:14.00ID:???
基本的に大文字しか使えない環境が当たり前の頃からSQLあるからな、、、
COBOLでの EXEC SQL 文とか懐かしいなあ

371NAME IS NULL2017/03/05(日) 15:50:25.27ID:ZV3ds4gJ
>>368
それを言うのがいるけど、プログラマでそんなことを言ったら恥ずかしいぞ。大文字、小文字を区別しないなら大文字、小文字の判定処理が入るわけで、そこから大文字に変換する処理が遅くて問題になるなど阿呆みたいなこだわりだ。

372NAME IS NULL2017/03/06(月) 00:07:50.62ID:???
大文字に変換する処理が遅くて問題になるなんて誰か言ってた?

373NAME IS NULL2017/03/06(月) 01:05:03.96ID:VHVbqVdu
>>368 が書いてるが?

374NAME IS NULL2017/03/06(月) 01:09:49.78ID:VHVbqVdu
大文字が大文字かどうかより、文字がなんなのかの判定も入るわけで、そんな処理時間はいつの時代のコンピュータの性能で考えているんだよw

こんなことを言い出したらRDBはあらゆることが遅すぎて使えない。現実にRDBはコンピュータの性能が上がったから使い物になるようになった歴史も知らないのか?

375NAME IS NULL2017/03/06(月) 01:15:29.34ID:???
>>371
asp

376NAME IS NULL2017/03/06(月) 02:48:06.58ID:???
368本人です。何かお騒がせしてしまい済みません。
相当昔の話です。
動かしていたサーバーはW2k、CPUはP3、メモリー4G程度でした。
できるだけ負荷を減らせと言う指示の中で作業してました。

377NAME IS NULL2017/03/06(月) 05:47:11.51ID:???
パーサーの仕様で大文字小文字区別しないにしても
大文字しかパースできなくて変換処理が必要だとしても
それに判定を挟む必要もなければ
ただの一文にすぎないSQLに処理時間なんてギャグかよって話

378NAME IS NULL2017/03/06(月) 07:05:39.51ID:???
>>377
お前の小さい脳みそこそギャグかよww

379NAME IS NULL2017/03/06(月) 07:25:07.48ID:???
↑アホ丸出し

380NAME IS NULL2017/03/06(月) 07:28:15.30ID:???
>>378
構文解析にかける時間に比べれば
文字列の処理なんて微々たるものがわからないような猿

381NAME IS NULL2017/03/06(月) 12:11:06.08ID:0KbRjlYP
>>377
判定処理はいるだろw
文字がAならAかどうか判定する。

何この低レベルw

382NAME IS NULL2017/03/06(月) 12:23:32.62ID:???
小文字混ざってる前提で全て大文字にしてからパースすればいいだけってのは
プログラマーならわかるだろ

383NAME IS NULL2017/03/06(月) 12:41:33.78ID:???
>>381
全部大文字にすればよいでしよw

384NAME IS NULL2017/03/06(月) 15:24:30.48ID:bDLzF0aS
結局予約語だけ大文字で書けばいいの?
開発効率落ちまくるけどどの参考書もそうしてるよな

385NAME IS NULL2017/03/06(月) 15:32:38.74ID:???
コーディング規約ってのがそれぞれのチームなり部署なりにあるだろ?
それに従えば良いだろ。
んで自分一人のものだけなら好き勝手に

386NAME IS NULL2017/03/06(月) 15:59:13.62ID:???
そうなんだけどさ、大文字と小文字使い分けるのってすごい面倒なんだよなぁ
玄人の皆さんは使い分けなきゃいけない状況のときどうやって書いてるの?
毎回shift+capslockしてるの?てか列名日本語にするのほんとやめてください

387NAME IS NULL2017/03/06(月) 16:09:32.32ID:???
使い捨ては全部小文字
あとで見返すことがあるものは予約後大文字、シフトに指置けばいいべ

388NAME IS NULL2017/03/06(月) 16:13:07.82ID:???
>>384
効率落ちまくるって、どんだけクエリ書いてるんだよ
300char/minだとして、大文字小文字意識しても5秒ほどしかかわらんだろ
つまり、1分の差がでるのに3600文字必要
毎日1万字書く奴がいたとしても、せいぜい3分/dayくらいの差だ

389NAME IS NULL2017/03/06(月) 19:02:01.27ID:aPuKjXeW
>>388
お前はキーパンチャーかwどんだけキーボードマスターだよw

390NAME IS NULL2017/03/06(月) 19:18:44.61ID:???
全部小文字でもいいだろ好きにしろ
ぱっと見てここSQLだなってわかるようにしたいなら大文字にすりゃいいし
動きゃいいんだよ

391NAME IS NULL2017/03/07(火) 02:45:55.03ID:???
>>381
大文字にするにあたって元の文字が大文字か小文字か判定する必要はないって話だと思うんだが、
あなたが言うように判定するのは無駄なので判定しないのが普通。

392NAME IS NULL2017/03/07(火) 10:30:00.17ID:???
>>388
キーパンチャーなみのタイプ速度で、普通は考えられないような量のクエリを1日にタイプするとしても、
それでも1日あたりの作業低下量は3分程度なんだが、>>384はどんだけタイプしてんだよって話だ

読解力ない奴って、底が知れんわ

393NAME IS NULL2017/03/07(火) 12:02:08.35ID:???
そもそもSQL誕生して何十年も経ってるのにいまだにこの議論してんだから
大文字小文字の問題は根深いよな

>>392
タイピング速度の問題ではなくてストレス的な意味の開発効率を言ってると思うぞ>>384

394NAME IS NULL2017/03/07(火) 13:44:27.84ID:???
>>393
この程度のコーディングルールでストレスとか、向いてないんじゃねーの?

395NAME IS NULL2017/03/07(火) 13:54:22.26ID:???
安価ミスしちゃうそそっかしい人はフォーマッタ使えばいいんじゃないでしょうか。

396NAME IS NULL2017/03/07(火) 14:03:09.27ID:???
>>393
> 大文字小文字の問題は根深いよな
根深いっつーか、どっち派もいるというだけでしょ
他言語だっていつまでたっても中括弧の書き方レベルの議論が終わらないし

397NAME IS NULL2017/03/07(火) 14:23:20.70ID:???
てか、別に大文字小文字で開発効率が落ちる奴がいても不思議じゃない。
不思議じゃないが、だから何ってはなしで。
俺らには関係ない。

398NAME IS NULL2017/03/07(火) 15:50:13.46ID:???
スレチかも知れんがMac使ってるやつはSequel入れとけフリーでこんないいの
なかなかないぞ

399NAME IS NULL2017/03/07(火) 16:33:49.67ID:???
大文字小文字もインデントの具合も全てどうでもいいと思ってるが・・・

カンマを行頭に置く奴だけは許せん!!!

400NAME IS NULL2017/03/07(火) 17:40:36.93ID:???
俺もこの程度で効率落ちまくるなら、プログラマに向いてないと思うよ

401NAME IS NULL2017/03/07(火) 17:52:14.51ID:???
プログラマなら、たとえMISRA-C完全準拠を要求されても、淡々と従うものだ。

402NAME IS NULL2017/03/07(火) 18:17:10.46ID:???
>>381
お前がw
このスレでw
一番低レベルだがなwww

403NAME IS NULL2017/03/07(火) 21:19:09.55ID:???
>>381
何度詠んでもわらてまう

404NAME IS NULL2017/03/07(火) 23:52:37.76ID:???
俺は逆に面倒だと思う人のほうがプログラマには向いてるとおもうけどな
if so を考えるのって大事だと思うぞコーダーって意味なら向いてないと思うけど

405NAME IS NULL2017/03/08(水) 12:54:37.42ID:???
>>404
面倒だと思うのはかまわない

ただ、この程度で効率落ちまくるレベルの奴は、プログラマに向いてないってだけだ

406NAME IS NULL2017/03/08(水) 15:50:08.89ID:???
「落ちまくる」のは向き不向きよりも不慣れなだけだろう

向き不向きの話をするなら、大文字で書くことに何の疑問も持たない人の方がプログラマに向いていない
理由があって大文字を選択してるなら良いことだと思うが

407NAME IS NULL2017/03/08(水) 16:03:35.29ID:???
マジでうざいわ。
いつまでやってんだ。

408NAME IS NULL2017/03/08(水) 16:10:50.92ID:???
>>406
キーワードを大文字で書けくらい、即慣れるだろ
ふつーのプログラマなら、効率が落ちまくったりしません

409resumi2017/03/08(水) 17:37:21.53ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。

410NAME IS NULL2017/03/08(水) 17:54:51.71ID:???
この粘着質、どこかで

411NAME IS NULL2017/03/08(水) 18:00:24.69ID:???
>>386
> 毎回shift+capslockしてるの?
誰も答えないのでコメントしとくか。

普通はCapsLockなんか使わないでしょ。
Shift推しながらタイプするだけ。

412NAME IS NULL2017/03/08(水) 18:11:39.11ID:???
予約語なんて一覧にして各RDBのドキュメントに乗ってんだから
ちょちょいとコピペして整形して正規表現で置き換えりゃいいだろ

413NAME IS NULL2017/03/08(水) 19:12:42.88ID:o80qSDDR
でたw正規表現厨w

414NAME IS NULL2017/03/08(水) 19:15:55.09ID:???
その正規表現がこちらになります

415NAME IS NULL2017/03/08(水) 19:58:12.66ID:???
age半角wはレベル低すぎんだよ

416NAME IS NULL2017/03/08(水) 20:37:34.03ID:o80qSDDR
それでは気をとりなおしてwレベル高い正規表現どうぞw

417NAME IS NULL2017/03/08(水) 21:24:42.52ID:???
エディタに丸投げするだけなのに
本気で言ってるのかどうなのか・・・

418NAME IS NULL2017/03/09(木) 18:52:44.02ID:cT/4yIz6
>>391
何をわけのわからないことを言ってるのか?コンピュータからしたら大文字と小文字のアルファベットは別の文字だぞ。

419NAME IS NULL2017/03/09(木) 18:55:38.08ID:cT/4yIz6
初心者が数字列を数値だと言い張ってゆずらないのと同じなのかな?

こういうのは時間の無駄だから関わらない方がいいわ。

420NAME IS NULL2017/03/09(木) 19:06:21.65ID:???
全くだな
話がわかってないID:cT/4yIz6 のようなキチガイは構ってはいけない

421NAME IS NULL2017/03/09(木) 19:25:54.71ID:l9oI+xHV
いやいくら馬鹿だからってキチガイさすがには言いすぎだろw


さて与太話はこれくらいにして
そろそろ正規表現の話題の戻そうか

422NAME IS NULL2017/03/10(金) 06:33:59.01ID:???
>>421
お前も馬鹿でキチガイのようだがw

423NAME IS NULL2017/03/10(金) 13:43:59.58ID:???
ぶっちゃけどんなプログラミング言語習得するよりDB極めたほうが金になるよな
業界の中でもDBエンジニアを目指すのが一番おすすめだわ

424NAME IS NULL2017/03/10(金) 13:44:11.48ID:???
正規表現、NGにした方がいい?

425NAME IS NULL2017/03/10(金) 13:58:27.33ID:???
>>423
クエリだけ書けてもプログラムないと高度な事できないだろ。分析止まりでランニングできない。

426NAME IS NULL2017/03/10(金) 14:55:14.16ID:???
>>425
逆にクエリが書けなればダイナミックなプログラムはかけないけどな

427NAME IS NULL2017/03/10(金) 14:59:24.06ID:???
>>426
だからどちらかじゃなくて両方必要って話だろ

428NAME IS NULL2017/03/10(金) 15:05:29.44ID:???
>>423
夢見がちな文系エンジニア

429NAME IS NULL2017/03/10(金) 15:30:00.65ID:???
クエリしか書けないエンジニアなんているの?

430NAME IS NULL2017/03/10(金) 19:39:42.24ID:???
正規表現大好き&#128149;

431NAME IS NULL2017/03/10(金) 19:42:09.92ID:???
改行考慮や大文字小文字無視するだけでも正規表現使う理由にはなる
正規表現と聞いて脊椎反射するやつはエディタで置換したことないやつ

432NAME IS NULL2017/03/10(金) 19:54:04.86ID:kvVonAc4
凄く難しいこと言ってSO
だけど全体的には凄くアタマ悪SO
正規厨って大体SOUL

433NAME IS NULL2017/03/10(金) 20:14:25.35ID:???
難しいように聞こえるならお前の頭が悪いのだろう
正規表現は一般的なテキスト処理にも使われるもので
プログラムの中だけで使われるものじゃない

434NAME IS NULL2017/03/10(金) 20:46:07.46ID:kvVonAc4
突如何者かに向けて正規教室を始めた正規厨SO FOOL

435NAME IS NULL2017/03/11(土) 09:13:34.14ID:???
正規とか言ってる阿呆は派遣か契約なのか?

436NAME IS NULL2017/03/11(土) 11:14:03.17ID:???
いいえ、ニートです

437NAME IS NULL2017/03/11(土) 11:57:22.36ID:???
正規表現知ってから、もう、文字数数えて
左から何文字目から何文字目でアレを見つけて
文字数数えて次のアレを見つけて文字数数えて
切り取って、みたいなことやらなくなったから
頭が鈍った気がするけど
便利でもう過去には戻れない。

438NAME IS NULL2017/03/11(土) 12:24:01.21ID:???
だが正規表現にバグがあった時のことを考えると
怖くて本番業務には使えない

439NAME IS NULL2017/03/11(土) 12:38:16.89ID:plFNS0RJ
正規厨ってニートだったのかYO
正規ばかり弄ってないで働けYO

440NAME IS NULL2017/03/11(土) 17:49:09.54ID:???
だからなんだよ正規って
頭悪いのか?

441NAME IS NULL2017/03/11(土) 21:20:37.60ID:???
え、てか正規表現できないプログラマとかいなくね?
忘れても調べればすぐでてくるし

442NAME IS NULL2017/03/11(土) 21:35:22.36ID:???
正規表現ときいたら脊椎反射的に噛みついちゃう非正規おじさんをあんまイジメないでくれる?

443NAME IS NULL2017/03/11(土) 21:48:24.19ID:???
>>438
sqlにもバグがあるけど
どう扱うの?

444NAME IS NULL2017/03/12(日) 02:22:23.08ID:???
>>443
SQLにバグがあったらメーカーのテストですぐにわかるだろう
正規表現はどれだけテストされているか怪しいものだ

445NAME IS NULL2017/03/12(日) 07:55:30.07ID:???
>>444
なぜそう思うの?

446NAME IS NULL2017/03/12(日) 09:32:45.05ID:???
>>445
じゃないと正規場かにできないのね

447NAME IS NULL2017/03/12(日) 09:40:32.67ID:???
>>445
テストが大変そうだから

448NAME IS NULL2017/03/12(日) 10:29:45.30ID:???
SQLより正規表現のがテスト大変て本気で言ってるのか

449NAME IS NULL2017/03/12(日) 10:36:24.12ID:???
>>411-412当たりが話の元
ファイルにSQL書く時大文字タイプするのはどうするかって話

450NAME IS NULL2017/03/12(日) 10:47:29.82ID:???
>>448
俺はそうだぜ
一足お先に

451NAME IS NULL2017/03/12(日) 14:30:19.40ID:???
RDBMSのスレなのに正規化じゃなくて正規表現の話題になってるのが不思議w

452NAME IS NULL2017/03/12(日) 14:56:31.76ID:bZc6gV75
>>448
正規表現はそれ自体がわかりにくく、バグの温床。安易な正規表現の使用はよくない。

453NAME IS NULL2017/03/12(日) 14:57:14.86ID:bZc6gV75
>>451
RDBでも正規表現を使う関数があるから的外れでもない。

454NAME IS NULL2017/03/12(日) 15:11:39.39ID:???
そんな難し複雑な正規表現の話をしてるわけではないだろうに
正規表現ときいて脊椎反射しちゃう正規おじさんがいけないんだよ

455NAME IS NULL2017/03/12(日) 18:07:08.16ID:WTgIsk55
>>454
でもオマエ正規厨やROCK!
俺ってSOUL!
低能は馬鹿にするポリシーなんだYO!

456NAME IS NULL2017/03/12(日) 18:52:38.26ID:???
>>452
安易さとは?

457NAME IS NULL2017/03/12(日) 19:01:08.82ID:???
>>455
ごめんね正規じゃなかったね
非正規おじさんだったね
早く正規になれるといいね

458NAME IS NULL2017/03/12(日) 19:28:58.95ID:???
>>455
正気になーれー

459NAME IS NULL2017/03/12(日) 20:13:02.99ID:1Xqna3W1
レーダー追尾により自然値0.058μSv/hをはるかに上回るガンマー線が27万円程度の測定器で否が応でも計測され続ける
https://www.youtube.com/watch?v=CtiacppR5dk

9:27人工衛星(確実な部分)
https://www.youtube.com/watch?v=-Ls8O7jjK1A

460NAME IS NULL2017/03/13(月) 08:03:56.95ID:???
おじさんは正規表現得意なんじゃね?
秀丸にもあるんでしょ?

461NAME IS NULL2017/03/14(火) 12:41:38.04ID:KmvSvp8f
>>460
秀丸はどんどん使われなくなってるぞ。

462NAME IS NULL2017/03/14(火) 15:54:17.47ID:???
そろそろ、SQLに関する話題に戻そうよ

463NAME IS NULL2017/03/14(火) 19:32:27.53ID:???
正規表現のテストは自信が持てないのに、SQLのテストは完璧に出来るという自信は何処から湧いて出るのか。

怖や怖や。

464NAME IS NULL2017/03/14(火) 19:36:53.01ID:VMT6GYOD
>>463
自身が持てないテストなんてテストじゃねえよw
何言っちゃってんの正規厨クンw

465NAME IS NULL2017/03/14(火) 19:44:39.02ID:LfWSYHE8
>>463
どんな正規表現を言ってるんだよ?
よほど簡単なものしか想定してないのか。

正規表現はプロ中のプロでも間違うことがあるんだぞ?

だから複雑なものはあまり使われない。ぱっと見、これで合っているかどうかわからないのが原因。

466NAME IS NULL2017/03/14(火) 19:51:46.52ID:LfWSYHE8
正規表現は言語、環境によっても方言が強くて面倒

467NAME IS NULL2017/03/14(火) 20:07:23.62ID:???
んなことないだろ
だいたいposixかperlか2択

468NAME IS NULL2017/03/14(火) 20:28:52.70ID:???
>>465
うえでワーワー言ってる人って、正規表現を書き間違えたことでのバグじゃなくて、仕様通りの動作をしないというバグのことを指しているとおもうよ

469NAME IS NULL2017/03/14(火) 20:37:06.86ID:???
ここはデータベース板だって事分かってる?

470NAME IS NULL2017/03/14(火) 20:43:01.10ID:???
そりゃ分かってるでしょう

471NAME IS NULL2017/03/14(火) 20:47:24.70ID:VMT6GYOD
時と場所をわきまえずに正規自慢したがるのが正規厨なんだYO

472NAME IS NULL2017/03/14(火) 21:15:09.82ID:LfWSYHE8
>>471
Oracleも正規表現の関数を大量に追加したものの使ってるプログラムを見たことない。

正規表現の乱用はよくないという結論は十数年前に出てるよな。

Eメールアドレスの形式チェックですら正規表現だけでやろうとすると難しくて昔はどのWebサイトもミスしまくってたな。

473NAME IS NULL2017/03/14(火) 22:45:55.12ID:???
>>472
裏付けは?

474NAME IS NULL2017/03/15(水) 00:01:42.17ID:???
>>472
なんでも乱用は良くないものですよ

Eメールアドレスの形式チェック「ですら」

475NAME IS NULL2017/03/15(水) 23:12:31.33ID:yFO1cwOX
>>473
正規表現だけでEメールアドレスの文字列があっているかどうかを一発で判定する正規表現を考えればいい。なかなか難しいぞ。

476NAME IS NULL2017/03/15(水) 23:13:19.18ID:yFO1cwOX
>>474
日本語が苦手なんですね。

477NAME IS NULL2017/03/15(水) 23:28:15.79ID:???
(はは〜ん…コイツさては正規厨だな…)

478NAME IS NULL2017/03/15(水) 23:50:53.41ID:yFO1cwOX
語彙って親や育った環境で大差がつくんだよな。知らない、あまりその人が聞かない言葉や言い回し見たり、聞いたりすると言葉がおかしいなどと批判してくる。本人が無知なだけなのに。

479NAME IS NULL2017/03/16(木) 02:43:53.69ID:???
3日連投しましょう

480NAME IS NULL2017/03/26(日) 06:46:08.94ID:???
SQLの書き方で質問ですが、
AND句は行の先頭に書くか、行の末尾に書くか、どちらが一般的でしょうか?

(例1)
WHERE
 A = 1 AND
 B = 1

(例2)
WHERE
 A = 1
 AND B = 1

SQLの書き方ガイドラインのようなものがあれば教えてください。
よろしくお願いします。

481NAME IS NULL2017/03/26(日) 10:03:55.44ID:???
>>480
両方一般的

482NAME IS NULL2017/03/26(日) 10:40:33.20ID:uME5dCZb
>>480
そういう決まりはない。プログラミング言語と同じで改行せずにANDがあれば条件の続きがあるとわかりやすいが、コメントアウトしにくい。

selectの選択列のカンマ位置と同じようなもの。

483NAME IS NULL2017/03/26(日) 12:01:47.23ID:???
うちは
where 1 = 1
and a = 1
and b = 1

484NAME IS NULL2017/03/26(日) 13:03:58.55ID:???
UNIONやサブクエリ入るとまたちょっと変わるけど基本的に
select tableの選択セクション whereの条件セクション orderとかのその他セクション
この3つで分ける程度だな

485NAME IS NULL2017/03/26(日) 16:07:36.99ID:vHb56IYD

486NAME IS NULL2017/03/29(水) 18:16:55.34ID:XE4RKzOb
技術士の全部門をコンプリート vs 東大理三首席現役合格 vs 旧司法試験首席一発合格

どれが一番凄い?

487NAME IS NULL2017/03/30(木) 05:17:15.45ID:???
>>481, 482, 483, 484
返信が遅くなってしまいすみません。
レスありがとうございました。

>selectの選択列のカンマ位置と同じようなもの。

なるほどそうですか。
例1も例2も好きなほうでよい、ということですね。

(例1)
  SELECT
   A, B, C,
   D

(例2)
  SELECT
   A, B, C
   , D

勉強になりました。

488NAME IS NULL2017/03/30(木) 08:09:41.36ID:???
条件の内容を最初に見たいからandは後ろにつけてる。
前にあると地味にイラっとする。
where
a=1 and
b=2

489NAME IS NULL2017/03/31(金) 15:35:06.33ID:???
>>486
東大理三首席現役合格
正真正銘期間限定延期不可一発勝負なのはこれだけ

490ich12017/04/01(土) 14:41:02.43ID:YerBiODJ
https://goo.gl/8by4rX
これは嫌だなー。。本当なの?

491NAME IS NULL2017/04/01(土) 21:59:51.47ID:O38ZNBFt
カスタマーエンジニアってどうですか?収入面とか労働面で。
楽ですか?それとも超キツイですか?

492NAME IS NULL2017/04/01(土) 22:41:01.99ID:???
>491
マルチ。くそ

493NAME IS NULL2017/04/09(日) 19:51:01.20ID:???
このどうですか厨は、いろんな板で荒らしているだろ
相手せず、スルーしようよ

494NAME IS NULL2017/04/13(木) 18:25:57.43ID:n8gSS6s1
C#からsqliteを使っているんですが、データベースの設計方法がわかりません、第2正規化以降って必要ですか?
必要なデータを洗い出してそこから正規化していけばいいんでしょうか?もしある程度レコードが増えた状態で新たに項目追加したいとなったらどうすればいいんでしょうか?

495NAME IS NULL2017/04/13(木) 18:43:18.24ID:???
そりゃ設計のスレだな
追加したカラムに既存のレコードも全部埋まるなら追加でいいし
埋まらないなら別に作るべきでしょ

496NAME IS NULL2017/04/13(木) 18:44:45.99ID:???
>>494
本買って読んだ方が手っ取り早い

497NAME IS NULL2017/04/13(木) 21:45:28.08ID:???
>>495
すいません
では設計スレのほうにいきます

498NAME IS NULL2017/04/20(木) 02:03:12.33ID:???
mybatis使っててDBに定義されたBLOB型のデータをバイト配列として取得する方法ってありますか?

499NAME IS NULL2017/04/20(木) 03:51:44.77ID:3sXeWAt/
>>498
プログラム板で聞いた方がいい。

500NAME IS NULL2017/04/20(木) 03:56:00.44ID:3sXeWAt/
>>498
調べたらそれ普通じゃねえか。すこしは調べろよ。

501ich12017/04/21(金) 16:27:47.00ID:R/eXxgbc
https://goo.gl/q9Ml0S
これは嘘でしょ?本当だったら落ち込むわ。。

502NAME IS NULL2017/04/21(金) 23:52:26.43ID:???
アホかと思われるかも知れませんが、
こうするとエロラーになります。
何か良い方法ないですか?

Select *
From テーブル2 ←──┐
Union All          │
Select *          │
From (サブクエリ) As テーブル2

503NAME IS NULL2017/04/21(金) 23:54:28.65ID:fJADFuER
>>502
ネタですか?

名前がぶつかっているのだから、あたりまえでしょうがw

504NAME IS NULL2017/04/22(土) 00:02:49.50ID:???
>>503
すいません、駄目なのはわかってて、
こういうのがやりたい時はどう書くのかなと。

505NAME IS NULL2017/04/22(土) 00:10:42.55ID:bI/4AwC2
>>504
なぜそうしなければいけないのか?

506NAME IS NULL2017/04/22(土) 00:13:53.98ID:???
どういうことをしたいのか質問内容を具体的に書かないと伝わらないぞ

507NAME IS NULL2017/04/22(土) 12:23:35.41ID:???
すごく具体的な質問だと思うけどどこが分からないのか?
クエリの結果を二重にしたいだけだろ

508NAME IS NULL2017/04/22(土) 12:33:28.64ID:???
>>507
目的意図です

509NAME IS NULL2017/04/22(土) 12:33:49.71ID:???
サブクエリーを使いたいと言うことかもしれないし、
単一テーブルから二通りの選択をして結果を合算したいのかもしれないし

510NAME IS NULL2017/04/22(土) 12:55:02.60ID:???
なぜ聞かれてもいない事を深読みして答えようとするのか?
どうにかして自分が知ってる事に結びつけようとしてるだけだろお前ら

511NAME IS NULL2017/04/22(土) 13:04:00.14ID:???
それも、妄想だろうが

512NAME IS NULL2017/04/22(土) 13:13:27.52ID:???
>>510
マジこれよ
反省する人多すぎ

513NAME IS NULL2017/04/22(土) 15:11:11.87ID:???
>>502
unionはテーブル名見てるんじゃなくselectの中身見てるだけ
だから別名付けてどうぞ

514NAME IS NULL2017/04/22(土) 15:33:24.15ID:bI/4AwC2
>>513
unionを同じテーブルとでしか使えないと思い込んでると仮定したわけか?

515NAME IS NULL2017/04/23(日) 02:28:35.88ID:???

516NAME IS NULL2017/04/23(日) 03:28:24.12ID:???
>>505
>>506
こういう嫌がらせみたいな表があるんですよ。

商品名  単価1 単価2 単価3
もょもと 100  200  300
すけさん 120
アイリン 500  990

これをUnionで縦に繋げれば綺麗な表になりますが、
普通にやると検索が3倍になるので、2回目以降は前回の抽出結果を参照したいんです。

Select 商品 単価1 From 元テーブル
Select 商品 単価2 From 1回目の抽出結果
Select 商品 単価3 From 2回目の抽出結果

>>513
別名でどう紐づけるんですか?

517NAME IS NULL2017/04/23(日) 03:46:27.99ID:???
あれ?
もしかして、Union Allじゃなくて、
単にUnionしたものに対して検索した方が速かったりします?

518NAME IS NULL2017/04/23(日) 05:19:54.61ID:7gvObldM
やりたいことがわかりそうでわからない。

519NAME IS NULL2017/04/23(日) 05:23:12.48ID:7gvObldM
>>517
結局、何がしたいわけ?

520NAME IS NULL2017/04/23(日) 09:38:17.86ID:???
>>516
綺麗な表ってなに?
またなんでそういう要求が
でる背景はなに?

521NAME IS NULL2017/04/23(日) 09:50:21.14ID:???
速度が目的なら普通に検索して単価1-3の分離はクライアント側でやるのが現実的だろうね。
あるいは単価1-3をUNION ALLしたサブクエリから抽出する。賢いDBMSなら最適化してくれるかもしれない。

522NAME IS NULL2017/04/23(日) 09:56:38.73ID:???
>>519
検索と表の整形です。

>>520
上の例では省略しましたが、
実際は、かなり横に長いんです。

商品名 単価1 単価2 単価3 ・・・ 単価50

おもいっきり横にスクロールしないと全体を見渡せない、
嫌がらせみたない表でしょう?

523NAME IS NULL2017/04/23(日) 10:52:31.24ID:???
>>522
あなたのいう綺麗な表とは?
縦にしたいの?


『おもいっきり縦にスクロールしないと全体を見渡せない、
嫌がらせみたない表。』

を作りたいの?
何が便利になるの?

524NAME IS NULL2017/04/23(日) 11:01:55.37ID:???
union allで列分繋げればできるよ

525NAME IS NULL2017/04/23(日) 11:12:44.52ID:???
質問返ししてる奴いいかげんウザい

526NAME IS NULL2017/04/23(日) 11:17:44.14ID:???
>>525
どうしたw
急にww

527NAME IS NULL2017/04/23(日) 11:46:31.38ID:???

528NAME IS NULL2017/04/23(日) 11:50:19.03ID:???
商品名を抽出したいのか
商品名に対するいずれかの単価を抽出したいのか
商品名に対する全ての単価を抽出したいのか

それにしても、単価1から単価50まで並べるというのは苦痛だ
そういうテーブル定義作った奴を縛り首にした方が後々良い結果がでる

529NAME IS NULL2017/04/23(日) 13:24:51.53ID:???
>>523
データベースって普通縦なんじゃ・・・。

530NAME IS NULL2017/04/23(日) 14:37:15.08ID:???
>>529
普通w

531NAME IS NULL2017/04/23(日) 14:42:39.73ID:???
>>523
縦にしたいです。
うちの会社のマウスホイールは、
全部縦に回るので、縦の方が便利なんです。

この表作った人のは、横に回るのかも知れませんが。

>>528
>商品名に対する全ての単価を抽出したいのか

それです。

532NAME IS NULL2017/04/23(日) 14:47:27.11ID:???
共通表式 でぐぐれば終わりな気がする

533NAME IS NULL2017/04/23(日) 14:49:12.45ID:???
>>531
>>524でやるのが無難だろ

534NAME IS NULL2017/04/23(日) 17:40:50.51ID:???
>単価50

この先、まだまだ増えたりしてな w

535NAME IS NULL2017/04/23(日) 17:47:02.05ID:???
エクセルのつもりで追加するからたまらんな

536NAME IS NULL2017/04/23(日) 22:26:54.47ID:???
一つの商品に50種類もの単価が付けられると言うのは、そういう理由があるわけでしょ?
例えば、一つの商品に50個のパーツが必要でそれぞれに単価があるとか
あるいは50の地域での販売単価とか
そういう小項目も合わせて表示しないと、
意味不明の50行の単価出力にならないかな?

537NAME IS NULL2017/04/24(月) 01:18:15.41ID:???
おれなら実テーブルを変更して、元テーブルと同じ形のビューつくるけどな

538NAME IS NULL2017/04/24(月) 10:46:17.61ID:???
>>503
> 名前がぶつかっているのだから、あたりまえでしょうがw

>>513
> だから別名付けてどうぞ

なんか、同名だと駄目で当然的な流れだが、PostgreSQLではエラーにはならない。
エラーになるのが普通なのか?

539NAME IS NULL2017/04/24(月) 11:32:36.94ID:???
>>538
普通とは?

540NAME IS NULL2017/04/24(月) 11:50:05.50ID:???
>>539
> 普通とは?
その疑問の意味がわからない。

541NAME IS NULL2017/04/24(月) 12:00:49.79ID:???
>>540
その文脈で普通を
具体的に表現して。

542NAME IS NULL2017/04/24(月) 12:40:31.78ID:Ng2xnlDE
インラインビューの別名に実テーブル名を使う心理がわからない。混乱するだけだと思うが。

543NAME IS NULL2017/04/24(月) 12:40:38.23ID:???
もはや後に退けなくなった意地の質問返し
不毛である

544NAME IS NULL2017/04/24(月) 12:48:45.79ID:???
>>541
え?いやだからPostgreSQL以外のRDBMSじゃエラーになるのが普通なのかって意味だけど?

545NAME IS NULL2017/04/24(月) 12:51:43.81ID:???
>>544
普通でないよ

546NAME IS NULL2017/04/24(月) 13:01:37.97ID:???
>>545
そうなんだ。
いや、>>503に誰もコメントしないから、エラーになるのが普通なのかと、ちょっと心配したし。

547NAME IS NULL2017/04/24(月) 13:04:55.00ID:???
>>542
ひょっとして、PostgreSQL以外では以下はエラーになるのが普通なの?
select * from (select a, b from hoge) as hoge
まぁ、俺も実在のテーブル名を別名につけようとは思わないんだが。

548NAME IS NULL2017/04/24(月) 13:07:17.98ID:???
>>547
心配するな、俺の知ってる範囲ではそれはエラーにならない

549NAME IS NULL2017/04/24(月) 13:24:49.68ID:???
別名に関して誤解してる奴が多そうだな

550NAME IS NULL2017/04/24(月) 14:45:32.03ID:???
>これをUnionで縦に繋げれば綺麗な表になりますが、
>普通にやると検索が3倍になるので、2回目以降は前回の抽出結果を参照したいんです。

select一回で全項目を取得して、後はアプリにやらせるとか

551NAME IS NULL2017/04/24(月) 14:54:59.09ID:???
なんかよくわからんが、case whenでいけるかもよ?
データ例と期待する取得結果を書けば、ちゃんとした答えが返るかも
いまのとこ、何をやりたいのかいまいちわからん

552NAME IS NULL2017/04/24(月) 15:30:08.24ID:???
こういうこと?

RDBの縦持ちテーブルと横持ちテーブル、およびその変換について
https://gist.github.com/aamine/5565025

553NAME IS NULL2017/04/24(月) 15:35:32.59ID:???
実体が横持ちになっているのが気に入らないが、とりあえず縦持ちのように参照するためにUNION ALLを行った。
しかし縦を横にするクエリはまだ知らない。

というところなんじゃないかな。

そのクエリがわかれば、実体を縦持ちにするのもやぶさかではないみたいな。そんな感じがする。

554NAME IS NULL2017/04/24(月) 15:36:53.40ID:???
流れがおかしくなったのは >>503 が照れ隠しのために話を流したかっただけだと思う。

555NAME IS NULL2017/04/24(月) 15:54:00.93ID:???
まぁ、価格カラムが50個あるので50個のクエリをunionで繋げました、よりは、クライアントで頑張る方がいいと思う
縦横変換もクライアントで頑張った方が簡単かつ検索コストも低そう

556NAME IS NULL2017/04/24(月) 17:59:56.67ID:???
まず価格カラムが50個もあるのが設計として妥当か考えるべきだがな

相関名の有効範囲がUNIONを超えるかどうかがエラーにするかどうかの境目か
そもそも実テーブルと同じ相関名ってエラーになるのが標準仕様だっけ?

557NAME IS NULL2017/04/24(月) 18:18:50.51ID:???
「だっけ?」の使い方よ

558NAME IS NULL2017/04/24(月) 18:25:33.72ID:???
>>556
この後に及んで何いってんだか

559NAME IS NULL2017/04/24(月) 18:35:58.02ID:Ng2xnlDE
だいたい別の意味の価格だから別カラムで持っているのが普通だから、質問した人間がわかってないんじゃないのか?

560NAME IS NULL2017/04/24(月) 21:05:20.45ID:???
カラムに関して誤解してる奴が多そうだな

561NAME IS NULL2017/04/26(水) 11:19:16.79ID:???
妙に絡むな

562NAME IS NULL2017/05/07(日) 00:12:31.50ID:???
物凄く初歩的で申し訳ないのですが、SQL Server2008をSQL Server2014へ
アップグレードでインストールした後、不要な2008を消したいんですが
普通にアンインストールでいいものなんでしょうか。

563NAME IS NULL2017/05/07(日) 00:42:48.59ID:???
こちらで聞いた方が良いように思う

http://echo.2ch.net/test/read.cgi/db/1464508208/

564NAME IS NULL2017/05/07(日) 03:31:50.86ID:???
>>563
どうりで出てこないわけですわ。板が違うとは。
ありがとうございます。

565NAME IS NULL2017/05/07(日) 15:01:22.97ID:???
いやまあここの板にもあるけど、DBの内容とインストール関係は別の話だな

Microsoft SQL Server 総合スレ 11
http://echo.2ch.net/test/read.cgi/db/1464508208/

566NAME IS NULL2017/05/07(日) 15:50:54.85ID:0k07jYPL
>>565
チャージマン研!第23話「恐怖!精神病院」
https://youtu.be/ckO9d_-qiPw

567NAME IS NULL2017/05/10(水) 20:02:08.20ID:???
社員
社員ID、名前

社員情報
社員ID、血液型、生年月日、性別、身長

身長170cm以上の社員の名前を取得するSQLってどう書けばいいのでしょうか?

SELECT 社員.名前
FROM 社員情報
WHERE 社員情報.身長 >= 170

これで出てきますか?

568NAME IS NULL2017/05/10(水) 20:07:47.00ID:???
>>567
出てこないよー

569NAME IS NULL2017/05/10(水) 20:32:12.08ID:f4kloMSM
社員情報に名前入れろや
お前は名無しの社員ちゃうやろアホか

570NAME IS NULL2017/05/10(水) 22:05:06.36ID:???
システムがデータベースを使っているのでどうにもできないのです
ざっくり見た感じですが、こんな感じになっていたと思います

571NAME IS NULL2017/05/10(水) 22:23:54.78ID:???
ざっくり見ただけで俺に聞くなよ失礼な人だな

572NAME IS NULL2017/05/10(水) 22:41:53.38ID:???
失礼しました。やはり方法はないんでしょうか?

573NAME IS NULL2017/05/10(水) 23:00:43.24ID:???
INNER JOINすれば済む話では

574NAME IS NULL2017/05/10(水) 23:27:46.64ID:???
>>572
怖くて教えられない
なぜSQLを知らない人が仕事用のデータベースをいじろうとしているのか

575NAME IS NULL2017/05/10(水) 23:41:35.27ID:???
sqlなんて基本以来10年近くいじってないワイが適当回答すると
SELECT 社員.名前 FROM 社員情報 WHERE 社員.ID IN (SELECT 社員情報.社員ID FROM 社員情報 WHERE 社員情報.身長 >= 170)

576NAME IS NULL2017/05/11(木) 00:41:42.41ID:???
>>567
こうかな?

SELECT 社員.名前
FROM 社員, 社員情報
WHERE 社員情報.身長 >= 170 AND
社員.社員ID = 社員情報.社員ID

577NAME IS NULL2017/05/11(木) 19:53:55.21ID:???
>>567
社員IDで紐付いてるとかを勝手に想定してくれる訳じゃないので指定してやらないとな

SELECT 社員.名前
FROM 社員情報
INNER JOIN 社員 ON 社員情報.社員ID = 社員.社員ID
WHERE 社員情報.身長 >= 170

>>569
機微な情報は別テーブルとか普通にあるだろ

578NAME IS NULL2017/05/11(木) 22:09:00.58ID:kTC/q0g8
>>577
機微な情報は別テーブルとかないし
別テーブルにする意味もないし
そもそも社員の名前は機微な情報ではない

まあ、お前のような多重に勘違いした独り善がりの馬鹿によって作られた
>>567のような出来損ないのスキーマはたまに見かける

あ、勘違いしやすいみたいだから一応断っておくけど
これ褒めてるんじゃないからねw

579NAME IS NULL2017/05/11(木) 22:57:42.62ID:???
 
一応書いておくけど、

ここは初心者スレ

580NAME IS NULL2017/05/11(木) 23:30:48.76ID:???
大雑把な性格の俺的には、こうかな?

SELECT *
FROM *
LEFT JOIN *
ON * = *

581NAME IS NULL2017/05/12(金) 04:58:07.76ID:???
>>578
> そもそも社員の名前は機微な情報ではない
ここまでバカだとは...
機微な情報の意味わかってないだろ w

582NAME IS NULL2017/05/12(金) 08:00:05.76ID:???
>>581
もう一つ勘違いしてるみたいだけど
2ちゃんだって素直にありがとうって言ってもいいんだからね

583NAME IS NULL2017/05/12(金) 08:29:18.99ID:???
ありがとう2ch
>>578 みたいなバカがいるってことを教えてくれて

これでいいかな w

584NAME IS NULL2017/05/12(金) 10:27:51.21ID:???
>>581
機微な個人情報 JISQ15001:2006

・思想,信条又は宗教に関する事項
・人種,民族,門地,本籍地(所在都道府県に関する情報を除く。),身体・精神障害,犯罪歴その他社会的差別の原因となる事項
・勤労者の団結権,団体交渉その他団体行動の行為に関する事項
・集団示威行為への参加,請願権の行使その他の政治的権利の行使に関する事項
・保健医療又は性生活に関する事項

585NAME IS NULL2017/05/12(金) 10:38:02.89ID:???
俺の中では「普通にある」
俺の中ではな

586NAME IS NULL2017/05/12(金) 11:55:26.59ID:???
誰のマウンティングが決まるんか
興味深いw

587NAME IS NULL2017/05/12(金) 12:27:50.14ID:???
>>584
それもそうだけど
>>581はそもそも社員テーブルに社員名がない事の理不尽さに気がついていない

馬鹿がその視野の狭さ故に犯す誤りの典型だねw

588NAME IS NULL2017/05/12(金) 12:54:11.14ID:???
マウンティングとかアホなワードがバズったおかげで、>>586みたいな馬鹿が出てくるんだよ

589NAME IS NULL2017/05/12(金) 13:09:41.44ID:???
>>567
匿名かが簡単にできる、良いスキーマ

590NAME IS NULL2017/05/12(金) 15:41:27.94ID:???
お前わかってないだろ <− 根拠のないマウント

591NAME IS NULL2017/05/12(金) 18:40:02.74ID:???
>>578
> 機微な情報は別テーブルとかないし
いや、あると思うよ。

> 別テーブルにする意味もないし
異なる読み取り権限を設定できる。

592NAME IS NULL2017/05/12(金) 19:54:33.25ID:???
機微な情報で氏名とか言い出すアホがいて笑える
どう見ても
> 社員情報
> 社員ID、血液型、生年月日、性別、身長
の方だろ

593NAME IS NULL2017/05/12(金) 21:23:59.30ID:???
名前は普通に公開されている情報だと思う

594NAME IS NULL2017/05/12(金) 22:16:38.19ID:???
schema.ini作るの面倒なんだけど、何とかならん?
テキストファイルにはIMEX=1も効かないし。

595NAME IS NULL2017/05/12(金) 23:05:00.31ID:???
>>594
ローカルにdb入れて使う

596NAME IS NULL2017/05/14(日) 16:37:12.49ID:TZtMkQGv
すみません、質問よろしいでしょうか

SELECT name,max(no)
from test;

これがエラーになるんですが何がいけないんでしょう?
noの最大値を持つ行のnameが知りたいだけなんですが……

597NAME IS NULL2017/05/14(日) 17:21:20.77ID:???
SELECT name, no FROM test WHERE no = (SELECT max(no) FROM test)

こうかな

598NAME IS NULL2017/05/14(日) 21:10:45.84ID:sz1S3gQK
>>596
group by name

を付ける

599NAME IS NULL2017/05/15(月) 11:10:24.32ID:???
>>597さんのがまさに求めていたものでした!
whereかhavingで迷ってたんですがwhereだったんですね!
>>598さんも本当にありがとうございました!

600悪質オンラインショップ2017/05/15(月) 13:56:08.35ID:YIXunVhi
サイズ違いの商品を送り 返品交換できない 悪質商法 ****E  
   
サイズ違いの商品を送り 返品交換できない 悪質商法 B**

悪質オンラインショップ



担当者が悪質か

2回目のでんわたんとう窓口は すりかえようで いみふにごまkして 

----------------------------------
**** *** オンラインショップのアイテムは独自の方法により採寸しておりますので、
全て実際の商品を計測した実寸サイズとなっております。
ご注文いただいております商品サイズは、正しいものでございます。

誠に恐れ入りますが、サイズが合わない、イメージと異なるといったご理由での
ご購入商品の返品・交換はお断りさせていただいております。

お客様のご希望にそう事が出来ず誠に申し訳ございませんが、
何卒ご了承の程よろしくお願い申し上げます。

----------------------------------

24いんちって Mですか? WEBの説明と実際の商品が違う

601NAME IS NULL2017/05/15(月) 14:06:06.42ID:???
https://ccj.kokusen.go.jp/counterfeit/

悪質な通販サイトにご注意!|消費者庁越境消費者センター

602NAME IS NULL2017/05/15(月) 14:13:01.96ID:YIXunVhi
ろせぶd

603NAME IS NULL2017/05/15(月) 14:18:27.55ID:YIXunVhi

604NAME IS NULL2017/05/15(月) 22:04:09.83ID:???
今の会社があまりにもくだらなくて転職のためSQL覚えたい
今はExcelで簡単なVBA書いてる
独学でもどこかにまず入れるだろうか…
それとPostgreSQLとMySQLとどちらがいいのか教えてください

605NAME IS NULL2017/05/15(月) 22:20:38.67ID:???
>>604
安心して
いま四種類同時に使ってるから

606NAME IS NULL2017/05/15(月) 22:22:08.36ID:???
4種類、じゃ全部視野に入れます
4つ教えてください

607NAME IS NULL2017/05/15(月) 22:42:51.61ID:???
標準SQLを覚えるならOracle Express Editionを入れて
alter session set flagger=entry; とか

608NAME IS NULL2017/05/15(月) 22:52:26.19ID:???
>>606
oracle
srl server
mysql
postgres

609NAME IS NULL2017/05/15(月) 22:55:33.47ID:???
DB2も入れてやれ
Express-Cっていう無償のエディションもあるぞ

610NAME IS NULL2017/05/15(月) 23:16:49.66ID:???
>>607>>608>>609
ありがとうございます!
もうVlookupひとつしか使えない人たちに便利屋扱いされたうえに勝手な都合でくだらない作業詰め込まれるのはゴメンです
最初から綺麗に無駄なく作っておけばいいのに…
でもそれを更に汚くしたのは短期で来た素人自称プログラマ
VBAばかり走らせて荒っぽい処理してエラー残骸があちこちあったり重複ばかりのファイルを量産してった
プログラム覚えてもああいう仕事は絶対したくないと思う
取っ掛かりとしてSQL覚えてその次Pythonとかも覚えたいです
絶対今のところ抜け出してやる

611NAME IS NULL2017/05/15(月) 23:19:03.11ID:???
>>610
がんばれー

612NAME IS NULL2017/05/15(月) 23:22:55.48ID:???
>>611
はい!
ありがとうございます

613NAME IS NULL2017/05/16(火) 17:20:38.68ID:zTCyNjTh
すいません、質問させてください。
mySQLとSequel Proを使ってテーブルまで作成しています。

レコード登録時に、2つのIDをくっつけて
3つめのIDをSQL内で自動生成したいのですが、
何か効率的な方法はありますでしょうか。

ID1: 100(手入力)
ID2: 101(手入力)

ID3: 100101(自動生成)

データ型はいずれもINTで設定しております。
よろしくお願いします。

614NAME IS NULL2017/05/16(火) 17:56:29.93ID:???
>>613
それ、2行登録したら1行自動生成するってこと?

615NAME IS NULL2017/05/16(火) 18:36:37.93ID:+kwvKlmq
>>613
行列、列行なのかわからない聞き方だが、それが列、カラムだと想定すると、トリガーでも作らないとできないだろうな。

同じレコードのカラムから導出したデータを別カラムで持つのも馬鹿っぽい。

しかも数値型を連結するなら、いったん文字型に変換しないといけない。

なんでそんなことをしたいのか。ID3なんてビューを作ってみせればいいんじゃないの?

616NAME IS NULL2017/05/16(火) 18:56:41.08ID:zTCyNjTh
>>614
>>615
すいません、DBわかってなくて失礼しました。

ID1 ID2 ID3 name
100 101 100101 hoge
101 201 101201 fuga

ID1とID2を繋げて、ID3を生成したかったです。
プライマリキーとは別に、識別用としてのユニークなIDが必要なので。
単純に繋げるには、文字列でやらないとダメみたいですね。
ありがとうございます。

617NAME IS NULL2017/05/16(火) 18:57:13.28ID:???
ID2が2桁の時どうするの?
ID1と2と3は同じレコードのカラムなの?
手入力ってINSERT文書くの?

618NAME IS NULL2017/05/16(火) 18:59:58.53ID:???
lpad()で0埋めしてcontat で連結して castで数値にする手もあるけど
実行時に必要ならビューでいいよね

619NAME IS NULL2017/05/16(火) 19:14:46.64ID:zTCyNjTh
>>617
ID1, 2は3桁のものしか用意しないので基本的には問題ないかと。
すべて同じレコードのカラムですね。
先に手入力と書きましたが、実際はほぼクライアントツールの
インポート経由で登録になります。

>>618
ビューってのがあるんですね、調べてみます。

ありがとうございます。

620NAME IS NULL2017/05/16(火) 23:30:43.64ID:K44u4O+q
>>619
3桁で計算もしないなら、データ型が数値型なのは変だよ。

621NAME IS NULL2017/05/17(水) 06:52:26.40ID:???
>>620
お前の根拠もない意見なんて聞いてねえから

622NAME IS NULL2017/05/17(水) 11:53:42.80ID:GIMFSdsg
>>621
初心者は数字は数値と思い込むのはよくあることだろ。

623NAME IS NULL2017/05/17(水) 12:21:15.28ID:???
なんの禅問答やそれ

624NAME IS NULL2017/05/17(水) 12:26:07.45ID:???
何でこんなに質問外の話を夢中になって始めるか、理解出来ない

625NAME IS NULL2017/05/17(水) 12:33:06.84ID:???
>>624
初心者は質問内は質問外と思い込むのはよくあることだろ。

626NAME IS NULL2017/05/17(水) 21:02:17.08ID:???
>>619
どちらも数値で桁数が3桁固定なら、ID1 * 1000 + ID2でどうだろうか

627NAME IS NULL2017/05/18(木) 10:55:50.15ID:???
number(string(id1) || string(id2))

628NAME IS NULL2017/05/20(土) 07:59:43.67ID:Y78/Agfu
insert時かselect時に導出すればいいようなものをなんで別カラムで持ちたがるのか、理由をまったく言わないからなw

629NAME IS NULL2017/05/21(日) 00:12:32.34ID:???
新ギャグ考えたので聞いてください。

ななこSQL

630NAME IS NULL2017/05/21(日) 12:07:06.78ID:oc3Ojy/D
>>629
おっさん乙

631NAME IS NULL2017/05/21(日) 19:24:12.15ID:9z61e5/E
何がギャグなのか、誰か解説頼む

632NAME IS NULL2017/05/21(日) 19:31:42.54ID:oc3Ojy/D
>>631
ななこSOS

633NAME IS NULL2017/05/21(日) 23:20:12.41ID:???
マジレスしてくれた人、ありがとう

うううむ

634NAME IS NULL2017/05/22(月) 22:48:44.88ID:???
SELECT column1,column2,column3
FROM table123
WHERE column1 like '%hoge%' OR column2 like '%hoge%' OR column3 like '%hoge%'

こういうクエリがあるんですが
column1〜3で2つのキーワードのAND検索をしたい場合どう書けばいいのでしょうか?

SELECT column1,column2,column3
FROM table123
WHERE (column1 like '%hoge%' AND column1 like '%drz%')
OR (column2 like '%hoge%' AND column2 like '%drz%')
OR (column3 like '%hoge%' AND column3 like '%drz%')
以下のように書いたのですが検索できませんでした
またもっとシンプルに書く方法があれば教えてください

635NAME IS NULL2017/05/23(火) 11:32:21.57ID:???
そもそも
>(column1 like '%hoge%' AND column1 like '%drz%')
同じc1カラムにhogeとdrzの両方があるもの、というのはあってるの?

636NAME IS NULL2017/05/23(火) 12:27:04.39ID:???
失礼しました、よく考えたら違いました
column1〜3でhoge、drzとあればいいんです
column1にhogeとあってcolumn2もしくは3にdrzとあるものを抽出したいのです

WHERE ((column1 like '%hoge%' OR column1 like '%drz%') AND (column2 like '%hoge%' OR column2 like '%drz%'))
OR ((column1 like '%hoge%' OR column1 like '%drz%') AND (column3 like '%hoge%' OR column3 like '%drz%'))
((column1 like '%hoge%' OR column1 like '%drz%') OR (column2 like '%hoge%' OR column2 like '%drz%'))
すごく長いですがこんな感じなのでしょうか?
もっと綺麗にかけないのでしょうか?

637NAME IS NULL2017/05/23(火) 12:29:44.29ID:???
RDBMS何?
正規表現使えるやつならかなり短くできるけど、、
標準でもなんとかなるかな、長くてまだよく見てないw

638NAME IS NULL2017/05/23(火) 12:34:54.13ID:???
まだやりたいこと読み切ってるわけじゃないが
ANDの部分をサブクエリにすれば同じ検索を2回書かなくて済みそうだね

639NAME IS NULL2017/05/23(火) 13:50:09.05ID:???
>>636
それだとhogeしかない場合でもマッチしてしまうんじゃないか?

640NAME IS NULL2017/05/23(火) 18:50:28.38ID:???
 where column1 || column2 || column3 like '%hoge%'
 and column1 || column2 || column3 like '%drz%'
でいいと思う(|| はDBごとに適切な文字列連結演算子に読み替えて)

部分一致じゃあどのみち普通のインデックスは使えないし
速度を出したいならちゃんとした全文検索機能のあるDBを使うべき

641NAME IS NULL2017/05/23(火) 20:05:04.58ID:???
>>634
WHERE column1 + ',' + column2 + ',' + column3 like '%hoge%' and column1 + ',' + column2 + ',' + column3 like '%drz%'

642NAME IS NULL2017/05/23(火) 20:07:29.14ID:???
>>640
それ column1 = 'ho', columu2 = 'ged', column3 = 'rz' でヒットしちゃうぞ

643NAME IS NULL2017/05/23(火) 20:11:47.84ID:???
>>642
連結する時に適当なセパレータ文字を挟めばいいやん。

644NAME IS NULL2017/05/23(火) 22:05:46.88ID:???
>>636
そういうもの。
対象のカラムやキーワードの数が変わっても困らないような動的クエリの仕組みに頭を使った方がいい。

645NAME IS NULL2017/05/23(火) 22:19:24.15ID:zLCGMc7G
>>644
そもそもデータモデルがおかしいだろw

646NAME IS NULL2017/05/23(火) 23:28:42.12ID:???
もしcolumn1/2/3が相互に交換可能なのだとしたら第一正規形ではないことになるが、
>>636だけからはデータモデルがおかしいと断言はできんだろう。

647NAME IS NULL2017/05/24(水) 05:27:57.36ID:LjZe7sN5
no existか積集合演算子でできるが、このSELECT文がメインだったらデータモデルがおかしい。

648NAME IS NULL2017/05/24(水) 06:45:47.07ID:???
データモデル厨は要らんよ
まあケチ付けたいだけなんだろうけど

649NAME IS NULL2017/05/24(水) 19:01:22.36ID:???
フィールドを>>640みたいに|| で文字列連結するのって、内部で何が起こってるんですか?
ORより速いんですかね?
ORより積極的に使った方がいいですか?

650NAME IS NULL2017/05/24(水) 20:52:05.26ID:???
>>649
使ってみてください

651NAME IS NULL2017/05/24(水) 22:34:09.99ID:???
内部で何が起こってるのかを気にする必要がないのがSQLの良いところやで
実行速度が気になるんだったら自分で目的に最適化したDBを作ったほうが速い

652NAME IS NULL2017/05/24(水) 23:07:44.65ID:???
まあそれは建前であって実際のところは内部動作もある程度知っていないと
使い物にならないことも多いからねえ
自動チューニング的な機能があったとしても
その機能自体がどのように動くのか知らないとやっぱり上手く使えなかったり

653NAME IS NULL2017/05/24(水) 23:09:38.05ID:???
>>641
返信遅くなってしまいすいません
文字列を連結させてればいいんですね、やってみます

654NAME IS NULL2017/05/25(木) 15:59:00.46ID:v+Ze25qa
>>649
内部ではいったんそういう表が作られて、それを検索している。

655NAME IS NULL2017/05/25(木) 16:53:17.38ID:???
>>649
それぞれのカラムにインデックスがある場合。

まず、文字列を連結するとインデックスは使われません。
ORを使うと、全件検索(テーブルスキャン)よりもインデックスを使う方が速いと判断されれば
インデックスが使われます。

なので、ORが使えるならORを使うのがよいです。

さらに言うと、完全一致検索(hoge = 'aaa')と前方一致検索(hoge like 'aaa%')はインデックスが
使われますが、それ以外の場合(hoge = 'aaa%', hoge = '%aaa%')では、普通はインデックスは
使われません。(データベースの種類によっては、特殊なインデックスを作れるものもある)

656NAME IS NULL2017/05/25(木) 17:01:24.94ID:v+Ze25qa
変なのがわいた

657NAME IS NULL2017/05/25(木) 17:05:31.36ID:???
>>654の方が変だがなw

658NAME IS NULL2017/05/25(木) 17:06:50.40ID:v+Ze25qa
>>657
ではどのように処理しているのかご教示を。

659NAME IS NULL2017/05/25(木) 17:24:42.89ID:???
プランナーが全てそうやってるわけじゃねーだろ

660NAME IS NULL2017/05/25(木) 17:28:46.76ID:???
>>658
ループしつつ文字列比較でフィルタリングでしょ
一時テーブルなんか作るメリットゼロ

661NAME IS NULL2017/05/25(木) 17:30:15.75ID:???
誰が言ってる事が正しいのですか?

662NAME IS NULL2017/05/25(木) 17:37:48.37ID:???
>>661
一部を除いてみんな正しい

まとめると、
・レコード数が少ないなら文字列結合してLIKE検索しろ >>641
・ORと文字列結合を比較するなら、ORの方がインデックスが使われるという面で優れている
・ただしLIKE検索の場合は、前方一致のみインデックスが使われる(普通は)
・普通じゃない方法は、データベース毎に異なる(フルテキスト検索用インデックスを作ったりとか)

663NAME IS NULL2017/05/25(木) 19:53:09.48ID:???
DBはMariaDBです
issueテーブルとissueConnectionテーブルがあります
こんな風にして、階層化された複数のイシューが連なる設計です(・・・あまり設計よくないかもです)

■issue
ID
(以下略)

■issueChildren
ID
issueID
childIssueID


あるイシューの子イシューを取得したい場合、たとえば100番の子イシューであれば

SELECT * FROM issue INNER JOIN issueChildren ON issue.ID = issueChildren.ID
WHERE issueChildren.issueID = 100;

でいいと思うのですが、孫まで含めてクエリーで取得したい場合はどうすればいいのでしょうか?
要件では子と孫まででOKで、ひ孫からは不要らしいです。

664NAME IS NULL2017/05/25(木) 20:32:38.12ID:???
孫まででいいならissueChildrenをもう一回JOINするだけ
末代まで辿りたいなら再帰問合せ

665NAME IS NULL2017/05/25(木) 20:39:25.01ID:???
もしかしてループってるかもしれないからチェックいるね

666NAME IS NULL2017/05/25(木) 23:03:02.92ID:???
>>664
具体的にどう書けばいいですか?

>>665
それはデータ的にはないようです

667NAME IS NULL2017/05/25(木) 23:49:12.89ID:???
>>666
実際にないなら良いんですけど
テーブル定義はそれを排除している訳ではないので

668NAME IS NULL2017/05/27(土) 18:40:58.87ID:???
SQL ServerにはなんでTRIMが無いの?

669NAME IS NULL2017/05/27(土) 19:48:28.08ID:EQg2arXb
>>668
さあね、RTRIM、LTRIMがあるからとりあえずいいだろうということなんだろ。

670NAME IS NULL2017/05/30(火) 23:02:19.60ID:???
LTRIMって、やっぱエルトリム?
それともリトリム?
俺はどっちでもいいと思うんで、
どっちでもいいと思うんだけど。

671NAME IS NULL2017/05/30(火) 23:20:48.04ID:???
テメェの好きなように呼べば良いだろ阿呆

672NAME IS NULL2017/05/30(火) 23:21:49.27ID:???
リトリムだとRTRIMもリトリムになるし...
巻き舌とかで区別する?w

673NAME IS NULL2017/05/30(火) 23:28:29.98ID:???
右トリム、左トリムで

674NAME IS NULL2017/05/31(水) 19:18:26.54ID:HpzcWkU1
レフトリ、ライトリってうちだけかよ

675NAME IS NULL2017/05/31(水) 20:17:10.89ID:+YoAe/ot
俺はアールトリム、エルトリムと呼んでいる。

676NAME IS NULL2017/05/31(水) 21:48:51.15ID:???
僕はシリコンバレーだけど、
エルティーアールアイエムって呼んでる

677NAME IS NULL2017/05/31(水) 22:57:35.60ID:???
うちのかあちゃん、
TRFを無理矢理トリフって読んだぞ。

678NAME IS NULL2017/05/31(水) 23:18:05.78ID:???
SQLserver入れた
まずなにやろう

679NAME IS NULL2017/06/01(木) 07:34:14.86ID:h3o9bmsv
>>678
アンインストール

680NAME IS NULL2017/06/01(木) 08:17:33.40ID:???
>>679
全く同じことを思った
結婚しようか

681NAME IS NULL2017/06/01(木) 14:22:43.80ID:???
最強に性格悪い夫婦

682NAME IS NULL2017/06/01(木) 23:03:30.83ID:???
♪いぃぃいぃぃいぃいぃぃぃいぃぃぃぃー

683NAME IS NULL2017/06/06(火) 22:32:19.81ID:???
伝票ID、顧客名、売上金額、売上月というテーブルがあるとします
顧客毎の各売上月の合計を問い合わせしたい場合どうすればいいのでしょうか?
売上月、顧客名、合計金額という風に出したいですが、一つ一つ顧客名毎に問い合わせするしかないのでしょうか?

684NAME IS NULL2017/06/06(火) 22:44:19.91ID:???
group by

685NAME IS NULL2017/06/06(火) 23:17:47.18ID:2nFS6UGQ
>>683
それぞれの顧客に電話して聞くしかないな。

686NAME IS NULL2017/06/06(火) 23:49:15.89ID:???
select `顧客名`,`売上月`,sum(`売上金額`) as `合計金額` from TABLE
group by `顧客名`,`売上月`;

687NAME IS NULL2017/06/07(水) 06:22:26.56ID:WkwCrNcL
アポストロフィ?

688NAME IS NULL2017/06/07(水) 08:10:36.51ID:???
MySQL

689NAME IS NULL2017/06/09(金) 03:38:40.83ID:LAO2WyDa
バッククオートでないの?

690NAME IS NULL2017/06/12(月) 03:22:13.66ID:???
アゲイン

teradataの識者いる?

691NAME IS NULL2017/06/12(月) 12:54:09.35ID:???
SQLの神さま、み教えを!

二つのテーブルを比較し、複数項目(7項目)の値が全て合致した行の
1項目をアップデートをしたいのですが、長ったらしいSQLになってしまいます。

シンプルな記述で実現する方法は、ありますでしょうか?!

お願いします!

692NAME IS NULL2017/06/12(月) 12:54:49.15ID:RxG+k+1Y
m(_ _)m
お願いします!

693NAME IS NULL2017/06/12(月) 16:30:14.35ID:???
長ったらしくならないので下手なことをせずそのままがいいように思う

694NAME IS NULL2017/06/12(月) 19:09:30.01ID:???
Oracleだと
 where (a1, a2, ...) = (b1, b2, ...)
みたいに書けちゃうけどまあ普通は
 where a1 = b1 and a2 = b2 and ...
しかないな

695NAME IS NULL2017/06/12(月) 20:54:47.97ID:???
>>694
文字列にして連結して比較する作戦はどうかな?

696NAME IS NULL2017/06/12(月) 21:39:05.03ID:???
>>694
それNULL=NULLをどうするのかで問題がでる
NULLの項目があってそれをまじめに考えたら
結構長ったらしくはなる

697NAME IS NULL2017/06/12(月) 21:49:53.25ID:???
SQL Serverです。

商品No 価格1 価格2 価格調整コード 調整価格
10000 1,000 1,100 001     200
10000 1,000 1,100 002    100
10000 1,000 1,100 003    100
12000 600 700 001    50
13000 800 850 001    100
13000 800 850 003    50

価格調整コードが'001'か'002'の場合は、
調整価格を価格1に加算し、
価格調整コードが'003'の場合は、
調整価格を価格2に加算する。
その結果を、商品Noから一意で取り出せるビューにしたい。

※イメージ
商品No 価格1(調整後) 価格2 (調整後)
10000 1,300 1,200
12000 650 700
13000 900 900

これをSQLだけで作ろうとしているのですが、無理でしょうか。

698NAME IS NULL2017/06/12(月) 21:51:57.07ID:???
case when 価格調整コード = '001'などを入れて、
下記のようにしてみました。

商品No 価格1 価格2 価格調整コード 調整価格 001価格 002価格 003価格
10000 1,000 1,100 001 200 200 NULL NULL
10000 1,000 1,100 002 100 NULL 100 NULL
10000 1,000 1,100 003 100 NULL NULL 100
12000 600 700 001 50 50 NULL NULL
13000 800 850 001 100 100 NULL NULL
13000 800 850 003 50 NULL NULL 50

これを、001価格〜003価格のNULLの部分を統合して、
1行で表示できるイメージでもよいです。
※イメージ
商品No 価格1 価格2 価格調整コード 調整価格 001価格 002価格 003価格
10000 1,000 1,100 001 200 200 100 100
12000 600 700 001 50 50 NULL NULL
13000 800 850 001 100 100 NULL 50

プログラムができないため、SQL Management Studioで
SQLだけうって表示できればと思っています。

699NAME IS NULL2017/06/12(月) 22:50:34.48ID:???
>>697
>商品Noから一意で
それ、元価格が複数あったりしたらどうするんだよ

とりあえずそのデータでなら
select distinct
商品No,
価格1 + (select ISNULL(SUM(調整価格),0) from テーブル where 商品No=t.商品No and 価格調整コード in ('001','002')) as [価格1(調整後)],
価格2 + (select ISNULL(SUM(調整価格),0) from テーブル where 商品No=t.商品No and 価格調整コード in ('003') ) as [価格2(調整後)]
from テーブル t

で行けるんじゃね

700NAME IS NULL2017/06/13(火) 12:58:54.35ID:???
>>695
セパレータつけないと
'abc', 'de' と 'ab', 'cde' が一致しちゃう
絶対に値に含まれないセパレータがあるならいいけど

701NAME IS NULL2017/06/13(火) 13:14:09.59ID:???
>>697
「イメージ」じゃなくて、そのデータの完全な結果を示せ

702NAME IS NULL2017/06/13(火) 18:50:57.76ID:???
>>697
まだ設計変えられるんだったら、正規化した方がいいかもよ

703NAME IS NULL2017/06/13(火) 22:19:04.42ID:???
また意味不明な「正規化」

704NAME IS NULL2017/06/13(火) 22:59:33.06ID:???
結合した結果を表示してるのかもしれないし、そこはなんとも。

>>703
意味不明なの?

705NAME IS NULL2017/06/13(火) 23:11:18.91ID:yhROQb+J
無理だと思ったらなんだって無理なんだよ
聞くならせめて「可能でしょうか」と聞け

706NAME IS NULL2017/06/14(水) 07:04:12.48ID:???
> 意味不明なの?
>>703 には
ってことでしょ
>>699
> それ、元価格が複数あったりしたらどうするんだよ
を見たら普通正規化しろって思うと思うがまあここ初心者スレだから

707NAME IS NULL2017/06/14(水) 07:44:23.00ID:???
>> それ、元価格が複数あったりしたらどうするんだよ
>を見たら普通正規化しろって思うと思うがまあここ初心者スレだから

それはクエリの話であって正規化とは全然関係ないな。

708NAME IS NULL2017/06/14(水) 08:10:11.20ID:???
>>699
ありがとうございました。これでできました!
元価格はひとつです。
いろいろご意見ありがとうございます。
最近勉強始めたもので、正規化などこれから勉強中です。

709NAME IS NULL2017/06/14(水) 08:19:49.45ID:???
>>707
> それはクエリの話であって正規化とは全然関係ないな。
全く理解してないのがよくわかる秀逸なレスだな w

710NAME IS NULL2017/06/14(水) 08:44:04.31ID:???
価格1 価格2 というカラム名だけ見て脊髄反射で
「第一正規形じゃない」と思い込んじゃったんだろう。

711NAME IS NULL2017/06/14(水) 10:47:57.31ID:???
>>710
商品テーブル: {商品No}, 価格1, 価格2 ({ }はPK)
調整価格テーブル: {商品No, 調整コード}, 調整価格

ってことじゃないの?ってことだろ

712NAME IS NULL2017/06/14(水) 12:18:18.14ID:22bTQ0Ls
SQLの神さま!
非正規化テーブルから
正規化テーブル1、正規化テーブル2へ
同時にインサートする時に、
正規化テーブル1、2それぞれに同じ連番を振りたいのですが、
シンプルな方法はありますでしょうか?

ちなみに連番フィールドは、主キーです。

713NAME IS NULL2017/06/14(水) 12:47:47.15ID:egtOOHVa
また意味不明な「非正規化」

714NAME IS NULL2017/06/14(水) 12:54:14.62ID:???
>>710
アホすぎる w

>>711
だよね

715NAME IS NULL2017/06/14(水) 13:35:44.32ID:???
>>712
シンプルな方法を聞く前に、データベース設計の入門書をまず嫁

716NAME IS NULL2017/06/14(水) 18:10:33.42ID:???
>>712
RDBMSによると思うので使ってるもの書いてくれ

717NAME IS NULL2017/06/15(木) 00:18:57.91ID:/yb/PIsQ
質問ですが
カラムに  
[年齢]、[種別]、[時間]
があったとした場合に  [時間] の最新の100件だけを対象に合計、平均を出したいと思っています。
↓ に何を追加したら何を追加したらいいでしょうか?


SELECT SUM(年齢) AS 年齢の合計 , AVG(年齢) AS 年齢の平均 , 種別
FROM 従業員マスタ
GROUP BY 種別

718NAME IS NULL2017/06/15(木) 00:36:32.81ID:???
fromを、limitとかoffsetとか使ったサブクエリにすれば良いんじゃね

719NAME IS NULL2017/06/15(木) 00:56:23.31ID:/yb/PIsQ
>>718
limit と offsetを使ったら簡単にできそうですね。
まったく知らなかったので助かりました。ありがとうございました。

720NAME IS NULL2017/06/15(木) 01:11:37.26ID:???
年齢の合計というのは、始めて見たw

721NAME IS NULL2017/06/15(木) 12:13:49.76ID:???
年齢なんか合計してどうすんだ?年齢層を知りたいなら平均で判りそうなもんだが

722NAME IS NULL2017/06/15(木) 12:21:39.87ID:???
意味のない数字出力すんなや

723NAME IS NULL2017/06/15(木) 12:27:45.10ID:6L/hThIQ
1000歳野球みたいなのあるだろ無知どもめ

724NAME IS NULL2017/06/15(木) 12:33:50.82ID:???
対抗戦のチームで年齢合計を条件にすることありそうなw

725NAME IS NULL2017/06/18(日) 12:30:04.24ID:???
SQL serverはマイクロソフトのデータベースだよね?
ただSQLっていったら何になるのでしょうか??

726NAME IS NULL2017/06/18(日) 12:49:53.61ID:???
>>725
iee

727NAME IS NULL2017/06/18(日) 13:26:42.08ID:CR3oQu8v
>>725
リレーショナルデータベース製品のことを言っているなら、SQL Serverを「SQL」と呼ぶ人間もいるし、MySQLのことをただ「SQL」と呼ぶ人間もいる。

どちらの略し方もお勧めしない。

728NAME IS NULL2017/06/18(日) 14:37:13.30ID:c1GtVOfY
製品名が「SQL」が入ってるんだからどちらも自然な略し方じゃないか
他人の略し方をとやかく言うな

729NAME IS NULL2017/06/18(日) 14:39:54.44ID:???
すごい混乱するんだよね
ちゃんとまだ理解してないから
SQLserverからSQL文でデータを抽出するって自分は思ってるけど違う
またはSQLserverからMysqlを使ってデータを取得する、とか

混乱のポイントはSQLserverをデータベースじゃなくてMysql とかPostgresqlと並列で捉えて話している人とコミニュケーション取っていること

途中で頭混乱して何がなんだかわからなくなる

まとめると
SQLserverやOracleはデータベース名
ゆえにプログラミング言語じゃない、でいいかな?

730NAME IS NULL2017/06/18(日) 14:40:13.37ID:???
オラクルはSQLではありません

731NAME IS NULL2017/06/18(日) 14:40:42.48ID:???
SQLserverからSQL文でデータを抽出するって自分は思ってるけど違う?

疑問形でした

732NAME IS NULL2017/06/18(日) 14:41:31.60ID:???
>>730
ORACLEはデータベースで、という意味であえてSQLserverと並べたんだけど

733NAME IS NULL2017/06/18(日) 14:42:36.34ID:???
どなたかすっきりと正しい定義を書いてもらえないでしょうか?
検索してもそれぞれ少しずつ違い混乱してる…

734NAME IS NULL2017/06/18(日) 14:48:25.61ID:???
>SQLserverからMysqlを使ってデータを取得する、とか

何言ってんだ?

735NAME IS NULL2017/06/18(日) 14:49:42.60ID:c1GtVOfY
「sql server」
SQLを理解するインタープリターサービスを提供するサーバー型アプリケーションの総称

「SQL Server」
Microsoft社が製造・販売を行なうRDBMS製品

736NAME IS NULL2017/06/18(日) 14:50:03.28ID:???
>>732
正確にはDBMS

737NAME IS NULL2017/06/18(日) 14:52:39.53ID:???
>>734
だからじゃあ訂正してよ

738NAME IS NULL2017/06/18(日) 14:54:52.55ID:???
>>737
はぁ?

SQLserverからsqlを使ってデータを取得する
だったら判るよ
MySQLはまた別個のRDBだろ?お前馬鹿?

739NAME IS NULL2017/06/18(日) 14:55:58.98ID:???
>>737
訂正しようがないわwww

740NAME IS NULL2017/06/18(日) 14:56:32.05ID:???
>>735
じゃあデータベース自体は他にあると思っていいの?

741NAME IS NULL2017/06/18(日) 14:57:26.82ID:???
煽るだけでスマートな答え方しない人は説明できないんでしよ?

742NAME IS NULL2017/06/18(日) 14:59:10.94ID:???
>>740
「データベース」ってのはただのデータの集合を示す概念

743NAME IS NULL2017/06/18(日) 15:00:38.35ID:???
じゃあ
RDBMSという括りの中に並列して
SQLserverもMySQLもpostgresqlもあると思っていいんでしょ?

744NAME IS NULL2017/06/18(日) 15:00:44.29ID:c1GtVOfY
>>740
データベースとは読んで字のごとくデータの事でありソフトウェアはあくまでもデータベースを利用・管理するためのものだけど?
「テキストファイルで作文書く」って変だろ?

745NAME IS NULL2017/06/18(日) 15:01:08.28ID:???
>>743
そう

746NAME IS NULL2017/06/18(日) 15:04:24.01ID:???
>>742
わかった
データベース自体はなんとかってメーカー名とかはつかないってこと?

747NAME IS NULL2017/06/18(日) 15:05:47.86ID:???
>>745
わかった
ありがと
全部それぞれ親戚だけど少しずつ違う言語と思えばいい?

748NAME IS NULL2017/06/18(日) 15:09:00.26ID:???
うちの会社はデータベースに独自の名前つけてるからそれがメーカー名製品名なのかと思ってたんだ
でもその大元がoracleでそれを企業用カスタマイズしてて、だからoracleがデータベースというのかと思ってた
それと同じにms SQLserverも考えてた

749NAME IS NULL2017/06/18(日) 15:10:06.01ID:???
そのレベルの話ならここで質問するよりWikipediaとかで調べた方が
嫌な気分にならなくてお互いハッピーだと思うぞ。

750NAME IS NULL2017/06/18(日) 15:10:55.49ID:???
>>747
ごちゃごちゃ考える前になんで入門書の一つも読もうと思わんの?

751NAME IS NULL2017/06/18(日) 15:14:21.08ID:???
そう思ってとりあえず本も買ったんだけど、そもそものところに帰ってきた
wikiも読んだ
けど会社で説明受けてまた混乱してきて
たぶんいろいろ略してる人で

ちょっと余談だけど、どうもソートを抽出の意味で使ってくるんだよ
Excelでもオートフィルタでデータ絞る時にソートして、って言ってくる
はーっ???となる
ソートは並べ替えだろ?

もう説明がめちゃくちゃで脳内変換しながらですげー疲れる

752NAME IS NULL2017/06/18(日) 15:16:38.99ID:???
ちょっと不安になってきたんだけど
どう考えたって
ソート=並べ替え
でオートフィルタで絞ることじゃないよな?
もう当たり前過ぎて聞いてて馬鹿馬鹿しくなるんだけど、その人に仕事教わった人はみんなフィルタ機能をソートするって言うんだよ
自分ひとり、はっ??となって
あまり続くと自信なくなってくる

753NAME IS NULL2017/06/18(日) 15:17:36.29ID:???
>>746
データベース(データの集合)を扱うためのソフトウェアがDBMS。これがOracleとかSQL server。

754NAME IS NULL2017/06/18(日) 15:17:53.28ID:???
まぁ用語の使い方がデタラメな連中が多くて混乱するってのは同情するけどさw

755NAME IS NULL2017/06/18(日) 15:19:24.04ID:???
>>753
うん
わかってきた
ありがと

756NAME IS NULL2017/06/18(日) 15:19:41.45ID:???
>>747
それぞれのDBMSで使うSQLはSQL標準に準拠してはいるんだけど、DBMSによって多少方言はある

757NAME IS NULL2017/06/18(日) 15:20:45.99ID:???
脳内変換してるんだけど、いつか変換しなくてよかったのにー的間違いしそうで疲労がすごい

758NAME IS NULL2017/06/18(日) 15:23:46.13ID:???
>>756
おけ
ここらへんになれば確かに買った本に書いてある通りだ

これ買った
https://www.amazon.co.jp/SQL-第2版-ゼロからはじめるデータベース操作-プログラミング学習シリーズ-ミック/dp/4798144452

759NAME IS NULL2017/06/18(日) 15:24:21.77ID:???
リンク失敗…

760NAME IS NULL2017/06/18(日) 15:29:41.60ID:???
は?と思ったそのときにどういう意味か確認すりゃいいのに。

一応プログラミングじゃソート=並べ替えが普通だけど、一般には分類、選別っていう意味もあるからな。

761NAME IS NULL2017/06/18(日) 15:36:24.83ID:???
>>760
んーできてたらするんだけどさ
できない空気なわけで…

そう広義では近しいから突っ込みにくい
けど明らかに絞りなんだよな…
はぁーどっかでしれっと質問するわ

762NAME IS NULL2017/06/18(日) 15:47:05.51ID:???
教えてくれた人ありがとです

763NAME IS NULL2017/06/18(日) 16:11:11.16ID:???
お願いあるんだけど、質問する時は、出来るだけアゲて欲しい
そうするとID表示されるので、質問者のレスを追いかけやすい
誰が質問し誰が回答しているか分からなくなるとちょっと困る

764NAME IS NULL2017/06/18(日) 16:43:41.78ID:c1GtVOfY
いつだってアゲアゲでいいじゃんか
むしろなんのためにわざわざさげんだよカス

765NAME IS NULL2017/06/18(日) 18:37:58.39ID:CR3oQu8v
日本マイクロソフトの人間もSQL ServerをSQLと略すやつがいるんだよな。

SQLのことはクエリやコマンドと呼ぶから混乱しないw

766NAME IS NULL2017/06/18(日) 18:49:11.26ID:???
>>765
じゃあどう言うのが望ましい?

767NAME IS NULL2017/06/18(日) 18:52:15.83ID:???
MSSQLかSQL Serverなら混乱しないよね

768NAME IS NULL2017/06/18(日) 18:58:17.03ID:???
>>767
あーなら単にsqlならせめてsql文とかそういうこと?

769NAME IS NULL2017/06/18(日) 19:15:22.29ID:???
上で質問連打してたやつ
誰も決め手を書いてあげないからなかなか納得いかなかったようだが
SQL=言語と言ってあげればいいじゃん
それが日本語なのか英語なのかフランス語なのかそういう違いだって
日本語で卵ちょうだいっていうのと英語で卵ちょうだいは言葉が違うでしょ?って

770NAME IS NULL2017/06/18(日) 19:20:57.60ID:c1GtVOfY
>>769
いやだからSQLはSQL Serverの略だってば

771NAME IS NULL2017/06/18(日) 19:23:00.83ID:???
>>770
だからお主はそのつもりでも
そうじゃないやつがいるから混乱すんだべ
クエリをsqlっていう奴がいるから

772NAME IS NULL2017/06/18(日) 19:32:11.57ID:???
お題
「どなたかSQLを共有してくれますか?」
というメールが流れた
これはなんぞ?

773NAME IS NULL2017/06/18(日) 19:41:05.90ID:???
>>768
単にSQLなら問い合わせ言語のことだなぁ
あえて明示的に区別したいならSQL文だろうけど

データベースを集積されたデータとそれを操作するアプリケーションとで区別したいなら後者をDBMSと言うべきだけど前者は普通にデータベースって言うでしょみたいな

774NAME IS NULL2017/06/18(日) 19:41:40.82ID:c1GtVOfY
>>771
知るか他人のことなんかw
混乱してるなら混乱したままの現状を理解しろよw

775NAME IS NULL2017/06/18(日) 19:43:08.27ID:???
>>772
そいつに聞け。

776NAME IS NULL2017/06/18(日) 19:51:32.23ID:???
正しくはクエリを共有、だよな

777NAME IS NULL2017/06/18(日) 20:04:48.00ID:c1GtVOfY
>>776
それでも意味がわからんのだが?w

778NAME IS NULL2017/06/18(日) 20:11:19.41ID:???
>>777
だからわかんない中で意味を汲み取れよー
なんだろ?w

779NAME IS NULL2017/06/18(日) 20:16:42.99ID:c1GtVOfY
>>778
混乱してる事と元々意味が通らない事では天と地ほどのひらきがあるぞw
そうゆーとこ区別しようなw

780NAME IS NULL2017/06/18(日) 20:25:02.27ID:???
>>779
そりゃ言葉尻だ

781NAME IS NULL2017/06/18(日) 20:25:47.86ID:???
自分では提言しないのなw

782NAME IS NULL2017/06/18(日) 20:32:12.70ID:???
これだけ誰もスッキリ言えないSQLってなんなの?

783NAME IS NULL2017/06/18(日) 20:33:42.04ID:???
>正しくはクエリを共有

まったく意味ワカンネ

784NAME IS NULL2017/06/18(日) 20:47:37.00ID:???
>>782
情けねっす

785NAME IS NULL2017/06/18(日) 20:50:28.83ID:???
まずほんとに自分のも子供も大事にすんなら
2ちゃんなんか見ないだろうからな
見てる時点でクズ

786NAME IS NULL2017/06/18(日) 20:52:14.17ID:???
??

787NAME IS NULL2017/06/18(日) 20:53:15.12ID:FkALiZdC
>>773
DBMSはデータベース管理システムのことだぞ?

788NAME IS NULL2017/06/18(日) 20:57:57.14ID:???
>>787
ナニガダメ??

789NAME IS NULL2017/06/18(日) 21:02:05.50ID:???
>>770
何言ってんのこいつ?

790NAME IS NULL2017/06/18(日) 21:06:47.05ID:???
>>789
だよな
なんか通じないんだよこの人

791NAME IS NULL2017/06/18(日) 21:48:08.56ID:c1GtVOfY
>>789-790
通じるわけないだろお前のオレオレ定義なんかw
普通に勉強してくださいw

792NAME IS NULL2017/06/18(日) 21:50:53.25ID:???
>>791
そっくりそのまま返すわキチガイ

793NAME IS NULL2017/06/18(日) 21:51:11.33ID:???
>>791
普通に勉強してくださいwww

794NAME IS NULL2017/06/18(日) 21:51:31.80ID:???
>>791
顔真っ赤

795NAME IS NULL2017/06/18(日) 21:59:15.47ID:???
ただSQLって言ったらmysql,sqlserver,postgresql他含めそれぞれの言語いうものと思ってきた

SQL=SQLserverとは即ならないんだが…

もちろんSQLserverを用いてる環境で話してるなら別だがこういうとこではすぐにそのMS社製品だけを特定して結びつけないが…

なんかおかしいだろうか?

796NAME IS NULL2017/06/18(日) 22:00:02.21ID:???
>SQLはSQL Serverの略だってば

ドヤ顔でこういうの会社でも言ってんだろーなー

797NAME IS NULL2017/06/18(日) 22:02:37.64ID:c1GtVOfY
どんだけ悔しいんだよw

798NAME IS NULL2017/06/18(日) 22:03:59.22ID:???
>>767
これ正しいね

799NAME IS NULL2017/06/18(日) 22:06:31.73ID:???
>>770
だったらmysqlはsqlとは言えなくなるよ

800NAME IS NULL2017/06/18(日) 22:13:23.84ID:???
>>799
まいしぃーける
こう読んであげて

801NAME IS NULL2017/06/18(日) 22:16:30.31ID:c1GtVOfY
>>799
はあ?MySQLはSQLだろw
なんだよ言えなくなるってw

802NAME IS NULL2017/06/18(日) 22:19:34.10ID:???
>>801
mariaDBは?

803NAME IS NULL2017/06/18(日) 22:23:09.80ID:???
>>801
もういいから消えな

804NAME IS NULL2017/06/18(日) 22:23:24.05ID:???
>>801
おまいさんがこれ言ったからだろ

0770 NAME IS NULL 2017/06/18 19:20:57
>>769
いやだからSQLはSQL Serverの略だってば
ID:c1GtVOfY(5/11)

805NAME IS NULL2017/06/18(日) 22:23:56.05ID:???
>>801
初心者スレやでここは
キチガイは出ていきな

806NAME IS NULL2017/06/18(日) 22:25:01.83ID:???
ID:c1GtVOfY

言ってること支離滅裂になってきてるけどだいじょぶか?
日曜の夜だから酒でも飲んでだいぶ酔ってるんじゃ?

807NAME IS NULL2017/06/18(日) 22:25:38.49ID:???
>>800
おけ

808NAME IS NULL2017/06/18(日) 22:25:53.02ID:c1GtVOfY
>>802
多数派はマリアだろうな
SQL Serverをサーバーと略す一派ならDBと言うかも知れんがw

809NAME IS NULL2017/06/18(日) 22:34:11.44ID:???
>>808
いやおかしいでしょ
SQLserver=SQLって言ってたじゃん
つかw
そううえサーバーっておかし過ぎだよ
DBって…
大丈夫この人?

810NAME IS NULL2017/06/18(日) 22:36:12.41ID:???
>>809
キチガイやで

811NAME IS NULL2017/06/18(日) 22:37:12.92ID:???
お前らのまだ概念とアダ名で
ごちゃごちゃいってるのw

812NAME IS NULL2017/06/18(日) 22:37:36.39ID:???
サーバーはないよな…
ビール??

813NAME IS NULL2017/06/18(日) 22:38:08.71ID:???
>>811
ごちゃごちゃ言ってるのは一人のようだが

814NAME IS NULL2017/06/18(日) 22:38:51.07ID:???
>>808
サーバーwwwウケるwww
とか言えば満足かい?

815NAME IS NULL2017/06/18(日) 22:39:24.19ID:???
>>811
ほんじゃ超初心者に
SQL=SQLserverと指南し
その挙句場合によっては
SQLserverをサーバーと略すってそりゃやべーだろ

816NAME IS NULL2017/06/18(日) 22:41:14.55ID:c1GtVOfY
>>809
知るかよw
どう略すかなんてそいつの感性次第なんだからw
そこにやたら食いつくお前がどうかしてる
現実を受け入れろw

817NAME IS NULL2017/06/18(日) 22:41:59.10ID:???
>>816
うんお前の感性がおかしい

818NAME IS NULL2017/06/18(日) 22:45:50.84ID:???
>>817
こういうのが職場で話通じないやつの実態なんだって見せてもらった気分だよ
いるんだよ、どこまでも平行線なやつ
アイタタ…

819NAME IS NULL2017/06/18(日) 22:47:32.40ID:c1GtVOfY
>>817
つまりお前は他人の感性がおかしく感じるから
自分の感性に合わせろと言いたいのか?
無理だろそんなもんw
てかよくそんな無駄な事にここまで労力使えるなお前w

820NAME IS NULL2017/06/18(日) 22:49:02.07ID:???
>>818
あ、これは>>817への同意な

821NAME IS NULL2017/06/18(日) 22:49:35.07ID:???
>>818
ヤバイよねこいつ

822NAME IS NULL2017/06/18(日) 22:50:21.69ID:???
>>819
顔真っ赤www

823NAME IS NULL2017/06/18(日) 22:52:40.86ID:???
>>819
あんね、オレは817じゃないけど
感性感性ってさ、一応言語で確認する訳なんで通じなかったら意味ないのよ、って
なんでこんな小学生でもわかること説明してんだおいっ
ここはひまわり学級かっ

だったらあんたいきなりエマニュエルの件だけど、って言われてわかるか?

824NAME IS NULL2017/06/18(日) 22:54:04.25ID:c1GtVOfY
色んなやつが居ることを認める事をどうしてここまで悔しがる必要があるのかw
おもしれー奴だなコイツw

825NAME IS NULL2017/06/18(日) 22:54:06.07ID:???
昼間その呼び方で混乱してた初心者
明日会社で恥かくぞ…

826NAME IS NULL2017/06/18(日) 22:54:41.92ID:???
>>824
だからわかんのか答えてみて
エマニュエルの件

827NAME IS NULL2017/06/18(日) 22:55:28.56ID:???
言い方に幅があるからこそ最大公約数で確認してくんだろうが、まったく…

828NAME IS NULL2017/06/18(日) 22:56:13.86ID:???
>>824
答えて、エマニュエルの件

829NAME IS NULL2017/06/18(日) 23:04:32.75ID:???
>色んなやつが居ることを認める事をどうしてここまで悔しがる必要があるのかw

そういうのは共通の言葉が通じた上での話。
あんたはそれ以前

830NAME IS NULL2017/06/18(日) 23:08:48.34ID:???
これじゃわかんないのが人の感性なんだよ
ドナルドって言われたらどこに思考がいく?
マクドナルドか?トランプか?
今なら一瞬考えてトランプだよな
オバマって言われたら一発でわかるよな
だから今はエマニュエルならマクロンなんだよ

おまえさんの言ってんのはその前振りが無い状態で、いきなりエマニュエルの件って言って周りが理解してくれないのを責められて、
んだよっ、マクロンて言えよと突っ込まれても、感性の違いだ、と言い張ってるのと同じなんだよ

831NAME IS NULL2017/06/18(日) 23:09:48.54ID:???
>>828
Aマニュアルは右棚

832NAME IS NULL2017/06/18(日) 23:13:24.00ID:???
>>831
山田くーん、座布団いちまいあげてー

あー、やっぱり持ってっちゃいなさい

833NAME IS NULL2017/06/19(月) 00:25:57.12ID:???
すくなくともこのスレやSQL質疑応答スレで、SQL ServerをSQLと略すような奴の話は
まともに聞いちゃ駄目

感性がまともかどうかは置いとくが
その略しかたでは話が通りにくくなる事が理解できないやつなのは確かだから

834NAME IS NULL2017/06/19(月) 05:38:45.15ID:???
教えて下さい
postgesql 9.3を使っています。

テーブルに
year
month
day
type
data
というカラムが設定されています。

select data from テーブル where year=2017 and month=1 and day=1 and type='a';
select data from テーブル where year=2017 and month=1 and day=1 and type='b';

これを1つの命令で type='a'の時のdata と 'b'の時のdata をまとめて出力したいのですが
どうしたらいいでしょうか?

select type=aのdata , type=bのdata from テーブル where ...

という感じの命令にしたいです
unionというものが使えそうだと思ったのですが、どちらがtype=aのものか判別の仕方がわからなかったです。

835NAME IS NULL2017/06/19(月) 06:00:35.80ID:???
select type, data from テーブル where year=2017 and month=1 and day=1 and (type='a' or type ='b');
じゃダメなのか?

836NAME IS NULL2017/06/19(月) 06:07:09.26ID:yMVixfUz
>>833
そう思うだろ?ところがまともな回答してんも俺だけなんだよなあ

837NAME IS NULL2017/06/19(月) 06:20:33.21ID:???
>>836
このひと つくづくダメな人みたい

838NAME IS NULL2017/06/19(月) 06:37:08.99ID:gwyUxO6k
>>834
なんのためのSQLなのか言ってくれ。

839NAME IS NULL2017/06/19(月) 07:51:05.01ID:yMVixfUz
>>837
俺をダメ認定するのはお前の勝手だけどそれでお前の能力が上がるわけでもないぞ?
むしろ自己満足のために周囲の評価は下がる方向だけどいいんかそれで?w

8408342017/06/19(月) 08:03:49.33ID:???
>>835
返信ありがとうございます。
type a と type b で同一の年月日で別の data を持つ為、それを同時に出したいのです。
ですので、それではダメでした。

>>838
カレンダー表示させる為のSQLです。
日毎にtype a の data と type b の data を表にしたいのですが、
できれば年月日を一回のループで終わらせたいのです。

841NAME IS NULL2017/06/19(月) 08:38:40.84ID:???
今時年月日を別々に持つとか釣りなんだろうか?

8428342017/06/19(月) 09:27:16.58ID:???
ごめんなさい。自己解決しました

select t1.data , ( select t2.data from テーブル as t2 where year = 2017 and month = 1 and day = 1 and type = 'b' )
from テーブル as t1 where year = 2017 and month = 1 and day = 1 and type = 'a'

でいけました
もっと簡単に書けるかもしれませんが、一旦これで済ませます
助言ありがとうございました

843NAME IS NULL2017/06/19(月) 09:40:44.86ID:???
>>842
これみて設問見返すと
腹立つ

844NAME IS NULL2017/06/19(月) 10:00:49.23ID:???
蠣殻囓ろう

845NAME IS NULL2017/06/19(月) 15:19:31.45ID:???
>>834
SELECT year, month, day,
MAX(CASE WHEN type = 'a' THEN data END) as data_a,
MAX(CASE WHEN type = 'b' THEN data END) as data_b
FROM foo
GROUP BY year, month, day

846NAME IS NULL2017/06/19(月) 15:34:11.98ID:???
fromの段階で2017年1月1日までは絞り込んじゃいかんの?
あとはCASE式でわければいいし

847NAME IS NULL2017/06/19(月) 15:45:36.77ID:???
>>846
クエリ1回で1ヶ月分だかの範囲取得したいんじゃないの?
しらんけど

848NAME IS NULL2017/06/19(月) 15:53:00.40ID:46JrC3Lz
>>842
ちょっと悪い書き方だな。

だいたいSELECT句でtype列を選択してはいけない理由は何なのか?

849NAME IS NULL2017/06/19(月) 20:47:59.39ID:RxgVhLV5
>>848
ちょっとぐらい気にすんな

850NAME IS NULL2017/06/19(月) 22:29:58.77ID:gwyUxO6k
>>849
これがプログラムが大騒ぎだけどなw

851NAME IS NULL2017/06/20(火) 10:44:06.99ID:???
>>839
自分の客観的な評価を知ることができたとは思わないんだろうか

852NAME IS NULL2017/06/20(火) 12:21:59.67ID:9TTafpCL
>>851
思うわけないだろお前ら相手にw

853NAME IS NULL2017/06/21(水) 08:12:52.82ID:???
PostgresSQLについて質問です
hogeテーブルに日時を2017-06-21 20:08:45のような形で保存しているdatetimeフィールドがあるとして、
「datetimeが現在日時から120分以内の行を抜き出す」場合にはWHERE節に何と書けばいいのでしょうか?

854NAME IS NULL2017/06/21(水) 10:51:11.21ID:???
>>853
where col between now() and now() + '120 minutes'

855NAME IS NULL2017/06/21(水) 11:18:08.85ID:???
>>854
片手落ちじゃないかな

856NAME IS NULL2017/06/21(水) 11:41:47.54ID:???
>>855
駄目?

857NAME IS NULL2017/06/21(水) 12:23:44.66ID:???
>>856
プラマイ120m

858NAME IS NULL2017/06/21(水) 12:36:08.67ID:???
すみません、言葉足らずでした
datetime列はそのときの現在時刻を入れていく列です
>>854のようにnowを使ってやってみます
ありがとうございました

859NAME IS NULL2017/06/21(水) 12:49:24.44ID:???
>>857
そこは解釈の問題
なので要件を確認した方がいいな

860NAME IS NULL2017/06/21(水) 13:46:55.07ID:???
そのときの現在時刻を入れていく列ってことらしいから
未来時間は入らないだろうなあ

861NAME IS NULL2017/06/21(水) 14:08:08.61ID:???
now() - interval '120 minutes'
と、intervalを明示しといた方がいい気がする

862NAME IS NULL2017/06/25(日) 14:21:19.85ID:???
テーブルとして
Hoge:カラム HogeId,Name
Tag:カラム TagId、Name
TagRelation:カラム Id、HogeId、TagId
のようなものがあっって要はHogeにTagをTagRelationを関連付けているとして、
TagとしてId=1、2、3のものがあったとしてその3つのTag全てへの関連を持つHogeを列挙したいとしたらSQL一発でできますか?
TagRelationでは同じHogeとTagへの関係が重複してあり得るものとします。
distinct,group by,count辺り使えばいけるのかな?

863NAME IS NULL2017/06/25(日) 14:35:54.74ID:???
こっちのテンプレにあるな

SQL質疑応答スレ 17問目 [無断転載禁止]&#169;2ch.net
http://mevius.2ch.net/test/read.cgi/db/1468157341/6

864NAME IS NULL2017/06/25(日) 15:13:21.38ID:???
おお、あざす。ああHaving句とか知らんかった。
SQLiteでdistinct絡めたものがなんかコンパイルエラーになるけれど大筋は分かったのでいろいろ試してみる。ありー

865NAME IS NULL2017/06/25(日) 15:36:24.70ID:???
成果物おいときますね
セレクト ItemCommon.Id,ItemCommon.DisplayName
from (セレクトdistinct TagRelation.ItemId as itemId,TagRelation.TagId as tagId from TagRelation
where TagRelation.TagId in (
'eea01c2b-e0f8-418e-a942-d4e1f43e71f9',
'6668707d-ab6e-4e48-837d-b45ae3954360'
))
inner join itemCommon on itemId=ItemCommon.Id
group by ItemCommon.Id having count(*)=2
order by ItemCommon.Id

866NAME IS NULL2017/06/25(日) 15:36:55.16ID:???
なんかはじかれるのでカタカナに置き換えた

867NAME IS NULL2017/06/25(日) 17:05:25.05ID:???
SQL文を弾いてしまうの、どうにかならないものかな・・
中継クラウドがやっているようだ

868NAME IS NULL2017/06/25(日) 19:54:01.18ID:???
SQLインジェクション対策ってやつですか?

869NAME IS NULL2017/06/26(月) 12:13:47.67ID:???
あまり話題にならないのは、レスでSQL文を書く用事があるのはこの板くらいだからかw

870NAME IS NULL2017/06/26(月) 23:49:45.91ID:???
作業テーブル
ID、作業番号...
作業詳細テーブル
ID、作業ID、作業開始時間、作業終了時間...
作業明細テーブル(作業詳細テーブル 1-多 作業明細テーブル)
ID、作業詳細ID、作業内容、宿泊費...

うろ覚えですがこんな感じのテーブルがありまして、作業内容にhogehogeもしくはnullnullという言う文字列が入っている作業番号を知りたいまたは入っていない作業番号を知りたいのですが
試行錯誤しながら副問い合わせを使ってもできません。以下の感じになりました

// hogehogeもしくはnullnullが入っている作業番号
SELECT 作業番号
FROM 作業テーブル INNER JOIN 作業詳細テーブル ON 作業テーブル.ID = 作業詳細テーブル.作業ID
WHERE 作業詳細テーブル.ID IN
(SELECT 作業詳細ID
FROM 作業明細テーブル
WHERE 作業内容 LIKE '%hogehoge%' OR 作業内容 LIKE '%nullnull%')

// hogehogeもしくはnullnullが入っていない作業番号
SELECT 作業番号
FROM 作業テーブル INNER JOIN 作業詳細テーブル ON 作業テーブル.ID = 作業詳細テーブル.作業ID
WHERE 作業詳細テーブル.ID IN
(SELECT 作業詳細ID
FROM 作業明細テーブル
WHERE 作業内容 NOT LIKE '%hogehoge%' OR 作業内容 NOT LIKE '%nullnull%')

どうすれば特定の文字列が入っている作業番号を抜き出すことができるでしょうか?教えてください

871NAME IS NULL2017/06/27(火) 00:39:00.94ID:???
>>870
なんかおかしな結合条件になってるけどそれぞれのテーブルはIDで紐づけてるわけじゃないの?

872NAME IS NULL2017/06/27(火) 01:01:05.65ID:???
hogehogeもしくはnullnullが入っていない作業番号

ORじゃなく、ANDじゃ?と思った

873NAME IS NULL2017/06/27(火) 12:25:38.48ID:???
>>871
2番目以降、名前IDで紐付けしています

>>872
やっぱりそうですかね?

874NAME IS NULL2017/06/27(火) 23:00:43.16ID:???
誰かレスお願いします

875NAME IS NULL2017/06/27(火) 23:10:56.24ID:X5GsG9b9
では私が

876NAME IS NULL2017/06/27(火) 23:20:10.19ID:???
いえいえ私が

877NAME IS NULL2017/06/27(火) 23:35:37.58ID:???
>>870
速度考えなきゃ
-- hogehogeもしくはnullnullが入っている作業番号
SELECT 作業テーブル.作業番号 AS 作業番号
FROM 作業テーブル
INNER JOIN 作業詳細テーブル ON 作業テーブル.ID = 作業詳細テーブル.作業ID
INNER JOIN 作業明細テーブル ON 作業明細テーブル.作業詳細ID = 作業詳細テーブル.ID
WHERE 作業詳細テーブル.作業内容 LIKE '%hogehoge%' OR 作業詳細テーブル. 作業内容 LIKE '%nullnull%'
GROUP BY 作業テーブル.作業番号
で行けるんじゃね?
入ってない方は
SELECT 作業番号 FROM 作業テーブル
EXCEPT
SELECT 以下同文
でいいんじゃね?

878NAME IS NULL2017/06/27(火) 23:35:58.50ID:LiLTLORO
>>874
素直にFROM句で3つのテーブルを結合しろよ。

879NAME IS NULL2017/06/27(火) 23:37:14.32ID:LiLTLORO
>>877
性能といいながら、そんなにコストの高いSQLを勧めるなよw

880NAME IS NULL2017/06/27(火) 23:49:04.72ID:???
「ないものはない!」みたく、曖昧な表現だな

「速度を考えないで良いなら」と言いたいのでは?

881NAME IS NULL2017/06/28(水) 00:51:16.52ID:???
こんなんでどうだろうか
SELECT distinct 作業番号
FROM 作業テーブル,作業詳細テーブル,作業明細テーブル
WHERE
作業テーブル.ID = 作業詳細テーブル.作業ID AND
作業詳細テーブル.ID = 作業明細テーブル.作業詳細ID AND
(作業明細テーブル.作業内容 LIKE '%hogehoge%' OR
作業明細テーブル.作業内容 LIKE '%nullnull%');

SELECT distinct 作業番号
FROM 作業テーブル,作業詳細テーブル,作業明細テーブル
WHERE
作業テーブル.ID = 作業詳細テーブル.作業ID AND
作業詳細テーブル.ID = 作業明細テーブル.作業詳細ID AND
(作業明細テーブル.作業内容 NOT LIKE '%hogehoge%' AND
作業明細テーブル.作業内容 NOT LIKE '%nullnull%');

882NAME IS NULL2017/06/28(水) 07:18:31.22ID:???
>>879
ほっといてやれよ
僕が考えた最強のSQLなんだから

883NAME IS NULL2017/06/28(水) 09:04:03.37ID:???
>>879
落ち着け
速度考慮してないだろ

884NAME IS NULL2017/06/28(水) 12:09:10.98ID:???
>速度考えなきゃ
速度も考慮しなくては
速度を考えなくてもいいなら

どっちにも取れるw

885NAME IS NULL2017/06/28(水) 12:29:10.32ID:wyt1L1ut
これはガチに国語力低いパターン

886NAME IS NULL2017/06/28(水) 14:29:29.50ID:???
外国人なんだろ

887NAME IS NULL2017/06/28(水) 15:27:24.56ID:sraozQ1L
文章にSQLを埋め込む高等テクニックだからな。

888NAME IS NULL2017/06/28(水) 22:55:46.36ID:???
>>881
作業内容にhogehogeもしくはnullnullを含むは検索できましたが逆ができません
いろいろ試行錯誤していても取り出せません
上記にも書いてあるんですが、作業詳細テーブルのレコード1つ対し作業明細テーブルのレコードが複数結びついているのでまたややこしくなっているんだと思います

889NAME IS NULL2017/06/28(水) 23:08:25.76ID:???
>>888
その作業番号に紐付く作業明細テーブルの作業内容に
hogehogeもしくはnullnullを含まないものがあれば抽出したいのか、
その作業番号に紐付く作業明細テーブルの作業内容に
hogehogeもしくはnullnullが含まない作業番号を抽出したいのか
どちらだろうか?

後者なら、前者でhogehogeもしくはnullnullを含む作業番号を抽出出来ているのだから、
その作業番号以外の作業番号を求めればいいのでは?

890NAME IS NULL2017/06/28(水) 23:09:47.86ID:???
「前者」は、質問内容の前者ということです

891NAME IS NULL2017/06/29(木) 06:19:07.20ID:???
>>889
後者です
論理演算的にNOT ORを使えばいいのでしょうか?

SELECT distinct 作業番号
FROM 作業テーブル,作業詳細テーブル,作業明細テーブル
WHERE
作業テーブル.ID = 作業詳細テーブル.作業ID AND
作業詳細テーブル.ID = 作業明細テーブル.作業詳細ID AND
NOT (作業明細テーブル.作業内容 LIKE '%hogehoge%' OR
作業明細テーブル.作業内容 LIKE '%nullnull%')

こんな感じですか?

892NAME IS NULL2017/06/29(木) 06:47:56.55ID:???
速度考えなきゃ○○でいいんじゃね?

これ読んで速度考えたさいきょうの○○と思う>>879とか>>882の国語力 w

893NAME IS NULL2017/06/29(木) 06:51:50.11ID:???
>>891
> 後者です

>> 入ってない方は
>> SELECT 作業番号 FROM 作業テーブル
>> EXCEPT
>> SELECT 以下同文
>> でいいんじゃね?

894NAME IS NULL2017/06/29(木) 11:40:49.11ID:???
>>892
>速度考えなきゃ
で改行入ってるから、そこで文章が切れてると判断するかつながってると判断するか
その材料がないだろ、キミの国語力も怪しいw

895NAME IS NULL2017/06/29(木) 11:57:28.67ID:???
お前らまさか
件のsql見て処理速度分からないの?

じゃなきゃ文頭一行に
異様にこだわる理由はそれかよw

896NAME IS NULL2017/06/29(木) 12:19:13.07ID:IG0jLtOQ
>>894←馬鹿の思考の真髄w

897NAME IS NULL2017/06/29(木) 12:26:26.48ID:???
>>893
できませんでした
質問する場所を変えるので取り下げます

898NAME IS NULL2017/06/29(木) 13:38:09.85ID:???
外国人なんだろ

899NAME IS NULL2017/06/29(木) 18:31:17.30ID:???
>じゃなきゃ
じゃも考慮しなくては
じゃを考えなくてもいいなら

どっちにも取れるw

900NAME IS NULL2017/06/29(木) 19:39:43.68ID:???
国語力をバカにされたのがそんなに悔しかったのかよ

901NAME IS NULL2017/06/29(木) 20:14:01.27ID:s5zXJTLS
そりゃ悔しいだろうよw自分じゃ頭いいと思ってるんだからなw馬鹿すぎるwwww

902NAME IS NULL2017/06/29(木) 20:33:08.93ID:???
>>899
はしゃいでるなー









イミワカラン

903NAME IS NULL2017/06/29(木) 21:06:45.71ID:???
IPAの試験は半分国語の問題だからな。こういうのも意外と大事よ。

904NAME IS NULL2017/06/30(金) 00:24:15.44ID:qR8XYDhd
質問ですが
table点数
名前  年月日  点数 
花道 2017/10/1 20
赤木 2017/10/1 80
三井 2017/10/1 20
花道 2017/10/5 10
赤木 2017/10/5 100
三井 2017/10/5 40
花道 2017/10/10 0


table成績
名前 評価 最終評価年月 
花道 E 2017/9/1
赤木 A 2017/10/5
三井 C 2017/9/1


↑のようなテーブルがあったとして↓のビューを作成したい。
新規評価ビュー
ランキング 名前 テスト回数 平均点 評価


テスト回数は、table点数にある名前の回数で
対象データはtable点数の年月日が table成績の最終評価年月日に設定されている日以降
ランキングはテスト回数から番号を作成
平均点はtable点数の点数の平均

最終評価年月によってテスト回数をだすのがよくわからないのでだれかアドバイスお願いします。

905NAME IS NULL2017/06/30(金) 00:26:38.02ID:qR8XYDhd
>>904
sqlserverでやりたいです。

906NAME IS NULL2017/06/30(金) 07:35:02.97ID:???
>>904
> ランキングはテスト回数から番号を作成
テスト回数のランキングってこと?
ならこんな感じかな
create view View904 as (
select
rank() over (order by count(*) asc) as ランキング,
成績.名前 as 名前,
count(*) as テスト回数,
avg(点数.点数) as 平均点,
成績.評価 as 評価
from 成績
left join 点数 on 成績.名前 = 点数.名前
where 成績.最終評価年月 < 点数.年月日
group by 成績.名前, 成績.評価
)
group by と rank() は同時に使ったことないからもしかしてそこでエラーになるかも
その時はサブクエリにして改めて rank() を適用してちょ

907NAME IS NULL2017/06/30(金) 10:38:04.24ID:???
>>904
まずは、
・ランキング
・テスト回数
・平均点
・評価
を、自分でそれぞれ別のクエリで書いてみて、わからない奴だけ質問してくれ

908NAME IS NULL2017/06/30(金) 12:18:20.40ID:TPE85msy
>>907
わからんなら絡むなって

909NAME IS NULL2017/06/30(金) 12:22:22.27ID:???
↑のようなテーブルがあったとして↓のビューを作成したい。
新規評価ビュー
ランキング 名前 テスト回数 平均点 評価

↑この下に、どういう結果を期待しているのか、書いてみて

910NAME IS NULL2017/06/30(金) 17:40:19.16ID:???
ランキングってのは該当点数の平均点の順位で良いのか?
とりあえず書いてみた
with
tmpデータ as (
select 名前,AVG(点数) as 平均点,COUNT(名前) as テスト回数
from(
select * from table点数 t
where t.年月日 >= (select MAX(最終評価年月) from table成績 where 名前=t.名前)
) t2
group by 名前
)
select
(select COUNT(*)+1 from tmpデータ where 平均点>x.平均点) as ランキング,
table成績.名前,テスト回数,平均点,評価
from table成績
left join tmpデータ x on table成績.名前=x.名前

ウィンドウ関数とか使えばもうちょいきれいに書けるのかもしれんが
あれ苦手なんだよなぁ

911NAME IS NULL2017/06/30(金) 18:39:46.15ID:qR8XYDhd
レスがいっぱい早めに帰ってよかった!
>>907
>>909
今回こんな感じの結果を求めていました。
ランキング 名前 テスト回数 平均点 評価
1 花道 3 10 E
2 三井 2 30 A
3 赤木 1 80 C

>>906
>>910
ありがとうございます。さっそく試してみます。

912NAME IS NULL2017/06/30(金) 18:40:50.73ID:qR8XYDhd
>>911
A と Cが入れ替わりだった

913NAME IS NULL2017/06/30(金) 21:25:44.76ID:qR8XYDhd
>>906 >>910
ありがとうございました。思ってたよな動きになりました。


追加で質問なのですがsqlserverだとして
>>906の書き方
>>910の書き方で
↓のようなのを作るのは問題ないですか?

>>904
table点数に 身長等のカラムを300追加したtable
新規評価ビューと同じようなビューを30作る。
DBとしてはDB湘北、DB陵南、DB海南等を10作成↑の内容を各DBが持っているとして


DB湘北の
table点数に数秒に1件Insertされて数百万件のデータが作られていく
Insertされるごとに30のビューが更新されていくと思うのですが、これくらいならSQLserverで問題なく動くかな?

Insertは各DBの中のtable点数だけですが
10のDBのtable点数に同時にInsertは影響がでる?のかきになります

914NAME IS NULL2017/06/30(金) 21:40:40.02ID:???
>Insertされるごとに30のビューが更新されていく
普通のビューは実データもってないから、ビューが更新されるとかありません

あとは何したいかわからんけど、実機で性能評価してください
ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど

まあ、俺なら一つのテーブルにカラム300とか、まずほんとに正しいか疑うけどな

915NAME IS NULL2017/06/30(金) 22:27:23.42ID:ZXEQZqmX
>>914
> ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど
これは純粋にハードの性能の問題です嘘をつかないでください

916NAME IS NULL2017/06/30(金) 23:06:16.04ID:qR8XYDhd
やりたいこととしては単純にビューの内容をGridやエクセル等に表示したいです。
30のビューを作るとしても
実機で性能評価する前に>>913ぐらいなら余裕でしょなのか、そもそも無茶なのか簡単な感触がほしいなと。

300カラムは名前、時間+5tableぐらいに分割できますが
一つのビューは1tablか2tableの情報なのでtableは分割したほうがいい?と思うのですが
insaret*5がどのくらい時間かかるかわからなかったのでinsaret*1の300カラムで聞いてみました。
やっぱり分割するべきですかね

917NAME IS NULL2017/06/30(金) 23:38:24.64ID:???
>>915
今どきのまともなハードなら
ってのを追加しとくわ

それなりのハードでもDB設計腐ってたら、その程度の処理でも大変なことになるけどな

918NAME IS NULL2017/06/30(金) 23:57:06.72ID:ZXEQZqmX
>>917
「大変なこと」とはなんですか?ぼやかさずに具体的に言えばいいでしょうに
前言撤回します
アナタ嘘はついてないですね
無知なだけのようです

919NAME IS NULL2017/07/01(土) 08:03:41.20ID:???
>>918
煽るしかできないならよそに行け

920NAME IS NULL2017/07/01(土) 12:22:27.21ID:q2SoX0Ck
>>919
自分の間違いを指摘されると「煽られた」ってw
どんだけ自分に都合いいんだよ馬鹿だなw

921NAME IS NULL2017/07/01(土) 13:13:26.96ID:???
参考までに効きたいんだが、
毎秒100万アクセスがあるようなシステムってどういうものなの?

922NAME IS NULL2017/07/01(土) 13:47:10.80ID:???
>>921
某夢の国関係の予約サイトで予約開始直後とかは数十万TPS行く

923NAME IS NULL2017/07/01(土) 18:07:08.60ID:???
>>921
プライムデー

924NAME IS NULL2017/07/01(土) 19:48:24.43ID:???
>>920
間違いの指摘ってこれ?
> これは純粋にハードの性能の問題です嘘をつかないでください
インデックスとかパーティションも知らんとかバカ過ぎるだろ

925NAME IS NULL2017/07/01(土) 20:14:29.74ID:???
他人をバカにしていないと自分の存在価値を確認できない人が多いのかな

926NAME IS NULL2017/07/01(土) 20:16:41.51ID:6xOw4q9p
>>925
お前それ好きだよなあw
どんだけバカにされたんだよw

927NAME IS NULL2017/07/01(土) 20:39:02.91ID:???
>>926
いや他人をバカにして草生やしてる人を結構見かけるから
そういう人の心の中をちょっと想像したりして楽しんでるだけだよ

928NAME IS NULL2017/07/01(土) 20:41:38.97ID:6xOw4q9p
>>927
うわぁ…メッチャ悪趣味じゃんお前…

929NAME IS NULL2017/07/01(土) 20:44:01.18ID:???
>>928
まあそうかもね
否定はしないよ

ただそういう人見てるとそんなに自意識過剰にならずにもっと気楽に生きればいいのになぁって思う

930NAME IS NULL2017/07/01(土) 20:48:41.63ID:6xOw4q9p
>>929
え?お前が気張ってるからそんな狂った趣味になんだぜ?

931NAME IS NULL2017/07/01(土) 20:53:33.73ID:???
>>930
お、おう

932NAME IS NULL2017/07/01(土) 21:01:39.74ID:6xOw4q9p
>>931
大体さあ無知ってお前が思ってる程恥ずかしい事じゃないぜ
一つ教わればその分お前が一つ賢くなるんだから
もっとフラットに自分をさらけだせばいいのに

933NAME IS NULL2017/07/01(土) 21:04:39.83ID:???
>>932
いやなぜ俺がフラットにさらけ出してない前提なのかは疑問だが
あなたのいう通りだと思うよ

934NAME IS NULL2017/07/01(土) 21:06:46.92ID:6xOw4q9p
>>933
え?お前自分の無知を指摘されると馬鹿にされたって思う側の人だろw
簡単に分かった気になるなよ
無知でいいんだよ少しずつ理解してけば

935NAME IS NULL2017/07/01(土) 21:09:18.42ID:???
>>934
いや違うけど…
バカにされようがされまいが、自分の価値には何ら影響を与えないので
なぜなら自分で自分のことダメだと思ってないから

936NAME IS NULL2017/07/01(土) 21:10:42.91ID:6xOw4q9p
>>935
それを「気張ってる」って他人は言うんだけど…

937NAME IS NULL2017/07/01(土) 21:11:55.12ID:???
ちょっと語弊があったかも
正確にはバカにされていると認識することがないといった方がいいのかもしれない

938NAME IS NULL2017/07/01(土) 21:13:24.26ID:6xOw4q9p
>>937
いや…それはそれで精神的に問題あるぞ…
何度も言うけど無知でいいんだよ
もっと素直になれば?w

939NAME IS NULL2017/07/01(土) 21:15:38.63ID:???
>>938
さっきから無知という言葉を連発しているけど、なにかコンプレックスがあるの?

940NAME IS NULL2017/07/01(土) 21:19:21.28ID:???
>>938
無知かどうかって質問に答えるとしたら何も知らない訳じゃないけど知らないことの方がずっと多いと思う
全知全能か?ってきかれたら明確に否定します

941NAME IS NULL2017/07/01(土) 21:22:51.78ID:6xOw4q9p
>>940
そもそも誰もお前の事を全知全能だなんて思ってないからw
何を怖れてるんだお前はw

942NAME IS NULL2017/07/01(土) 21:24:48.03ID:???
>>941
何も恐れていないよ

>>938
精神的に問題があると思うならそうなのかな
人に何かを言われてバカにされてると思う=自分でも自分のことをバカにしてる
ってことだと思うけどどうなんだろうね

943NAME IS NULL2017/07/01(土) 21:28:31.42ID:6xOw4q9p
>>942
つまりお前は無知でちっぽけな自分を怖れてるんだろ?
いやこれは疑問形だけど疑問ではない
そうなんだお前は
でもなあ…皆無知でちっぽけなんだぜ?

944NAME IS NULL2017/07/01(土) 21:30:23.28ID:???
>>943
恐れていてほしいという願望ですか?

945NAME IS NULL2017/07/01(土) 21:31:26.81ID:???
全ての答えは42

946NAME IS NULL2017/07/01(土) 21:45:19.97ID:???
>>925
明確な理由もなしに人を嘘つき呼ばわりしてたらバカにされてもしょうがなくね?

947NAME IS NULL2017/07/01(土) 22:02:21.45ID:???
>>946
ちょっと背景がわからないけど、嘘つき呼ばわりされてるのが自分なら、自分が嘘をついていないのなら特に気にする必要がないと思う
他人が嘘つき呼ばわりされてたとしたら、その真偽はさておき、それはその人の課題であって、第三者がそれに対して何か言うものでもないとは思う

948NAME IS NULL2017/07/02(日) 00:22:29.79ID:???
人を嘘つき呼ばわりしてもいいと?
まあそう言う考え方もあるかもな
俺はそうは考えないだけだからいちいち絡んで来なくていいよ

949NAME IS NULL2017/07/02(日) 00:33:18.86ID:???
嘘つき呼ばわりしてる人がいたとしても、それが事実でなければただの独り言ですからね

950NAME IS NULL2017/07/02(日) 00:50:40.10ID:6+gWx0jl
>>948
お前が正しくない事を言っているのならば
お前の意思には関わらずお前は嘘をついている事になる
嘘つきとは厳然たる事実にすぎん

951NAME IS NULL2017/07/02(日) 00:55:06.61ID:???
論理的(=客観的に検証可能)な正しさと主観的な正しさなのかによって話は変わってきますね

952NAME IS NULL2017/07/02(日) 00:58:24.16ID:???
掲示板に書くのは独り言と言わない
チラシの裏にでも書いとけ

953NAME IS NULL2017/07/02(日) 00:58:28.26ID:6+gWx0jl
>>951
主観的な正しさなどというものは存在しない
それはお前の願望にすぎん

954NAME IS NULL2017/07/02(日) 00:58:29.98ID:???
まだマウンティング完了できないのw
なさけなーーーw

955NAME IS NULL2017/07/02(日) 01:05:52.12ID:???
>>953
実は正しさなど存在しないんですけどね

956NAME IS NULL2017/07/02(日) 01:07:03.35ID:???
>>950
で、何を言いたいの?
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言うなら誰が嘘ついてるのかを根拠と共に書いてよ

957NAME IS NULL2017/07/02(日) 01:09:55.98ID:6+gWx0jl
>>955
お前は根っからの嘘つきだなw

958NAME IS NULL2017/07/02(日) 01:11:27.88ID:???
>>957
あなたがそう思うならあなたにとってはそうなんでしょうね

959NAME IS NULL2017/07/02(日) 01:11:39.59ID:6+gWx0jl
>>956
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
お前は何を見てるんだ?気でも狂ったか?w

960NAME IS NULL2017/07/02(日) 01:12:24.95ID:6+gWx0jl
>>958
嘘つきとは厳然たる事実にすぎんw

961NAME IS NULL2017/07/02(日) 01:14:03.66ID:???
>>960
面白いです

962NAME IS NULL2017/07/02(日) 01:19:24.82ID:6+gWx0jl
>>961
そうかそれなら良かった

ところでお前が>>914なら言っておくが
俺はお前の事を嘘つきとは言ってないぞ
いや一度は言ったがw
前言撤回して正確に無知なだけだと認知しているからねw

963NAME IS NULL2017/07/02(日) 01:22:04.37ID:???
>>962
残念ながら私は>>914さんではありません…

964NAME IS NULL2017/07/02(日) 01:23:38.78ID:6+gWx0jl
>>963
そうか違ったかwすまんなw

じゃあ誰なんだよ無駄に俺に絡んできてるやつw

965NAME IS NULL2017/07/02(日) 01:25:03.55ID:???
SQLは本当に初心者でして、MySQL+PHPで自分用のプライベートなファイルアップローダーを作ったことくらいしかないレベルです
でもデータベースは面白いしWeb技術としては必須なので少しずつ勉強しており、このスレも時々のぞいております

966NAME IS NULL2017/07/02(日) 01:33:59.36ID:???
>>964
絡んでしまったのは私なんですけど、あなたが想定してる人ではないようです
ごめんなさいね

967NAME IS NULL2017/07/02(日) 01:50:27.58ID:???
>>959
> 当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
日本語の理解も怪しい奴だったのか w

968NAME IS NULL2017/07/02(日) 01:51:59.08ID:???
幸せですか?

969NAME IS NULL2017/07/03(月) 15:27:30.66ID:???
>>964
> じゃあ誰なんだよ無駄に俺に絡んできてるやつw
心の声:もっと俺に絡め!

970NAME IS NULL2017/07/05(水) 21:11:11.11ID:4hstFHU6
質問ですが
sqlserverにDB1、DB2、〜DB10があり中にtableAとtableBがありカラムは同じだとします。

tableAにPC1とPC2から同時にinsert処理するとトランザクションが発生しますが
↓のパターンの処理の場合は問題はおこりますか?
問題ないならパターン2でいこうと思いますがパターン1がいいことってありますか?

パターン1
DB1.tableAにPC1からinsert処理、
DB2.tableAにPC2からinsert処理を同時にする

パターン2
DB1.tableAにPC1からinsert処理、
DB1.tableBにPC2からinsert処理を同時にする

971NAME IS NULL2017/07/05(水) 21:27:16.42ID:???
>>970
問題ない

972NAME IS NULL2017/07/05(水) 21:35:38.43ID:4hstFHU6
ありがとうございます。
パターン2で考えてみます。

973NAME IS NULL2017/07/05(水) 23:25:15.68ID:???
Left Outer Jonって複数一気に出来ない?
方法がわからないので、
(サブクエリ(サブクエリ(サブクエリ)))でやってるんだけど。

974NAME IS NULL2017/07/05(水) 23:36:50.79ID:Em7FNC1e
>>973
できるよ。構文上は外部結合した結果と結合するんだから、結合条件次第。

975NAME IS NULL2017/07/06(木) 03:50:49.70ID:???
(+)使えると便利だと思った

976NAME IS NULL2017/07/06(木) 20:39:29.54ID:7aA4qt+y
>>975
単にオラクル構文に慣れているだけでしょ。

977NAME IS NULL2017/07/07(金) 13:32:57.72ID:???
よろしくお願いします。
前任者が突然退職しました。
SQL初心者ですが業務を引く次ぐことになりました。
今、行き詰まってます。
次のようなテーブルが有ります。
table 出勤表(
社員番号 serial,
日付 date,
出勤時間 timestamp,
退勤時間 timestamp,
遅刻 boolean,
早退 boolean,
欠勤 boolean
)
ここである期間内の、例えば
where 日付 between '2017-05-01' and '2017-05-14'
内における社員それぞれの遅刻、早退、欠勤の【有無】を求めたいのです。
出力例)
社員番号 遅刻 早退 欠勤
10    F F T
11 F F F
12 T T F
のような。
色々試行錯誤していますが、まず、ある期間内に遅刻があったかどうか、というところからもう分かりません。
ヒントだけでもかまいません。
助けてください。
Postgresqlです。

978NAME IS NULL2017/07/07(金) 16:57:35.93ID:???
Postgresqlってboolean型にMAXとかMINとかとったらどうなる?

たとえば指定期間内の遅刻のMAXかMINとれば行けると思うけど
だめならCASEでTRUEのとき1、それ以外は0にしてSUMなりMAXなり取ればいけるんじゃね

979NAME IS NULL2017/07/07(金) 17:37:50.80ID:???
>>977
SELECT 社員番号,
SUM(CASE WHEN 遅刻 THEN 1 ELSE 0 END) > 0 as 遅刻,
SUM(CASE WHEN 早退 THEN 1 ELSE 0 END) > 0 as 早退,
SUM(CASE WHEN 欠勤 THEN 1 ELSE 0 END) > 0 as 欠勤
FROM 出勤表
WHERE 日付 BETWEEN '2017-05-01' AND '2017-05-14'
GROUP BY 社員番号

980NAME IS NULL2017/07/08(土) 01:20:39.94ID:???
スレ違いでしたら恐縮です。

アプリケーションサイズが一番小さい
データベースソフトウェアを教えてください。

何か記憶だと、インストール不要でちょっとづかいに使える様な
超ちいさい(アプリのサイズが)、データベースソフトがあった記憶があるのですが・・


宜しくお願いいたします。

981NAME IS NULL2017/07/08(土) 01:37:23.88ID:???
テキストファイルで、文字列検索すれば?
タダだし、簡単だぞ

982NAME IS NULL2017/07/08(土) 05:26:33.17ID:???
>>980
SQLiteはPHP5以降デフォルトでバンドルされています

983NAME IS NULL2017/07/08(土) 06:51:56.10ID:???
>>982
ありがとうございます。SQLiteで間違いありません。

984NAME IS NULL2017/07/08(土) 21:05:47.83ID:???
>>982
すみません。やっぱりSQLiteではありませんでした。

985NAME IS NULL2017/07/08(土) 22:55:54.07ID:???
>>984
つかえねー

986NAME IS NULL2017/07/09(日) 04:11:51.66ID:???
>>985
何様だてめぇ

987NAME IS NULL2017/07/09(日) 09:19:56.90ID:???
>>986
sqlite御一行様

988NAME IS NULL2017/07/09(日) 09:59:14.11ID:???
>>987
いや御一行様じゃなくて>>985てめぇに対して言ってんだよ

989NAME IS NULL2017/07/09(日) 11:06:01.80ID:???
>>988
その返事だよ
その怒りのゴールは設定できてる?

990NAME IS NULL2017/07/09(日) 12:30:50.00ID:???
>>989
しね

991NAME IS NULL2017/07/09(日) 12:59:55.50ID:???
>>990
メンゴメンゴ
不快な日曜になったねW

992NAME IS NULL2017/07/09(日) 17:45:24.51ID:???
>>977-979
素直にbool_or( )でいいと思うが

993NAME IS NULL2017/07/09(日) 23:03:37.40ID:???
>>992
977 です。
bool_or() っていう関数、知りませんでした。
これで全く問題なく上手くできました♪
ありがとうございました。

※自分で書いた977が自分の環境(BathyScaphe)で読めません(泣)。なぜ?

994NAME IS NULL2017/07/12(水) 19:51:51.94ID:???
Left Outer Joinを複数回やる場合、
↓これで良いらしいですが、

Select G, H
From
 (C Left Outer Join D
  On E = F) Left Outer Join I
On J = K

今まで知らずに↓こうやって書いてました。

Select G, H
From
 (Select A, B
  From C Left Outer Join D
  On E = F) Left Outer Join I
On J = K

これだと遅い?

995NAME IS NULL2017/07/12(水) 19:57:34.70ID:???
>>994
試せよ

996NAME IS NULL2017/07/12(水) 20:00:12.99ID:???
>>995
答えられないなら黙っていてください。

997NAME IS NULL2017/07/12(水) 20:09:09.04ID:???
>>996
両方遅いな

998NAME IS NULL2017/07/12(水) 20:45:03.24ID:???
埋め

999NAME IS NULL2017/07/12(水) 20:45:30.78ID:???
立て

1000NAME IS NULL2017/07/12(水) 20:45:48.86ID:???
ます

10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 426日 15時間 16分 41秒

10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。