SQL初心者質問スレ [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
hogehogeもしくはnullnullが入っていない作業番号
ORじゃなく、ANDじゃ?と思った >>871
2番目以降、名前IDで紐付けしています
>>872
やっぱりそうですかね? >>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 以下同文
でいいんじゃね? >>874
素直にFROM句で3つのテーブルを結合しろよ。 >>877
性能といいながら、そんなにコストの高いSQLを勧めるなよw 「ないものはない!」みたく、曖昧な表現だな
「速度を考えないで良いなら」と言いたいのでは? こんなんでどうだろうか
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%'); >>879
ほっといてやれよ
僕が考えた最強のSQLなんだから >速度考えなきゃ
速度も考慮しなくては
速度を考えなくてもいいなら
どっちにも取れるw >>881
作業内容にhogehogeもしくはnullnullを含むは検索できましたが逆ができません
いろいろ試行錯誤していても取り出せません
上記にも書いてあるんですが、作業詳細テーブルのレコード1つ対し作業明細テーブルのレコードが複数結びついているのでまたややこしくなっているんだと思います >>888
その作業番号に紐付く作業明細テーブルの作業内容に
hogehogeもしくはnullnullを含まないものがあれば抽出したいのか、
その作業番号に紐付く作業明細テーブルの作業内容に
hogehogeもしくはnullnullが含まない作業番号を抽出したいのか
どちらだろうか?
後者なら、前者でhogehogeもしくはnullnullを含む作業番号を抽出出来ているのだから、
その作業番号以外の作業番号を求めればいいのでは? >>889
後者です
論理演算的にNOT ORを使えばいいのでしょうか?
SELECT distinct 作業番号
FROM 作業テーブル,作業詳細テーブル,作業明細テーブル
WHERE
作業テーブル.ID = 作業詳細テーブル.作業ID AND
作業詳細テーブル.ID = 作業明細テーブル.作業詳細ID AND
NOT (作業明細テーブル.作業内容 LIKE '%hogehoge%' OR
作業明細テーブル.作業内容 LIKE '%nullnull%')
こんな感じですか? 速度考えなきゃ○○でいいんじゃね?
これ読んで速度考えたさいきょうの○○と思う>>879とか>>882の国語力 w >>891
> 後者です
>> 入ってない方は
>> SELECT 作業番号 FROM 作業テーブル
>> EXCEPT
>> SELECT 以下同文
>> でいいんじゃね? >>892
>速度考えなきゃ
で改行入ってるから、そこで文章が切れてると判断するかつながってると判断するか
その材料がないだろ、キミの国語力も怪しいw お前らまさか
件のsql見て処理速度分からないの?
じゃなきゃ文頭一行に
異様にこだわる理由はそれかよw >>893
できませんでした
質問する場所を変えるので取り下げます >じゃなきゃ
じゃも考慮しなくては
じゃを考えなくてもいいなら
どっちにも取れるw そりゃ悔しいだろうよw自分じゃ頭いいと思ってるんだからなw馬鹿すぎるwwww IPAの試験は半分国語の問題だからな。こういうのも意外と大事よ。 質問ですが
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点数の点数の平均
最終評価年月によってテスト回数をだすのがよくわからないのでだれかアドバイスお願いします。 >>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() を適用してちょ >>904
まずは、
・ランキング
・テスト回数
・平均点
・評価
を、自分でそれぞれ別のクエリで書いてみて、わからない奴だけ質問してくれ ↑のようなテーブルがあったとして↓のビューを作成したい。
新規評価ビュー
ランキング 名前 テスト回数 平均点 評価
↑この下に、どういう結果を期待しているのか、書いてみて ランキングってのは該当点数の平均点の順位で良いのか?
とりあえず書いてみた
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.名前
ウィンドウ関数とか使えばもうちょいきれいに書けるのかもしれんが
あれ苦手なんだよなぁ レスがいっぱい早めに帰ってよかった!
>>907
>>909
今回こんな感じの結果を求めていました。
ランキング 名前 テスト回数 平均点 評価
1 花道 3 10 E
2 三井 2 30 A
3 赤木 1 80 C
>>906
>>910
ありがとうございます。さっそく試してみます。 >>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は影響がでる?のかきになります >Insertされるごとに30のビューが更新されていく
普通のビューは実データもってないから、ビューが更新されるとかありません
あとは何したいかわからんけど、実機で性能評価してください
ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど
まあ、俺なら一つのテーブルにカラム300とか、まずほんとに正しいか疑うけどな >>914
> ちゃんとした設計のDBなら、数秒に1回の追加も数百万のselectも問題ないけど
これは純粋にハードの性能の問題です嘘をつかないでください やりたいこととしては単純にビューの内容をGridやエクセル等に表示したいです。
30のビューを作るとしても
実機で性能評価する前に>>913ぐらいなら余裕でしょなのか、そもそも無茶なのか簡単な感触がほしいなと。
300カラムは名前、時間+5tableぐらいに分割できますが
一つのビューは1tablか2tableの情報なのでtableは分割したほうがいい?と思うのですが
insaret*5がどのくらい時間かかるかわからなかったのでinsaret*1の300カラムで聞いてみました。
やっぱり分割するべきですかね >>915
今どきのまともなハードなら
ってのを追加しとくわ
それなりのハードでもDB設計腐ってたら、その程度の処理でも大変なことになるけどな >>917
「大変なこと」とはなんですか?ぼやかさずに具体的に言えばいいでしょうに
前言撤回します
アナタ嘘はついてないですね
無知なだけのようです >>919
自分の間違いを指摘されると「煽られた」ってw
どんだけ自分に都合いいんだよ馬鹿だなw 参考までに効きたいんだが、
毎秒100万アクセスがあるようなシステムってどういうものなの? >>921
某夢の国関係の予約サイトで予約開始直後とかは数十万TPS行く >>920
間違いの指摘ってこれ?
> これは純粋にハードの性能の問題です嘘をつかないでください
インデックスとかパーティションも知らんとかバカ過ぎるだろ 他人をバカにしていないと自分の存在価値を確認できない人が多いのかな >>925
お前それ好きだよなあw
どんだけバカにされたんだよw >>926
いや他人をバカにして草生やしてる人を結構見かけるから
そういう人の心の中をちょっと想像したりして楽しんでるだけだよ >>928
まあそうかもね
否定はしないよ
ただそういう人見てるとそんなに自意識過剰にならずにもっと気楽に生きればいいのになぁって思う >>929
え?お前が気張ってるからそんな狂った趣味になんだぜ? >>931
大体さあ無知ってお前が思ってる程恥ずかしい事じゃないぜ
一つ教わればその分お前が一つ賢くなるんだから
もっとフラットに自分をさらけだせばいいのに >>932
いやなぜ俺がフラットにさらけ出してない前提なのかは疑問だが
あなたのいう通りだと思うよ >>933
え?お前自分の無知を指摘されると馬鹿にされたって思う側の人だろw
簡単に分かった気になるなよ
無知でいいんだよ少しずつ理解してけば >>934
いや違うけど…
バカにされようがされまいが、自分の価値には何ら影響を与えないので
なぜなら自分で自分のことダメだと思ってないから >>935
それを「気張ってる」って他人は言うんだけど… ちょっと語弊があったかも
正確にはバカにされていると認識することがないといった方がいいのかもしれない >>937
いや…それはそれで精神的に問題あるぞ…
何度も言うけど無知でいいんだよ
もっと素直になれば?w >>938
さっきから無知という言葉を連発しているけど、なにかコンプレックスがあるの? >>938
無知かどうかって質問に答えるとしたら何も知らない訳じゃないけど知らないことの方がずっと多いと思う
全知全能か?ってきかれたら明確に否定します >>940
そもそも誰もお前の事を全知全能だなんて思ってないからw
何を怖れてるんだお前はw >>941
何も恐れていないよ
>>938
精神的に問題があると思うならそうなのかな
人に何かを言われてバカにされてると思う=自分でも自分のことをバカにしてる
ってことだと思うけどどうなんだろうね >>942
つまりお前は無知でちっぽけな自分を怖れてるんだろ?
いやこれは疑問形だけど疑問ではない
そうなんだお前は
でもなあ…皆無知でちっぽけなんだぜ? >>925
明確な理由もなしに人を嘘つき呼ばわりしてたらバカにされてもしょうがなくね? >>946
ちょっと背景がわからないけど、嘘つき呼ばわりされてるのが自分なら、自分が嘘をついていないのなら特に気にする必要がないと思う
他人が嘘つき呼ばわりされてたとしたら、その真偽はさておき、それはその人の課題であって、第三者がそれに対して何か言うものでもないとは思う 人を嘘つき呼ばわりしてもいいと?
まあそう言う考え方もあるかもな
俺はそうは考えないだけだからいちいち絡んで来なくていいよ 嘘つき呼ばわりしてる人がいたとしても、それが事実でなければただの独り言ですからね >>948
お前が正しくない事を言っているのならば
お前の意思には関わらずお前は嘘をついている事になる
嘘つきとは厳然たる事実にすぎん 論理的(=客観的に検証可能)な正しさと主観的な正しさなのかによって話は変わってきますね 掲示板に書くのは独り言と言わない
チラシの裏にでも書いとけ >>951
主観的な正しさなどというものは存在しない
それはお前の願望にすぎん まだマウンティング完了できないのw
なさけなーーーw >>950
で、何を言いたいの?
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言うなら誰が嘘ついてるのかを根拠と共に書いてよ >>957
あなたがそう思うならあなたにとってはそうなんでしょうね >>956
当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
お前は何を見てるんだ?気でも狂ったか?w >>961
そうかそれなら良かった
ところでお前が>>914なら言っておくが
俺はお前の事を嘘つきとは言ってないぞ
いや一度は言ったがw
前言撤回して正確に無知なだけだと認知しているからねw >>962
残念ながら私は>>914さんではありません… >>963
そうか違ったかwすまんなw
じゃあ誰なんだよ無駄に俺に絡んできてるやつw SQLは本当に初心者でして、MySQL+PHPで自分用のプライベートなファイルアップローダーを作ったことくらいしかないレベルです
でもデータベースは面白いしWeb技術としては必須なので少しずつ勉強しており、このスレも時々のぞいております >>964
絡んでしまったのは私なんですけど、あなたが想定してる人ではないようです
ごめんなさいね >>959
> 当たり前のことを言って話をそらすとか低能がよくやる手じゃないと言ってないけど?w
日本語の理解も怪しい奴だったのか w >>964
> じゃあ誰なんだよ無駄に俺に絡んできてるやつw
心の声:もっと俺に絡め! 質問ですが
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処理を同時にする レス数が950を超えています。1000を超えると書き込みができなくなります。