SQL初心者質問スレ [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
>>801
おまいさんがこれ言ったからだろ
0770 NAME IS NULL 2017/06/18 19:20:57
>>769
いやだからSQLはSQL Serverの略だってば
ID:c1GtVOfY(5/11) >>801
初心者スレやでここは
キチガイは出ていきな ID:c1GtVOfY
言ってること支離滅裂になってきてるけどだいじょぶか?
日曜の夜だから酒でも飲んでだいぶ酔ってるんじゃ? >>802
多数派はマリアだろうな
SQL Serverをサーバーと略す一派ならDBと言うかも知れんがw >>808
いやおかしいでしょ
SQLserver=SQLって言ってたじゃん
つかw
そううえサーバーっておかし過ぎだよ
DBって…
大丈夫この人? お前らのまだ概念とアダ名で
ごちゃごちゃいってるのw >>811
ごちゃごちゃ言ってるのは一人のようだが >>808
サーバーwwwウケるwww
とか言えば満足かい? >>811
ほんじゃ超初心者に
SQL=SQLserverと指南し
その挙句場合によっては
SQLserverをサーバーと略すってそりゃやべーだろ >>809
知るかよw
どう略すかなんてそいつの感性次第なんだからw
そこにやたら食いつくお前がどうかしてる
現実を受け入れろw >>817
こういうのが職場で話通じないやつの実態なんだって見せてもらった気分だよ
いるんだよ、どこまでも平行線なやつ
アイタタ… >>817
つまりお前は他人の感性がおかしく感じるから
自分の感性に合わせろと言いたいのか?
無理だろそんなもんw
てかよくそんな無駄な事にここまで労力使えるなお前w >>819
あんね、オレは817じゃないけど
感性感性ってさ、一応言語で確認する訳なんで通じなかったら意味ないのよ、って
なんでこんな小学生でもわかること説明してんだおいっ
ここはひまわり学級かっ
だったらあんたいきなりエマニュエルの件だけど、って言われてわかるか? 色んなやつが居ることを認める事をどうしてここまで悔しがる必要があるのかw
おもしれー奴だなコイツw 昼間その呼び方で混乱してた初心者
明日会社で恥かくぞ… >>824
だからわかんのか答えてみて
エマニュエルの件 言い方に幅があるからこそ最大公約数で確認してくんだろうが、まったく… >色んなやつが居ることを認める事をどうしてここまで悔しがる必要があるのかw
そういうのは共通の言葉が通じた上での話。
あんたはそれ以前 これじゃわかんないのが人の感性なんだよ
ドナルドって言われたらどこに思考がいく?
マクドナルドか?トランプか?
今なら一瞬考えてトランプだよな
オバマって言われたら一発でわかるよな
だから今はエマニュエルならマクロンなんだよ
おまえさんの言ってんのはその前振りが無い状態で、いきなりエマニュエルの件って言って周りが理解してくれないのを責められて、
んだよっ、マクロンて言えよと突っ込まれても、感性の違いだ、と言い張ってるのと同じなんだよ >>831
山田くーん、座布団いちまいあげてー
あー、やっぱり持ってっちゃいなさい すくなくともこのスレやSQL質疑応答スレで、SQL ServerをSQLと略すような奴の話は
まともに聞いちゃ駄目
感性がまともかどうかは置いとくが
その略しかたでは話が通りにくくなる事が理解できないやつなのは確かだから 教えて下さい
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のものか判別の仕方がわからなかったです。 select type, data from テーブル where year=2017 and month=1 and day=1 and (type='a' or type ='b');
じゃダメなのか? >>833
そう思うだろ?ところがまともな回答してんも俺だけなんだよなあ >>837
俺をダメ認定するのはお前の勝手だけどそれでお前の能力が上がるわけでもないぞ?
むしろ自己満足のために周囲の評価は下がる方向だけどいいんかそれで?w >>835
返信ありがとうございます。
type a と type b で同一の年月日で別の data を持つ為、それを同時に出したいのです。
ですので、それではダメでした。
>>838
カレンダー表示させる為のSQLです。
日毎にtype a の data と type b の data を表にしたいのですが、
できれば年月日を一回のループで終わらせたいのです。 ごめんなさい。自己解決しました
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'
でいけました
もっと簡単に書けるかもしれませんが、一旦これで済ませます
助言ありがとうございました >>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 fromの段階で2017年1月1日までは絞り込んじゃいかんの?
あとはCASE式でわければいいし >>846
クエリ1回で1ヶ月分だかの範囲取得したいんじゃないの?
しらんけど >>842
ちょっと悪い書き方だな。
だいたいSELECT句でtype列を選択してはいけない理由は何なのか? >>839
自分の客観的な評価を知ることができたとは思わないんだろうか PostgresSQLについて質問です
hogeテーブルに日時を2017-06-21 20:08:45のような形で保存しているdatetimeフィールドがあるとして、
「datetimeが現在日時から120分以内の行を抜き出す」場合にはWHERE節に何と書けばいいのでしょうか? >>853
where col between now() and now() + '120 minutes' すみません、言葉足らずでした
datetime列はそのときの現在時刻を入れていく列です
>>854のようにnowを使ってやってみます
ありがとうございました >>857
そこは解釈の問題
なので要件を確認した方がいいな そのときの現在時刻を入れていく列ってことらしいから
未来時間は入らないだろうなあ now() - interval '120 minutes'
と、intervalを明示しといた方がいい気がする テーブルとして
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辺り使えばいけるのかな? おお、あざす。ああHaving句とか知らんかった。
SQLiteでdistinct絡めたものがなんかコンパイルエラーになるけれど大筋は分かったのでいろいろ試してみる。ありー 成果物おいときますね
セレクト 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 SQL文を弾いてしまうの、どうにかならないものかな・・
中継クラウドがやっているようだ あまり話題にならないのは、レスでSQL文を書く用事があるのはこの板くらいだからかw 作業テーブル
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%')
どうすれば特定の文字列が入っている作業番号を抜き出すことができるでしょうか?教えてください >>870
なんかおかしな結合条件になってるけどそれぞれのテーブルはIDで紐づけてるわけじゃないの? 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の試験は半分国語の問題だからな。こういうのも意外と大事よ。 レス数が900を超えています。1000を超えると表示できなくなるよ。