◎正当な理由による書き込みの削除について: 生島英之とみられる方へ:
SQL質疑応答スレ 18問目 ->画像>2枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/db/1515071542/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。
SQLという言語はISOによって標準化されていますが
この標準を100%実装したDBMSは存在せず、
また、DBMSによっては標準でない独自の構文が
追加されていることもあります。
質問するときはDBMS名を必ず付記してください。
【質問テンプレ】
・DBMS名とバージョン
・テーブルデータ
・欲しい結果
・説明
前スレ:
SQL質疑応答スレ 17問目
http://2chb.net/r/db/1468157341/ よくある質問1
(問)
ID | DATE | DATA
--+----------+-----
1 | 2007-11-11 | aaa
2 | 2007-11-11 | bbb
1 | 2007-11-10 | ccc
3 | 2007-11-12 | ddd
3 | 2007-11-11 | eee
4 | 2007-11-10 | fff
1 | 2007-11-12 | ggg
このようなテーブルから、下記のように
1 | 2007-11-12 | ggg
3 | 2007-11-12 | ddd
2 | 2007-11-11 | bbb
4 | 2007-11-10 | fff
各idに対して最新の1件だけ抽出するSQLの書き方を教えてください。
(答)
select A.ID,
A.DATE,
A.DATA
from TableName A
inner join
(select ID, max(DATE) as MAX_DATE
from TableName
group by ID
) B
on A.ID = B.ID
and A.DATE = B.MAX_DATE
;
よくある質問2
(問)
key data
----------------
1 a
1 a
1 b
1 b
1 a
2 b
2 a
2 a
というテーブルから
key a b
--------------------
1 3 2
2 2 1
というExcelのピボットの様なデータを取得したいのですが、どういうSQLになりますか?
a,bというのは固定なので、仮にcというデータがあっても無視して構いません。
(答)
select key,
SUM(CASE data WHEN 'a' THEN 1 END) AS a,
SUM(CASE data WHEN 'b' THEN 1 END) AS b
FROM table
GROUP BY key
ORDER BY key
;
よくある質問3
(問)
ID HOGE
01 A
01 B
01 C
02 A
03 B
HOGEをAもBもCも持っている、ID:01だけ取り出すにはどうすればよかですか
(答1)
select id
FROM TableName
WHERE hoge in ('A','B','C')
GROUP BY id
HAVING count(DISTINCT hoge) = 3
;
(答2)
select *
from TableName T1
where not exists (select *
from (values 'A', 'B', 'C') T2 (HOGE)
where not exists (select *
from TableName T3
where T1.ID = T3.ID
and T2.HOGE = T3.HOGE
)
)
;
※valuesの部分(Table Value Constructor)はDBMSによって文法がかなり違うので注意
よくある質問4
(問)
列の数が可変な問合せはどう書きますか?
(答)
標準SQLでは書けません。
pivotという機能を搭載したDBMSなら一見書けそうですが実はやっぱり書けません。
Oracle 11g以降でpivot xmlというキーワードを使用すれば一応可変っぽくはなります。
が、素直にプロシージャを書くかアプリケーションで処理したほうが良いでしょう。
SQL Serverのpivot(2005以降)
http://msdn.microsoft.com/ja-jp/library/ms177410.aspx Oracleのpivot(11g以降)
http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/statements_10002.htm#CHDCEJJE http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html ダメだ
ブロック条件が厳しすぎる
誰か残りのFAQを貼ってくれ
よくある質問5
(問)
年月(YYYYMM)を指定し、その年月に対応する年月日を取得したい
例:201006を指定したら、以下の結果を得たい
20100601
20100602
・
・
・
20100630
(答)
SQLでは存在しないデータを生成することはできません。
この問いの場合は素直にカレンダーテーブルを用意しましょう。
よくある質問5
with TEMP (NUM) as (
select 1 from dual
union all
select NUM + 1 from TEMP where NUM < 31
)
select to_char(to_date('201006', 'YYYYMM') + NUM - 1, 'YYYYMMDD')
from TEMP
where to_date('201006', 'YYYYMM') + NUM - 1 < add_months(to_date('201006', 'YYYYMM'), 1)
;
※上記はOracleの場合です。(11gR2以降)
※再帰問合せをサポートするDBMSならこれを適当に改変すれば動きますが
どのみちお奨めしません。
よくある質問5 (後半の訂正)
どうしてもやりたければ以下のような方法もなくはないですが、
再帰問合せの本来の使い方ではありません。
やめておくことを強くお奨めします。
(PostgreSQLの連番を生成する関数なら辛うじてセーフかもしれませんが
賛否の分かれるところでしょう。)
with TEMP (NUM) as (
select 1 from dual
union all
select NUM + 1 from TEMP where NUM < 31
)
select to_char(to_date('201006', 'YYYYMM') + NUM - 1, 'YYYYMMDD')
from TEMP
where to_date('201006', 'YYYYMM') + NUM - 1 < add_months(to_date('201006', 'YYYYMM'), 1)
;
※上記はOracleの場合です。(11gR2以降)
※再帰問合せをサポートするDBMSならこれを適当に改変すれば動きますが
どのみちお奨めしません。
いちおつ
generate_series()関数がダメみたいだな
前スレ971の回答でも貼っとくか
select T5."T3_ID" "ID",
T5."T3_日付" "日付",
T5."T3_値" "値",
T5."T4_日付" "求めたい日付"
from (select T3."ID" "T3_ID",
T3."日付" "T3_日付",
T3."値" "T3_値",
T4."T2_日付" "T4_日付",
row_number() over (partition by T3."ID", T3."日付" order by T4."T1_日付" desc) "日付順"
from "TableName" T3
left outer join
(select T1."ID" "T1_ID",
T1."日付" "T1_日付",
T2."日付" "T2_日付",
row_number() over (partition by T1."ID", T1."日付" order by T2."値" desc) "値順"
from "TableName" T1
inner join
"TableName" T2
on T1."ID" = T2."ID"
and T2."日付" between add_months(T1."日付", -12) and T1."日付"
) T4
on T3."ID" = T4."T1_ID"
and T3."日付" > T4."T1_日付"
where T4."値順" = 1
or T4."値順" is null
) T5
where T5."日付順" = 1
order by 1,2,3
;
なんでそんな変なのばっかりなの?
ソートが頭から離れないのか。
>>13 パーティション切ってrow_numberで先頭行だから
オプティマイザの出来次第だけどパフォーマンスに大差はないと思うけど
相関サブクエリとjoinなら同じ実行計画はいたりするし
>>14 はいはい
どうせ正解は書かないんじゃなくて書けないんでしょ
mysqlでサブクエリを asに代入するとき、常に1カラムしかasできないため
サブクエリだらけになってしまうのですが、これをスマートに1サブクエリとかで取得できませんでしょうか?
SELECT
(
SELECT
max(num)
FROM
sub_table
) as max_num ,
(
SELECT
min(num)
FROM
sub_table
) as min_num,
(
SELECT
avg(num)
FROM
sub_table
) as avg_num
FROM
main_table
↑main_tableに sub_tableの min max avgを盛り込もうとすると
サブクエリだらけになってしまう。
これでそのSQLと同じ意味にはなる
何がしたいのかはよくわからんが
select sub.*
from (select max(num) as max_num,
min(num) as min_num,
avg(num) as avg_num
from sub_table
) sub
cross join
main_table
;
明らかに情報不足なのに情報を補完して回答しているからな。
>>26 メインテーブルとサブテーブルの結合条件がクロスジョインとは普通、思わない。
>>27 > メインテーブルとサブテーブルの結合条件がクロスジョイン
え?
>>19のSQLがクロスジョインだと思えないのは知識不足としか言いようがない
>>20は何も補完」してないだろ。逆に
>>19の意味不明な部分はそのまま字面通り解釈して回答してる。
>>29 main_table と「sub_table」の cross join だと思ってるなら知識不足以前の話かとww
やりすぎ防犯パトロール、特定人物を尾行監視 2009年3月19日19時7分配信 ツカサネット新聞
http://headlines.yahoo.co.jp/hl?a=20090319-00000026-tsuka-soci この記事で問題になった通称やりすぎ防パトは、創価学会と警察署が引き起こしていたようです
掻い摘んで説明すると
・創価学会は、町内会や老人会、PTA、商店会等の住民組織に関し、学会員が役員になるよう積極的に働きかける運動を
90年代末から開始し、結果、多くの住民組織で役員が学会員という状況が生まれた
・防犯パトロールの担い手は地域の住民と住民組織で、防犯活動に関する会議や協議会には、住民組織の代表に役員が出席する為
防犯活動や防パトに、創価学会が間接的に影響力を行使可能となった
・防パトは住民が行う為、住民が不審者や要注意人物にでっち上げられるトラブルが起きていたが
創価学会はその緩さに目をつけ、住民組織を握っている状況を利用し、嫌がらせ対象者を不審者や要注意人物にでっち上げ
防パトに尾行や監視、付き纏いをさせるようになった
・防パトは地元警察署との緊密な連携により行われる為、創価学会は警察署幹部を懐柔して取り込んでしまい
不審者にでっち上げた住民への嫌がらせに署幹部を経由して警察署を加担させるようになった
・主に当該警察署勤務と考えられる創価学会員警察官を動かし、恐らく非番の日に、職権自体ないにもかかわらず
私服警官を偽装させて管轄内を歩いて回らせ、防犯協力をお願いしますと住民に協力を求めて回り
防犯とは名ばかりの、単なる嫌がらせを住民らに行わせた(防犯協力と称し依頼して回っていた警察官らの正体は恐らく所轄勤務の学会員警察官)
※これに加えて防犯要員が同様のお願いをして回る
・こうして防犯パトロールを悪用し、住民を欺いて嫌がらせをさせつつ、創価学会自体も会員らを動員し、組織的な嫌がらせを連動して行った
つまり警察署に勤務する学会員警察官、警察署幹部、創価学会が通称やりすぎ防犯パトロールの黒幕
詳細は下記スレをご覧下さい
やりすぎ防犯パトロールは創価学会と警察署の仕業だった
http://2chb.net/r/bouhan/1516500769/ 質問です
以下のようなTableAとTableBをTableAのIDで結合して、
1. TableBに特定のKEY(ここではKEY=2)が含まれているならそのデータを、
2. 含まれていなければ若いKEYのデータを、
3. KEYそのものが存在しなければNULL
を返す結果を取得したいです
どのようなSQLなら実現しますか?
「TableA」
ID | NAME
--+-------
1 | aaa
2 | bbb
3 | ccc
4 | ddd
「TableB」
ID2 | ID | KEY | DATA
--+----+-----+-----
1 | 1 | 1 | a_key1
2 | 1 | 2 | a_key2
3 | 1 | 3 | a_key3
4 | 2 | 1 | b_key1
5 | 2 | 2 | b_key2
6 | 3 | 1 | c_key1
7 | 3 | 3 | c_key3
「結果」
ID | NAME | ID2 | DATA
--+---------+----------
1 | aaa | 2 | a_key2
2 | bbb | 5 | b_key2
1 | ccc | 6 | c_key1
3 | ddd | NULL | NULL
訂正
「結果」
3 | ccc | 6 | c_key1
4 | ddd | NULL | NULL
>>33 SQL-Server なら
select T.ID as ID, T.NAME as NAME, T.ID2 as ID2, T.DATA as DATA
from (
select
row_number() over (
partition by TableA.Id
order by
case TableB.[KEY]
when 2 then 0 else 1
end,
TableB.[KEY] asc
) as R,
TableA.ID as ID,
TableA.NAME as NAME,
TableB.ID2 as ID2,
TableB.DATA as DATA
from TableA left join TableB on TableA.ID = TableB.ID
) T
where T.R = 1
>>35 ありがとうございます
使用しているのはMariaDB 10.1でしたが(書き忘れ失礼しました)、頂いた解答をヒントに試してみます
>>36 う〜ん、MariaDB使ったことないけど
https://mariadb.com/kb/en/library/row_number/ を見るとrow_number()は10.2.0以降でないとダメみたい
10.2.0には上げられないの?
>>37 こちらもちょうどそこに行き着いてました
バージョンを上げることは可能なので最新版にアップデートして試してみようと思います
わざわざ調べて頂き感謝します
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
SQLがなかなか覚えられません
SELECT が先頭に来るのは覚えていますが、
次がFROMか、WHEREか迷ったりします
なにか覚えやすい方法ってありますか?
>>40 順番はきっちり決まってるから覚えれば迷うことはない
それすら覚えられないならマやめた方がいい
集計で、nullがあれば0で、nullが1つもない場合は最大値や最小値を取ってくるような書き方ってないでしょうか?
>>44 CASE式で
SELECT c1,
CASE (SELECT count( * ) FROM t1 AS a WHERE a.c1 = b.c1 AND c2 IS NULL)
WHEN 0 THEN sum(c2)
ELSE 0 END
FROM t1 AS b
GROUP BY c1
設計見なおしたほうがいいパターンだと思う
少し違うやり方だけどこっちのほうがパフォーマンスはいいかも。
SELECT c1, CASE sum(c3) WHEN 0 THEN sum(c2) ELSE 0 END
FROM (SELECT c1, c2, CASE WHEN c2 IS NULL THEN 1 ELSE 0 END AS c3 FROM t1) AS t2
GROUP BY c1
ORDER BY c1;
>>45 >>46 ありがとうございます!
後者の方が問い合わせが少ない感じで良さそうですね。
uelect文を2つ書いてunion allの方がよっぽど可読性が高い。
union言いたすぎてuelectになっちゃう奴カワユスw
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having 列名 is null
union all
セレクト max(カラム名) as カラム別名 from テーブル名 group by グループ列名 having 列名 is not null
uelectになるのにビビってセレクトになっちゃう奴カワユスw
いつもSQL書かずに意味不明なイチャモンだけつけてた人が
珍しくSQL書いたと思ったらやっぱり意味不明なSQLじゃんか
havingの意味分かってないんだろうな
>>55 おい勘違いするな
いつも意味不明なイチャモンつけてるアゲは俺だ
アゲだからといってバカと一緒にされては困るなw
union all期待してたのに。。。こんな結果なの??
>>45のやつはCASE WHEN EXISTSにしたほうがよかったね
SEなんだが殆ど要件定義とか折衝が主担当だから
SQLの知識があんまりなくていつも効率悪い調査の仕方だったりベンダーさんに投げてしまったりになってしまうんで質問させてください
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付
Bマスタ
名前 社員番号 適用開始日 適用終了日
【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)
を抽出したい場合はどうすればよいでしょうか?
実業務ではベンダーさんからの報告で解決したのですが次からは自分でも頑張ってみたくて勉強したのですが実際に書こうと思うと全く上手くいきませんOTL
>>59 すみません構文もめちゃくちゃだし途中まで書いてわからなくなっちゃったのですが
上から一つ目
select B.名前,B,社員番号 from Aテーブル A inner join Bマスタ B
on A.名前 = B.名前 or A.上長名前 = B.名前
where
A.日付 between B.適用開始日 and B.適用終了日
ってとこまで書いて挫折してしまいました・・・・・
COUNT、EXISTSを使えばよさそうだなとは思うのですがどうでしょう?
ちなみに2つ目のはまったく見当もつかない状況です・・・・
元は営業職で今期から情報部に異動してきて勉強はしてるのですがまったくわかりません・・・
本職SEの方の文の書き方の考え方のコツなんかも教えていただけるとうれしいです
>>55 having に集計関数と書かずにカラム名と書いたら、見事にそこだけ問題視するんだな。
セレクトと書いているのもSQLインジェクション対策に引っかかるため。
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having グループ列名 is null
union all
セレクト max(グループ名) as カラム別名 from テーブル名 group by グループ列名 having max(グループ名) is not null
曖昧質問に対して勝手な想像で要件を決めつけて答えるのはよくない。
そもそもSQLをずばり教えてくれというのが間違い。
>>57 select句にselect文を書くのを推奨するな。
>>60 あなたが書いているとおりに書けばよい。
なぜ一つのSQLでいきなりやろうとするのか?
>>60 それあなたのいう1つ目もできていない。
少なくともそのSQLにこだわりがあるのなら、内部結合ではなく外部結合しなければ、1つ目も達成できていない。
>>62 ここで動かしてみてくれよ
そういうクエリでも動くDBMSがあるんならぜひ知りたい
http://sqlfiddle.com/#!17/05796a >>60 1. SQLの研修を受ける
2. 最小限のテストデータを作成して試行錯誤を繰り返す
3. 少し高度なクエリをWebや書籍で学ぶ
まず1と2をやること(
>>58のやつはSQLの研修を受講すれば解決できるレベル)
基本的なクエリは問題なく出来るようになってから3に進む
3はミックのブログやセルコの本がおすすめ
あと要件定義が主な担当なら
SQLの書き方よりもDB設計を学んだほうが役立つ度合いが大きいよ
>>71 SQLの受講は予定してるけど・・・
ここってそういうの教えてくれる板じゃないの?
勉強法なんて聞いてないんだが
こいつはクズだね〜w
営業をお払い箱になって情シスでもお荷物だな
簡単に解決できるレベルとかいって勉強法講釈たれる奴もどうかと思うがな
>ベンダーさんに投げてしまったりになってしまうんで
とか言ってるやつがこのスレに投げるだけになるんだぜ
鬱陶しいだろ
問題を解くコツを教えてもらおうとする前に基礎を学べってことだろ
内部結合や外部結合は算数で言えば四則演算レベルの基礎なんだからさ
教えたがりのくせに質問には答えたくないてどないやねんw
そのややこしい承認欲求どうにかしろやw
>>60だけど
やっぱりSEって気持ち悪いな
ベンダー嬲り倒すことにしたわ
てか早く答えろやwwwPGしかできないアホなんだからこれくらいすぐ答えだせwwwwww
>>81 どこが出てるんだよwwwwww
やっぱSEって頭おかしいのしかいないのなwwwwww
おまえマジかww
回答してくれた気持ち悪いエス・イーさんの親切心台無しだなww
困ったら黙っちゃうSEさん達現実でも2ちゃんでも同じなんだね・・・・・
>>44 これでもいける
select c1,
case when count(*) = count(c2)
then max(c2)
else 0
end
from t1
group by c1
order by c1
>>85 そんな答え出てるものより60でも答えたれや
>>87 それではその答えを31文字以内で示しなさい。
>>87 どこにでてんだよwwwwww
あほかよSEさんwwwwww
二人もおるんかww
インターネッツの使い方も知らないんやなwwwププッ
箇条書きの条件それぞれのsqlつくればいいのか?
それなら簡単じゃね
こんな簡単な SQLも教えられないとかゴミしかいないんだなここ
そりゃ営業上がりに馬鹿にされるわけだわ
ほらこの答え出るまで
俺居座るからなはやくだせや
他のやつ質問すんなよこれが最優先だから
簡単なSQLすら理解できない人に教えるとか無理ゲーやろ
>>101 >>102 お前ら池沼にSQL教えられんのか?
>>58 Bを取り出すSQLを考える
select b.* from b
存在する社員をだす
exists (select 1 from a where a.名前=b.名前)
本来欲しいのは逆なんだから
select b.* from b
where not exists (select 1 from a where a.名前=b.名前)
かけ算も割り算も分かってないやつが
四角形と三角形の面積の求め方を教えろと質問してるのと同じ状況なんだよな
かけ算も割り算も分かってないってことが分かってないレベルなら
かけ算がよくわからないので教えて下さいって言えるところまでは最低でも自力で勉強すべき
例えが全然的を射てないんだよなあ
かけ算と SQL同列に語って池沼に教えるのと同じってw
お前の方がどうかと思うぞ 部下とか後輩から嫌われてない?w
>>106 ガイジキタ━━━━(゚∀゚)━━━━!!
悩める教えたがりクン
>>105 愛くるしいよぅ〜wwww
うわっ今どきキターとか使わないで
恥ずかしいから辞めた方がいいよ
>>105 このスレ否定しちゃったよwwwwww
アホかwwwwwwお前は2度とここ見なくていいからwwwwww現実で偉ぶってろやwwwwww
みーんなおまえのこと嫌いだろうけどwwwwww
内部結合/外部結合はかけ算/割り算レベル
それが分からないから難しいと思っちゃうんだろね
>>114 どんだけお礼欲しがりなんだよw
はいはいありがとうございましたwwww
ちょっとまて誰だ教えてくれたやつって?
何嘘ついてんだよ騙されたじゃねえか
>>118 PGSEさんは作業するだけだもんねー
大変だなあwww応援してるよ!頑張ってよ!
>>122 SQL初心者スレみたいな質問にもまともに答えられる奴が1人もいないってどうなん?
>>123 データベース板は過疎板だから。いるのはインフラ屋ばかりでSQLはよくわからない。
回答出てるのにレスが池沼だからスルーしてるだけだろ
なんか俺のふりして頭おかしい人っぽく印象操作してるゴミSEがいるみたいだなトリップ付けとくわ
>>127 1つ目の質問はこれでできると思うが
2つ目の質問が答え出てないぞ
104答えたの俺だけど60バカみたいで何も考える気が無いみたいなんで
2つ目答えようとおもったけどやめるわ
別にせんでもいいのに5ちゃんでまで出来ない言い訳をしてしまうバカ正直なバカかわゆすw
お前みたいななんの特徴も個性もないゴミSEが名前つけなくていいからね^ ^
名無しに戻って2度と戻ってくんなよ^ ^
1週間もたってこの程度解決できない奴って
うちの会社だったらありえないわ
去年入った新人ですら余裕で解決できるぞ
やっぱ能力無いやつっているんだな
>>134 な!こんな簡単な問題も解けないとか民度低すぎるわここ
あ!俺はもう SQLなんて民度低い言語勉強するのやめたからお前ら頼むな!
その能力ない奴に使いっぱにされるSEさん可哀想・・・・・
SEやめよ
>>135 それぞれの名前、上長と結合したカウントをselect句に書けばいいだけだが
それすらかけないんだろw
添削してやるからかいてみろ
このスレのスルー力のなさは民度低すぎと言われても仕方ないレベル
>>138 御託はいいから書いてみろよw
添削してやるって言ってるだろw
何意味わかんねえ事のたまわってるのお前ら
DB板とかいう糞過疎板とか初めて来たんだがなんだよその恥ずかしいコテ
いいから早く答えだけ書けばいいんだよ
>>145 あん?あんま調子に乗るなよウェレクトくん?オコっちゃうよオレ
データベースのquery limit 75,000って何でしょうか?
ワードプレスを利用していますが、query limit 75,000を超えたとかで表示が制限されてしまいました・・・。
1時間で75000人以上はアクセスできないということでしょうか?
また、今後このようなエラーが起きたいために何かできることはないでしょうか?
不要なプラグインは既に削除しています。
よろしくお願いいたします。
>>149 スレチ
WordPressのスレへどうぞ
いえ、でもmysqlの問題でもあるんですが・・・。
ググれゴミ
今は俺の答え出るまで他の質問受け付けてないから
>>151 MySQLの問題でもないから
ホスティング会社に問い合わせてね
【ゴチ大杉漣(66)】 小森常務゜:(つд⊂):゜「致死量の放射能を放出しました」 【ブルマ鶴ひろみ(57)】
http://2chb.net/r/liveplus/1520303016/l50 うっせえSE如きが意見してんじゃねーよ
はやく答えろやゴミ
ってみんな思ってるからな?wwwそういうふうに思いながら仕事しろよ?wwwwww
そろそろ飽きてきたから俺が答えちゃおうかなwいいのか?お前ら?w
でたー!wwwwww
NGにしてるで勝ち誇ってるやつwwwwww
・SQLインジェクション対策はシングルクォートを空白に置換すればOK
・テーブルで年月のみを入れる項目は文字列型で定義
この辺を論破できないので悲しい...
シングルクォートなんてデータ入れねーよ m9(^Д^)プギャー
年月のみならサイズを小さくできるよといわれる
年月を文字型にすると
・比較相手によってはキャストが必要
・範囲チェックが働かない
・容量が増える
逆に年月を文字列型にするメリットって何かあるの?
あと速度的なとこも気になるね
>>164 いまどき数バイト削るためにコンピュータの数値型を使うのは時代錯誤。しかもリレーショナルデータベースでは文字として出力するのが優先だから文字表現でデータを格納するのが基本。
気持ち悪い話してないではやく
>>60答えろやごみども
多くのゴミの中でも本当にゴミと言えるのは
>>172だけやでw
>>167 int型の項目値を文字列に変換する方がはるかに負荷が大きい。
正直なそんな低レベルなDB設計してる奴がいるとこで働いてるお前がかわいそうだわ
んでそんな話どうでもいいから早く質問答えろな?
年月は数字項目にしといたほうがトラブルが少ない。整合性チェックにもなる
文字列にして文字が入ってたりすると日付形式に変換する時エラーになる
>>167 キャストが必要というのもコンピュータの数値型を使っていても、最終的には文字列に変換する。
年月の同士の計算が膨大にあるのであれば理解できなくないが、日付項目同士の比較は日付型で行う。
コンピータの数値表現で扱ってしまうと、まず日付型に変換し、実在しない年月や、1ヶ月前、1ヶ月後、月末日等の特定に2段階のキャストが必要になる。
現実には存在しない年月を生み出してしまうリスクまでとる必要がない。
何度も言うが年月の単純計算などほぼないうえに、文字列に大小判定は気にせず、コンピータの数値ばかりこだわるのはリレーショナルデータベースを理解していないどころか、コンピータを理解していない。
>>60の簡単なSQLも書けないアホが何言っても滑稽なだけですよ^ ^
一人で勝手にint型や数値型を持ちだしてそれを的外れな長文で否定w
文脈を理解してないどころか、一般常識を理解していない。
★★★根税制による格差解消は、赤犬を根絶しユダヤ支配を永遠に終わらせる為の決め手である。★★★
▲
▲ この掲示板(万有サロン)に優秀な書き込みをして、総▲額148万円の賞金をゲットしよう!(*^▲^)v
http://jbbs.livedoor.jp/▲study/3729/ →リンクが不良なら、検索窓に入れる! >>175 >>178 いつもCPU100%にしちゃうから勉強になります!!
統計情報も取らないアホ集団で仕事してるのはわかったから
はやく俺の質問答えてや^ ^
>>188 統計情報はユーザーが取るものではないぞw
訳のわからんツッコミにさすがの神もタジタジの様子w
MySQL (InnoDB) で ALTER TABLE をする際の振る舞いとしてテーブル単位のロックではなくインスタンス全体をロックしているような挙動を示しています
innodb_file_per_table を疑ったが ON だったのですが何が問題なんでしょうか
>>192 追記:
原因の切り分けが非常に難しく、 AWS RDS を利用しているからこうなっているのか、
それともこの挙動が発生したインスタンスに大量のデータベース・テーブル(150万テーブル以上)が存在していることが問題なのか、
他に見落としている条件がないかを調査している。
>>194 MySQLの問題だからねそれ。
あと今質問打ち切ってるよ?
>>195 150万って別に普通だと思うが?アホ?
ああごめんね。テーブル数150万はないわ。
どんな教育受けてきたん?
はいこの話終わり早く答えて
>>198 そうだね教えを請うたことないわ
いっつも享受する側だわ
スキーマテーブルレコードカラムの違いがわかんないアホがこのスレ使ってんなや!
「指摘したって言う奴の指摘は大体間違っている」の法則
>>203 こんな簡単なSQLも作れないの?
仕事辞めた方がいいんじゃない?
>>205 きみ本当のあほみたいだから2度とこないでね
>>207 書き間違えまで揚げ足取るってやべえなここの民度
>>210 お前あほ?俺に安価つけてんなよゴミSEが
読み間違えた挙句にアホ呼ばわりする人間が民度を語るなよ。みっともない奴だな。
>>213 君名前欄も読めないメクラさんかな?
民度どうこうなんて言ってないんだけど?
文体から伝わってくるんだけど加齢臭口臭やばいでしょあなた?
>>212 あら「普通」の概念が破綻してる方がまたいらっしゃった
あら「普通」の概念が堅固なバカがまたいらっしゃった
select A1,A2 from tableA
select B1 from tableB
これをそのまま流すと結果は2行になりますが、
これをA1,A2,B1と1行でとる方法はないでしょうか
書き忘れましたが、どちらも1行しか返さないSQLです
>>219 それぞれの実行結果が1行しかないなら
select tableA.A1, tableA.A2, tableB.B1 from tableA, tableB;
MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?
よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL
MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。
>>223 おそらくデータベースに設定している文字セットで不整合があるんだろうと思いますが
MySQLの設定方法に関する質問の場合は、ここで聞くよりも、
MySQL 総合 Part26
http://2chb.net/r/db/1499949595/ で聞いた方が良いかと思います。
MariaDBに関するスレもあります。覗いてみると良いかもしれません。
http://2chb.net/r/db/1360677476/ with句で取得した数列を別のテーブルでその数列と一致するレコードを取得したいんだけどどうすればいいでしょう?
withで別で取得したリスト名Aとし取得結果がBだとすると
select ※ from X
where X.C IN (SELECT B FROM A)
で取得しようとしたんだが上手くいかずいろいろとぐぐってみたけどわからなかったです・・・
withで別で取得したってのが意味わからん
その部分を含めてどうやろうとしたのか書けば答えようもあるが
すみません。書き方が悪かったです。
使用しているのはoracleです。
with A AS (SELECT X FROM Z
GROUP BY X)
SELECT COUNT(※) FROM B
WHERE B.C IN(SELECT X FROM A)
のような文を書いてエラーとなりました。
イメージ的にはZテーブル上のXの数列についてBテーブルに何件存在するかを確認したいです。
参考書でも開けばそんくらいわかんだろゴミ
早くお前ら答えろや
スレチの質問には誘導して俺の質問には答えないって根性捻れまくりだろお前ら
「Xの数列」という説明が他人には理解できない。
Xがひとつの列だとするとなぜグループ化なのかわからない。
さらに再帰クエリにして、別のSELECT文のINリストのSELECT文にしているのも意図がくみにくい。
かなり単純なことを聞いていると予想はできるが、なぜこんなに難しく考えているのか?
本当に
>>229の通りに書いているならcount(※)がcount(*)の間違いだが
それ以外に致命的な間違いは見当たらない
まあこう書いても同じ意味にはなる
select count(*) from B inner join Z on B.C = Z.X;
再帰のないWITHを再帰クエリと呼ぶなということか。
ただOracleは再帰があってもなくてもただWITHと書いて、再帰のないWITHと言ったりするからそう書いた。
標準SQLではWITH RECURSIVEと書かないといけないが、Oracleはたしかこの構文がない気がする。
>>232 B.CかZ.Xの少なくともどちらかがユニークでないと同じ意味にはならん
このスレはSQL入門スレなのかSQLオタクスレなのか?
よくわからない質問に、エスパー回答をするというIT技術者の間ではあまりないやりとりが多い。
テンプレ見ろゴミ
ここは初心者用スレだよ
なのに俺の質問は基礎的すぎるとかいう謎老人のおかげで誰も答えんのや
まじでゴミSEは右ならえの自我すら持たない穢多非人よ
>>239 IT技術者の間ではよくわからない質問によくわからない回答をして
お互い納得するのがデフォルトスタンダードですものねw
まず質問者が無礼。回答者がとりあえず想像で回答。これがこのスレが機能していない理由。
>>240 初心者向けであれば、SQLを回答するのではなく、何をしようとしているのを確認するのが先です。できればいい論をデータベース板で確認するのはおかしいので、プログラム板やプログラマ板で質問すべきです。
>>245 わかったわかったお前の意見とかどうでもいいわ
文体見るだけで中年のごみおっさんってわかるわやばいよ君?
匿名の掲示板で誰でも書き込めるんだから
気に入らなければスルーすれば良いだけ
質問者が無礼って、お前に害悪を加えてきたわけじゃあるまいし
助けてください。
ACCESSのDBなんですが、
tblAは、[id][なまえ][電話番号][性別][入会日]というフィールド構成のマスター名簿
tblBは、[id][入金日][入金額]というフィールド構成です。
このテーブルを元に、ACCESSやEXCELのVBA上で、
[id] [なまえ] idごとの[入金額]の合計 WHERE 昨日=<[入金日] <= 明日
というレコードセットを取得したいです。
tblBの集計に、tblAからもってきたなまえフィールドをくっつけたい、という感じです。
INNER JOINとか、そういうのを駆使して、なんとかひとつのSQL文を作りたいのですが、
うまくいきません。
どなたか、SQL文そのものをご教示ください。
お願いします。
>>248 このままだとよくわからん
「誰が」入金したという情報はどこで管理しているの?
>>249 すみません。idというのは、メンバーidのことです。レコードidではありません。
わかりづらくてすみません。
メンバー(マスターで、idから名前がわかる)による入金の記録がBテーブルです。
それぞれのメンバーが、合計でいくら入金したのか、を集計したいのですが、
Bテーブルにはidしかなく、集計表には名前も欲しいので、Aテーブルから持ってきたいのです。
>>250 君質問する以前の問題だよ?
あと今質問受け付けてないからばいばい
>>250 えーと
同じ日に2件以上の入金はないということ?
>>252 ありえます。
なので、SUM[金額] GROUP BY id としたいです。
>>253 そもそもテーブル設計がまずいのでは
同じ人が同じ日に同じ金額を入金したらどうなるの?
主キーは?
Bテーブルにはオートナンバーのridフィールドがあります。
>>248
Accessは知らんが一般的なSQLではこんな感じ
select A.id,
A.なまえ,
B.合計
from tblA A
inner join
(select id,
sum(入金額) as 合計
from tblB
where 入金日 between 昨日 and 明日
) B
on A.id = B.id
; >>248 accessで作ってやったぞ
これでどうだ。
SELECT tblA.ID, tblA.[なまえ], Sum(tblB.入金額) AS 入金額の合計
FROM tblA INNER JOIN tblB ON tblA.ID = tblB.ID
WHERE (((tblB.入金日)>='2018-04-06' And (tblB.入金日)<='2018-04-08'))
GROUP BY tblA.ID, tblA.[なまえ]
ORDER BY tblA.ID;
【シオンの議定書は反日】 『マス・レジャーとクイズを盛んに』 『あなたは極めて優秀だから寝返れ』
http://2chb.net/r/liveplus/1523323225/l50 >>4 のよくある質問2で、keyに別テーブル?配列?を指定することはできますか。
(key=3など、BDにない項目のカウント結果は当然ゼロになるが、それも結果として欲しい)
1〜12の数値(月)で集計するとか、47都道府県をキーとするとか、
ニーズはありそうなので方法もあるように思うのですが。
DBは、Google Fusion Tablesです。
OUTER JOIN? …慌ててググる…そうそうそれです!
Google Fusion TablesはWHERE句で関数が使えないなどSQLはやや貧弱なのですが、
OUTER JOINはあるようなので(LEFTだけ?)勉強してやってみます。
ありがとうございました。
https://developers.google.com/fusiontables/docs/v2/sql-reference おいおいおいおいouter joinとかいう初心者以前の質問には答えて
俺の質問には答えんのかい
お前らほんと捻くれてるな
これだからSEとかいうオタク共はいじめたくなるんだよなあ
>>266 答えられんのはプログラマーとかゆうコーダーだろ
SEとゆうのは俺様みたいな有能のことたぜボーイ!
テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど
この値がどのidなのか毎回自分でテーブル確認してinsertするのが大変で困ってます
リストボックスみたいなので'ゆうちょ'を選んだら(bank_id=)3みたいに支援してくれる機能ってSQLでできませんか?
RDBMSはMySQLでLinuxのターミナル使ってます
それはSQLではなくWeb画面等使って選択させれば良いだろう
>>271 IDを使わず銀行名でやってみてください。
自分が経験しなければ、なぜそうした方がいいのか、わかりませんよ。
>テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど
それは分かってるっていうよりメリットデメリット理解しないまま鵜呑みにしてるだけだよね。
どうせ鵜呑みにするなら教科書通りのリレーショナルDB設計から入ればいいのに。
更新時のレコード件数を減らしたり情報の集約・一元化がメリットですよね。ざっくりとは理解してるつもりです。
ただターミナルからSQLで複数のレコードを追加するには自力でテーブル確認する必要あるのが使いづらいなと思って
select bank_id from m_bank where bank_name = ’ゆうちょ’
こんなサブクェリーを追加SQLに埋め込む
>>278 こういうときに副問合せ使うんですね、使いやすそうで凄く良さそう。
早速使ってみます。
ありがとうございます。
>複数のレコードを追加するには自力でテーブル確認する必要ある
これの意味が判らん
説明下手ですみません。
初心者なのですごく初歩的な質問でした。
取り敢えずサブクエリで解決しましたが一応
habook:
id, money, method_id
...
135, -5000, 58
...
method:
method_id, method_name
...
58, 'ゆうちょ銀行'
...
INSERT INTO habook VALUES (200, -1000, ???)
method_idが多くてゆうちょ銀行のidがパッと思い出せなくて詰まる
methodテーブルを自分で確認してソニー銀行のidを調べてinsertに打ち込む
同じような感じで外部キーの列が増えるとインサートする度に自分で調べる必要があって大変になってきたのでなにかいい方法ないか聞きました。
混乱させてすみません。
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付
Bマスタ
名前 社員番号 適用開始日 適用終了日
【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)
を抽出したい場合はどうすればよいでしょうか?
>>282 自分でそういうプログラムを作ればいい。
>>284 トランザクションデータをトランと略しているあたりから、どこかの会社だろう。
>>283 外部キーが社員番号ではなくて名前なのはネタだからか?
>>282 どのぐらいの頻度でSQL使うかわからんけど、こんなのでもいいんかね
insert into habook(id, money, method_id)
select 200, -1000, method_id from method where method_name='ゆうちょ銀行'
>>283 >>58と同じみたいなんだが、いまだにわからないのかw
銀行は銀行名の変更とか合併とかあるから
そういった事も考えないといけない
お前らはどうしても俺の質問には答えたくないみたいだな
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付
Bマスタ
名前 社員番号 適用開始日 適用終了日
【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)
を抽出したい場合はどうすればよいでしょうか?
>>295 同じ名前の社員がいたとき、どうすれば良いの?
もうここしか頼るところがございません。
SQL server7.0が、綺麗にwin10のPCだけつながらなくなりました。
「接続できませんでした。 SQL state'ST100'
SQL server エラー0
[microsoft][ODBC SQL server driver] ログインが時間切れになりました」
と出ます。どうすればいいのでしょうか
>>298 ああこれはログインが時間切れになってるね
ログインが時間切れにならないように注意しなよ
>>298 なんでこの板まで来て
Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
http://2chb.net/r/db/1464508208/ に行かないの?
外部キーって必ず他のテーブルの主キーじゃないとダメなの?
主キーでなくてもUNIQUE制約がついていれば大丈夫だと思う
>>303 >>304 これ自分も知りたいからageてみるか
>>303 一意制約の列でもよい。要は重複値を持っている列では外部キー制約に使用できない。
>>304 >>306 ありがとうございますm(_ _)m
DB殆ど触ったことないので分からないのですが、
1. SQLでは[ユーザー名, パスワード, [データA], [データB]] (便宜的にリスト形式にしています)
のようなDB構造は作れるのでしょうか?
つまり、ユーザー名とパスワードは1ユーザに1つずつ、データA,B,C、、、は内部に複数のデータを持つような構造です
ちなみに扱いたいSQLはpostgreSQLです
2. node.jsとpostgreSQLを使ってウェブアプリを作ろうと思っているのですが、postgreSQLでは最初にDB構造の宣言などはしなくて良いのでしょうか?
Swift + RealmでDBを使った際には、ユーザーモデルっていうDB構造?を宣言してから使ったので、少々混乱しています
3. node.jsとpostgreSQL(npmで)をWindowsにインストールしたのですが、postgreSQLが動きませんでした
WindowsにもpostgreSQLをインストールしなければいけないのでしょうか?
よろしくお願いします
MySQLです。数値を計算するSQL文ってあるでしょうか?
例えば、rankingテーブルに「access」と「click」というカラムがあるとします。
accessは×1でclickは×5にして、その合計数値が多い値(降順)で表示
みたいなことがしたいです。
>>308 まずはDBを触りましょう
SQLではと書いているということは他ならわかるのでしょうか
RDBでは一般的に
[ユーザーID,ユーザー名,パスワード]
[ユーザーID,データ番号,データ]
のようなテーブルを作成してユーザーIDで結合します
これを正規化といいます
>>309 素直に
order by (ranking.access + ranking.click * 5) desc
でいけるかと
SQL初心者です。
連続して1が立っている時間
(行数、データ数)は求められないでしょうか。
1が出てきたタイミングで後どれだけ続くかをその行に書き込みたいです。
>>310 いけました!orderに計算するって概念がありませんでした。
とても勉強になりました。ありがとうございます
>>311 どういうテーブル、イメージしてるデータの並びを書かないとレスつかないんじゃないか
>>313 ありがとうございます。
A B
0 0
0 0
1 3
1 0
1 0
0 0
0 0
AからBを作りたいです。
Bの3は1が3つ続いていることを意味します。
>>314 順序も規定せずに 「続いてる」とか言われてもなあ
Excel + VBA とかでやれば?
>>315 >>316 No A B
0 0 0
1 0 0
2 1 3
3 1 0
4 1 0
5 0 0
6 0 0
7 1 2
8 1 0
9 0 0
例えばこの様な連番が有れば出来るものでしょうか。
すみません。
SQLで出来るのか?
出来るならどのような方法が有るのか
知りたいです。
よろしくお願いします。
>>317 これで
2 1 3
7 1 2
がとれたらいいわけ?
時間っていってたわりにはそういう結果をかいてないが
最新の(つまりinsertする前の)NoでAが1で、かつ追加するデータのAが0だったら
直前のAが0のデータのNoを見る
例ならNoが9の時に0になったから直前のAが0のデータはNoが6だと。
んで、7,8が連続したものだった
だからNo7のBに2をセット
こんな感じ?
>>318 分かりにくく申し訳ありません。
元々時系列のデータだったので
時間という書き方をしていました。
(何個続いたか知りたいのです)
NOとAの項目がある状態でBの項目
を追加したいと思っています。
318様のような結果でも構いません。
>>319 MSのSQL Serverです。申し訳ありませんが詳細なバージョンなどは不明です。
>>320 ありがとうございます。
書かれているようなことが
実現できればと思います。
>>317 SQL文でやるならレコードを次々と参照しないといけないから再帰SQL使わないとだめだろうな
あるいはプロシージャでカーソル使う
あるいはプログラムでやる感じになる
SQL Serverでなく、MySQLです、済みません。テーブル名はtと仮定しました。
create procedure setB()
begin
declare done int;
declare _flag int;
declare _cnt int;
declare _a int;
declare _no int;
declare cur cursor for select No,A from t order by No desc;
declare exit handler for not found set done = 0;
set done = 1;
set _flag = 0;
set _cnt = 0;
open cur;
while done do
fetch cur into _no, _a;
if _a = 1 and _no > 0 then
update t set b = 0 where No = _no + 1;
set _cnt = _cnt + 1;
else
update t set b = _cnt where No = _no + 1;
set _cnt = 0;
end if;
end while;
if _a = 1 then
update t set b = 0 where No = _no;
else
update t set b = _cnt where No = _no;
end if;
close cur;
end;
>>322 ありがとうございます。
教えていただいたキーワードをもとに
調べてみます。
>>323 ありがとうございます。
今はPCをさわれる環境にないので月曜日に試してみたいと思います。
>>322
再帰やストアドなんて要らんでしょ
>>318 の結果を得たいだけなら
select
T1.NO, T1.A,
(
select min(T3.NO) as NO
from T as T3
where T1.NO < T3.NO and T1.A <> T3.A
) - T1.NO as [連続数]
from T as T1
inner join T as T2 on T1.NO - 1 = T2.NO and T1.a <> T2.a
where T1.A = 1
で十分でしょ (わかると思うけど表名は T ね) >>325 ありがとうございます。
試してみます。
再帰SQLでやるならこんな感じ
最初に1がでたところで表示したいとのことなので
レコードの最後から加算積み上げてる
半角でレスしようとしたらインジョクションかなんかでエラーになった
ため全角に変換してます
WITH CTE AS (
SELECT NO,A,A AS B
FROM TBL AS M
UNION ALL
SELECT M.NO ,M.A ,S.B + 1 AS B −−Bを1で積上げていく
FROM TBL AS M
inner join CTE AS S
on M.NO = S.NO −1 −−レコードの後ろから参照
and S.A = 1
and M.A = 1
), [WK1] AS (
SELECT NO,A,max(B) as B −−Bが積上開始位置により別々の数字になっているので最大値でサマリー
FROM CTE AS M
GROUP BY NO,A
)
SELECT M.NO,M.A,case when S.A = 0 then B else 0 end B −−前のレコードがゼロの時のみBを表示
FROM [WK1] AS M
LEFT JOIN TBL AS S
on M.NO −1 = S.NO
ORDER BY M.NO
>>325 >>327 ありがとうございます。どちらも思ったような結果が得られました。
>>323 ありがとうございます。
今回は動かせていませんが、MySQLをさわる機会に試してみます。
4月末よりSQLを使わなければいけなくなり、困っていました。
皆さんに教えていただいた方法を理解し自由にSQLが書けるよう頑張ります!
教えて下さい。
下記の表Tに於いて
NO,START,STOPが与えられているとき
KEKKAという行を得たいです。
良い方法があれば教えてください。
(STARTからSTOPの間に1を立てたい)
DBはMicrosoft SQL Serverです。
NO START STOP KEKKA
1 0 0 0
2 0 0 0
3 1 0 1
4 0 0 1
5 0 0 1
6 0 1 1
7 0 0 0
8 0 0 0
よろしくお願いします。
>>330 わかりにくくてすみません。
KEKKAという項目は元のデータにはなく、この項目を生成したいです。
STARTとSTOPは1件ずつしかないのか?
順序はNO順でいいのか?
NOは連番なのか?
START、STOPは必ず1レコードあり、複数はない
って事なら、簡単なSQLで処理できそう
>>332 STARTとSTOPは複数あります。
NO順です。
NOは連番です。
STARTが1である行とSTOPが1である行は必ず交互に来て、
STARTとSTOPが同時に来ることはありません。
STARTが1の行とSTOPが1の行は続くことがあります。
STOPが1の行の直後にSTARTが1の行が来る場合もあります。
STARTが1の行の数とSTOPが1の行の数は同じです。
NO順に先頭から見ていくと、STARTが1の行は、STOPが1の行より先に出現します。
よろしくお願いします。
>>334 で何をやりたいかはだいたいわかったけど
(たぶん STARTしてからSTOPするまで KEKKAを1にすればよいはず)
行順を保持しつつ状態遷移させるのって普通のSQLでできるのだろうか?
START、START、STOP、STOPって並びになったときはどうすんの?
>>334 スタートがあったら1加算ストップがあったら1減算する累積計算すればいいじゃねえ
select no sum( start + end * -1) as kekka from t as m
left join t as s
on t.no<=m.no
group by no
>>338 いろいろ細かいミスは置いといて、それSTOPの行が1にならんだろ
>>329 select NO,START,STOP,
(select isnull(sum(START),0) from t where t.NO <= m.NO)-
(select isnull(sum(STOP),0) from t where t.NO < m.NO) KEKKA
from t m
とかで出来んじゃね
ありがとうございます。
皆さんに教えていただいた方法を試していますが、うまく行きそうです。
ありがとうございました。
・DBMS名とバージョン
10.1.16-MariaDB
・テーブルデータ
テーブル:categories
cateid catename
----------------
1 c1
2 c2
3 c3
4 c4
5 c5
6 c6
7 c7
8 c8
テーブル:books
cateid bookname price
--------------------
1 b11 20
1 b12 10
1 b13 30
1 b14 40
1 b15 5
2 b21 20
2 b22 10
2 b23 30
2 b24 40
2 b25 5
・欲しい結果
cateid catename bookname price
--------------------------------
1 c1 b14 40
1 c1 b13 30
1 c1 b11 20
2 c2 b24 40
2 c2 b23 30
2 c2 b21 20
・説明
categoriesとbooksをcateidで結合。結合の順番はbooksのpriceの降順とし、更にその結合する数の上限を3としたいのですが、どういうSQLになりますか?
ちなみに↓のようなSQLを思いつきましたが上手く行かず・・・
SELECT *
FROM categories
LEFT JOIN (SELECT * FROM books ORDER BY price DESC LIMIT 3) books
ON (books.cateid = categories.cateid)
priceでのソートはできてるんですが、LIMITが期待通りには機能しませんでした
まあそれもそのはず・・・これではbooksテーブル全件の上位3件を拾ってこいというクエリですからね
select
t1.cateid, catename, t1.bookname, t1.price
from books t1
join category c on c.cateid=t1.cateid
where 3 >= (
select count(*)
from books t2
where
t1.cateid = t2.cateid and
t1.price <= t2.price
)
order by cateid, price desc;
table data_pool
code bb_date baibai suuryou
111 2018/04/01 3 2000
111 2018/04/03 1 1000
222 2018/04/05 3 1000
222 2018/04/09 3 2000
333 2018/05/01 3 5000
(PK code + bb_date)
baibai 1 売り 3 買い
月単位で集計するときにbaiba=1はマイナスとして集計し
111 2018/04 1000
222 2018/04 2000
333 2018/05 5000
のような結果を得たいのですがどう書けばいい?(mysql)
おっちょこちょいなんだろうな
> baiba=1
とか書いてるし w
でも、欲しい結果をちゃんと書いてるのはいいことだと思う
MySQLはよく知らんけど
select
code,
date_format(bb_date, '%Y/%d'),
sum(
case baibai
when 1 then -suuryou
when 3 then suuryou
end
)
from data_pool
group by code, date_format(bb_date, '%Y/%d')
とかで行けるんじゃね?
date_format の所、%Y/%m だな。
2カ所直せば大丈夫だろう
重ね重ねの間違いお恥ずかしいw
有難うございます
%d を %m にして欲しい結果を得ることが出来ました。感謝
毎日の果物の価格を記録するデータベースを作りたいんですがどういうテーブルをつくったらいいですか?とりあえずitemsテーブルに果物の種類とidのカラムを作ります。
毎日の価格はどういうテーブルにしたらいいですか?
>>350 DB設計を語るスレ 10 [無断転載禁止]©2ch.net
http://2chb.net/r/db/1495438711/ まぁ叩かれるとは思うが…
DB設計を語るスレ 10
http://2chb.net/r/db/1495438711/ 聞くなら、こちらの方が良いかもしれない
>>354 ありがとうございますそっちで聞いてみます、
まあどっちの住人もたいして変わらんからここでも良いとは思うけど
> 毎日の果物の価格を記録するデータベースを作りたいんです
とか意味がわからん
そのデータベースでどう言うことをしたいいのか、とかどういう結果が欲しいのかを書けよ...
relatedなカラムにむこうのテーブルにないものをinsertすると勝手に登録してくれますか?
しばらく考えてしまったが
やはり意味が分からなかった
誰か解説頼む
リレーションで外部キーに存在しないものを挿入したら
どうにかしてくれるのかってことだべ
制約にならんと思うんだが、、、トリガで自分で追加するようにすればいけるかもね
皆さんがアンケートの答えを格納するテーブルを作るとしたら
未回答は、nullを想定しますか?0を想定しますか?
理由も教えてください!
>>361 on insert cascade か。他のカラムはどうすんだろ
null なり default 値なりにするんだろ
>>366 identity とかでいいだろ
てか insert と同じだろ
自動採番のあるテーブルにインサートした場合、その番号を知るには別途selectするものですか?
そもそも自動採番ってSQL標準じゃない気がするし
DBMSによるんじゃね
>>368 普通は採番された番号を取得する機能が提供されてる
でないと単純なログみたいにその番号以外の部分には重複を許す列しかないと検索しようがないから
>>368 です。
自分の使うデータベースで探したらありました。
自動採番ってあるの普通だと思ってたので勉強になりました。
こういう常時、一人しか使っていないと思っているひとは、なんなんだろうな。
こういう常時、で読点打つキチガイはバカなんだろ、うな。
n+1問題ってなんやねん
パフォーマンス低下したら何がいけないの?
何回もデータ分だけ引くの何がいけないの?
ハードが優秀なら別にいいんじゃないないの?
助けてください。自分の力量だと解決できず
データ
日付,オーダ番号,個人名.エラーA,エラーB,エラーC
0601,00001,タナカ,エラーA発生,,
0601,00002,イトウ,,エラーB発生,
0601,00003,サトウ,,,エラーC発生
0602,00004,タナカ,エラーA発生,,
0602,00005,イトウ,エラーA発生,,
0602,00006,スズキ,エラーA発生,,
このとき、個人別にエラー回数の内訳を出したいのです。
個人名, エラー1回目, エラー2回目, エラー3回目,…
タナカ,エラーA,エラーA,,
イトウ,エラーB,エラーA,,
サトウ,エラーC,,
スズキ,エラーA,,
使用DBはMYSQLですがストアドは使えないという制約があり
エラー回数は動的に延ばせればという要望がありますが、5回で止めてもOKです。
よろしくお願いいたします。
select
個人名,
max(case カラム番号 when 1 then エラー end) as エラー1回目,
max(case カラム番号 when 2 then エラー end) as エラー2回目,
max(case カラム番号 when 3 then エラー end) as エラー3回目,
max(case カラム番号 when 4 then エラー end) as エラー4回目,
max(case カラム番号 when 5 then エラー end) as エラー5回目
from (
select
個人名,
case
when not エラーA is null then 'エラーA'
when not エラーB is null then 'エラーB'
when not エラーC is null then 'エラーC'
end as エラー
row_number() over (
partition by 個人名
order by 日付 asc, オーダ番号 asc) as カラム番号
from エラー履歴
)
group by 個人名
>>379 ありがとうございます!できました!!!
どうしてこんなクエリが思いつくんですか。すげぇですね!
質問です。
tableA
id
tableB
id, A.id
tableC
B.id, col1
のような、A-B-Cと、親-子-孫の関係で、子孫になるほど関連する行が1対多数になっていくテーブルで、
Bの1レコードにたいして、Aの情報と、Cのcol1がnullでない数の情報が欲しいのですが、
LEFT OUTER JOINでどう書けばいいでしょうか?
SELECT t1.x, t2.x, t3.nullでない数
FROM B t1
LEFT OUTER JOIN A t2
ON t1.A.id = t2.id
LEFT OUTER JOIN
(SELECT COUNT(col1) AS nullでない数 FROM C WHERE Bid = t1.id) t3
ON t3.B.id = t1.id
みたいな事がやりたいのですが、クエリはエラーになってしまいます。
FROM C WHERE Bid = t1.id) t3
の部分で、「t1はここから参照できない」みたいなエラーです。
自己解決しました
(SELECT B.id, COUNT(col1) AS nullでない数 FROM C GROUP BY B.id) t3
として、WHERE句を取ればいいだけでした
無駄な検索時間は増えてしまうと思いますが・・・
>>385 カラム名を変えさせてもらった
tableB id, A_id
tableC B_id, col
select tableA.id, tableB.id,
count(C.col) as count
from tableA,tableB,
(select
B_id,
(case
when col1 is NULL then NULL
else 1 end) as col
from tableC) as C
where
tableA.id=tableB.A_id and
tableB.id=C.B_id and
C.c is not NULL
group by A_id,C.col;
訂正 最後から2行目
× C.c is not NULL
○ C.col is not NULL
>>383 BCを先にjoinしてカウント。その結果とAをjoin
お願いします。
質問文を入力すると403 Forbiddenとなるのですが、なぜでしょう?
こういう文章は入力できるのに・・・
再度質問を投稿してみます。
CREATE TABLE TB(
MM VARCHAR(81) DEFAULT ’NOTHING’ NOT NULL)
なのですが、DEFAULTで'NOTHING'が設定されていてNULLにならないと思うのですが
文末にNOT NULL制御を掛けているのはなぜなのでしょうか?
>>390 > NULLにならないと思うのですが
NULLは後からでも設定できるだろ
>>390 insertでカラムにnull指定すれば出来るからでは
>>391 >>392 ありがとうございました!言われると恥ずかしいくらい簡単なことだったのですね。先生方、ありがとうございました。
1時間に1回だけ引けるガチャを実装したいんだけどどうすればいいですか?
一応、ユーザがいつガチャを引いたかを記録するテーブルを作って(不正が分かるように必須)
そこから検索かけて該当するのがあれば残り時間を返すみたいな実装を考えてます
・MariaDB 10
・user_id, time
・残り時間(引ける時はいらない)
・
条件1〜条件10のうち9個以上の条件を満たすものを抜き出したい。
select * from table1 where 条件;
の条件のところに
(条件1 AND 条件2 AND ...AND 条件10)
AND
(条件1 AND 条件2 AND ... AND 条件9 AND (NOT 条件10))
AND
(条件1 AND 条件2 AND ... AND 条件8 AND (NOT条件9) AND 条件10)
AND
...
AND
((NOT 条件1) AND 条件2 AND ... AND 条件10)
と愚直に11通り書く他に、スマートに書く方法無いの?
where case when 条件1 then 1 else 0 end
+ case when 条件2 then 1 else 0 end
...
+ case when 条件10 then 1 else 0 end
>= 9
なるほど、CASE式を使うのか。 サンQ
ってか質問のころ、11通りを結ぶのはANDじゃなくてORの間違いだったな。
>>398 複数のselect文を書いてunion allの方が意図がわかりやすいうえに、条件を変えるときも変更時のリスクも低い。
>>399 ちょっと具体的に書いてみ
まともな頭持ってたら書いてる途中で顔真っ赤になると思うが…
>>399 条件ちゃんと読んでないのかもしれんが、複数条件つなぐのはorだぞ
ちょっとunionで書いてみてくれよ
単純に、orでつないでる式を一つにしたsql文をunionすれば良いと思うのだが
質問者自身にしろ、CASE使った回答にしろ、
SELECT条件で9個以上の判定をしていますが、
UNION使って列挙した場合、それぞれのSELECTが
独立してテーブルをスキャンする事になるので
仮に上手く書けたとしても効率が悪いって気がします
>>404 それは素人の考え方です。先の例ではSQLの見た目はシンプルそうに見えますが、実際の処理コストは高いと思われます。
それなりにデータベースに詳しくてもいまだにSQLはこう書くと内部でこう処理されると主張する方がいますが、それはリレーショナルデータベースの根本から否定する主張です。SQLは処理方法を指定しない非構造化言語です。
>>404 リレーショナルデータベースはそんなにお馬鹿ではありません。SQLの発行回数を問題視したり、SELECT句が難度も出てきたり、見た目だけでコストが高い、性能が悪いと言われて仕事でもかなりの支障をきたしますのでそういった発言は控えてください。
まずは実行計画と実際にどのように処理されたかSQLをトレースして己の知識を高めてから偉そうなことを言ってください。
後の例を提示してもらった上で性能なり効率なりを評価してみましょう
>>408 すぐに回答を欲しがるいつものあなたですが、ここは教育スレッドではありません。
ちなみにさきほどの非構造化とは非構造化データのことではなく、構造化定義のない言語という意味です。
教えてもらうスレではなく、質疑応答スレです。
>402 名前:NAME IS NULL[sage] 投稿日:2018/07/16(月) 20:50:23.35 ID:???
>単純に、orでつないでる式を一つにしたsql文をunionすれば良いと思うのだが
この人がSQL書いて提示するのを待っているところですが
>>397 の良くない点を挙げましょう。
SELECTが一度しか出てきませんが、WHERE句の条件を見れば、普通のプログラマはループのネストとわかるはずです。
一番の問題はそこではなく、仕様の変更に弱く保守性が低いところです。
複数のSELECT文のUNION ALLは結果セットを最後に単純に繋ぐだけで、それぞれのSELECT文が独立していますので仕様の変更が全体に影響しません。
ただし本当のところはオプティマイザの判断ですので、必ずこうなるわけではありません。
>>410 条件が10個もあり、そのうちの9個の条件が真の場合のSELECT文のパターンは膨大だと思うでしょう。
SELCT * FROM Aテーブル WHERE 条件パターン1
UNION ALL
SELCT * FROM Aテーブル WHERE 条件パターン2
UNION ALL
・
・
・
とかなり並べないといけないと思うと思います。
ただ冷静に考えてください。10個条件があり、すべての条件を満たすSELECTはひとつです。10個の条件のうち9個を満たすSELECT文は10個、10種類です。
たった11パターンのSELECT文のUNION ALLです。簡単でしたね。
このスレでは集合演算子がないことにしている回答ばかりです。おそらく集合演算子が使いこなせないのでしょう。
もっとシンプルに考えてください。プログラマとは思えません。
SQLを組み立てるときに頭の中でWHERE句内でどうにかしなければいけないと思い込んでいませんか?
常にSELECT文がひとつでSELECT句内でSELECT文を使う回答やWHERE句の服問い合わせでどうにかしようとする回答も多いですね。
特定の人物が回答しているのがよくわかります。その場しのぎの小手先のSQLほど迷惑なものはありません。
条件パターンを例に従って具体的に書いてみてくれませんか?
そうすれば実際に性能評価ができそうですし
>>415 なぜ11種類の条件違いのWHERE句違いのSELECT文が理解できないのですか?
SELECTの結果を足し算、くっつければすればいい話ですので、あなたがUNION ALLを理解できないだけです。
SQLの入門書の絵でも見て勉強してください。
UNION ALLでなくてもSELECTがひとつでないといけないルールがあるなら、WHERE句に10個の条件がすべて真、9個の条件がすべて真の条件をOR条件でつないでもかまいません。
条件1〜条件10のうち9個以上の条件を満たすものを抜き出したい。
select * from table1 where 条件;
の条件のところに
(条件1 AND 条件2 AND ...AND 条件10)
AND
(条件1 AND 条件2 AND ... AND 条件9 AND (NOT 条件10))
AND
(条件1 AND 条件2 AND ... AND 条件8 AND (NOT条件9) AND 条件10)
AND
...
AND
((NOT 条件1) AND 条件2 AND ... AND 条件10)
と愚直に11通り書く他に、スマートに書く方法無いの?
↑は本人も訂正していますがORの間違いでANDと書いています。さらに本人は気づいていなかったようですが「 NOT 条件 」部分はいりません。
質問者はスマートではないと言っていますが、本人がスマートではないと見た目だけで思っているだけで、まったく悪くはありません。
>>413 おれなら11個も同一テーブルからのunion allとか書いてたらアホかと思うけどな
whereで11個or条件書く方がマシだわ
どっちにしても、9個以上が8個以上とか7個以上とかになったらどうするんだろうね
ああ、たんに最近union覚えて使いたいだけか
理解できてないのはお前のunionに対する実行効率だよ
まあ
>>397がループのネストとか俺には意味不明だから、俺を遙かに超越した理解の持ち主なのかもしれんが
環境はそれぞれだったら、いろんな方法を試したらいいんじゃない?
で、目的に一番合うもの選べば。
効率云々の前にunion allとかにしたら重複行の扱いで結果異なるし
>>417が正解かと
まあちゃんとnot条件書けばいちおうunionでもunion allでも同じになるんじゃね
unknownになるような条件書かなきゃな
>403
どっちがスマートかと言えば、unionで繋げた方が"sql文"としてはスマートかな
現実社会じゃクイズ解いてるわけじゃないんだから、アプリ側でやっちゃうだけ
>>425 この例で
アプリ側でどんなクエリ発行してどんなロジックでチェックするのか教えてくれ
>>424 だからSQL書いてみろって
書いてる間に顔真っ赤になるだろ w
unionおじさんの次の一手は誰も言ってない要件を持ち出す、かな
>>422 だから質問者のWHERE句での条件でいいのに。
なんでSQLを直すことになったらすぐにWHERE句全体が崩壊する方法を勧めるひとがいるの?
>>422 確かにUNION ALLでは同じレコードが返ってくることには気づかなかった。
質問者が静的SQLにこだわっている理由も気になる。10個の条件のうち9個が真という条件が激しく変化するのなら、動的SQLでSELECT文を組み立てた方が、てっとり早い。
こういう条件の場合は動的にSQLを組み立てるのが普通で、静的SQLにこだわる理由がみつからない。
こういう検索機能を動的SQLではなく、静的SQLにしようとすると、例の仕様変更に耐えられないSQLを使用しなくてはいけないなる。
>>433 静的/動的は関係ないでしょ?
まあ動的に生成するなら
>>396でもそんなに面倒じゃないけど
>>397でなんの問題もないしな
ちな
>>399は論外
この例で最悪でもテーブルスキャン1回で済ます実行計画吐くならまあunion allでもいいんじゃね
結果行数が多くなるならunionはダメだろうけど
誰か最初のUNION(ALL)の手前までででいいからSQL書いてくれ
言うに事欠いて1回のスキャンで済むunionとか…
【3.11津波は自民由来!? 安倍逮捕秒読みか!?】 ロシア国防省『日本は地震を偽装した核実験を止めよ』
http://2chb.net/r/liveplus/1531966541/l50 2018年、テレビが隠している大ニュース!
ここのキチガイは実行計画もみたことがないからな。文字数が少ないSQLがスマートと言い張る。
なんでプログラマなのに
>>449 実行計画がなんなのか分かってますか?
多少の知ったかぶりはかまいませんが、少しは謙虚にわからないことはわからないと言うようにしましょう。
その実行計画をやってみたいから、早くUnion使ったSQLをここに晒してくれ
unionの1回目のselectで、キャッシュに乗る
キャッシュに乗るかどうかは実行計画とは直接は無関係だがな
キャッシュにのったからって不要なテーブルスキャンが許容できるわけではない
条件によってはインデックスしかアクセスしない可能性もあるしな
>>451はアホやけどおまえらはその足下にも及ばんアホなんやで?
知らんかったやろ?
>>460 実行計画ではなくコストだったと間違いを認めなさい。
条件1〜条件10のうち9個以上の条件を満たすものを抜き出したい。
テーブルは以下の内容とし、レコード件数は1万件、
cond*にはランダムに1〜100までの数値を設定し、
抽出条件は各カラム値が50を超えるものとする
create table vote (
id int primary key auto_increment,
cond01 int,
cond02 int,
cond03 int,
cond04 int,
cond05 int,
cond06 int,
cond07 int,
cond08 int,
cond09 int,
cond10 int);
unionにだけorder byあるとか
やるならちゃんとやって
まあunionはたいがいの場合でソートするんだが
unionの押しの人はunion allって言ってなかったっけ?
どうせならインデックスの有無も
case whenはそのままid順になるけど、unionはならなかった
union all使えば重複の除外が発生するし、変わらないんじゃない?
index付けてもunion内のsql実行に影響するだけで、
マージする性能には多分影響しない
続きは各自で
>>466 ただのunion はdistinctで重複除去、除去しないのがall指定
この例でunion allだと重複行がでるはずだぞ
caseはID順(おそらく主キーか物理格納順)でテーブル舐めてるからそのままID順だな
unionで順番変わるってことは、重複除去の方法がソート系じゃない可能性が高い
まあなんにしても、order by書かないと順番は不定ってのが原則なので
両方に書くか両方に書かないか合わせないと
indexは、unionの各whereには効くだろうけど、caseにはうまく効かないんじゃないかと
まあそれで実行性能がひっくり返るとしても、unionで書こうとは思わんが
>>464 ごめん9は間違いで8以上だったSQL直してくれる?
sql自体でなくて申し訳ないが,前の例で、10億レコードで,テーブルが列ストアで保持されているとした場合、whereでー発フィルタリングするのと、unionするのとどっちが効率的なのだろう?
条件が適用されるカラムのメンバー数にもよりそうな気もするが、どんなもんなんでしょうか
やってみればいいのに。見た目がシンプルなのと処理の重さは反比例する。
見た目で決まるほど今のオプティマイザはアホじゃないし
質問です。
select a + b +c -d as 計算結果
where 計算結果 > 0
とすると行が表示されません。where句を外すと、
計算結果は0より大きい値でちゃんと出てきます。
where a + b +c -d > 0
と書き換えると表示されたのですが、
where句でselectの as 別名 は使えないのでしょうか?
普通はselect句でつけた別名を使えるのはorder by句だけだな
そうだったんですね
できそうなイメージだったんですが
ありがとうございます
select a + b +c -d as 計算結果
having 計算結果 > 0
>>475 よく考えてくれ。WHERE句が先に評価され、そのあとにSELECT句の選択リクトが評価される。
いったんSELECTした結果に対して、絞り込みのWHERE句つきSELECTを再度するのを基本としてしまうと、SELECT文は常にフルテーブルスキャンをして、その結果を一時的に保管して、保管した結果に対してさらに検索することになる。
>>471 だから見た目をシンプルにするのは意味がないと言っているのだが?
>>478 なんでそんな難しいことを考えるんだよ…
> select a + b +c -d as 計算結果
> where 計算結果 > 0
ってあったら
select a + b +c - d as 計算結果
where a + b +c - d > 0
って展開すれば良いだけだろ
>>479 >見た目がシンプルなのと処理の重さは反比例する
反比例ってどういうことだ?
基本的にはシンプルなSQLほどオプティマイザの裁量が広がって有利なんだが
>>478 この場合はどっちにしても全行計算してから絞り込むから大差ないような・・・
>>478 ああ一時テーブルのメモリと、捜査が2度手間になるのか
whereが先だったのか
どっかのサイトにselect結果をwhereで絞り込むって書いてたけど
ちょっと前のunionの話だけど
処理効率や保守性はおいといて、10個の条件のうち9個を満たすものをとるのにunion使ってどうやるの?
それを書いた本人の真意はわからんけど、
(1番目以外の9個を満たすクエリ)
union
(2番目以外の9個を満たすクエリ)
union
:
でできるはず。
>>485 それselectごとに条件9個ずつ書くの?
ごめん、保守性はおいといてって言ったの自分だね
たしかにそのやり方ならできるか
自分なら union 化して
where x.cond > 条件 group by id having count(*) > 件数
を副問合せにする
>>485 unionだけだと元は異なるレコードでも結果が同じだったら1レコードにされちゃう
かと言ってunion allだと複数の条件にヒットするレコードが複数出ちゃうよ
>unionだけだと元は異なるレコードでも結果が同じだったら1レコードにされちゃう
主キーが存在しないテーブルならともかく、適切なselectリストにすりゃいいだけ。
>かと言ってunion allだと複数の条件にヒットするレコードが複数出ちゃうよ
(1番目を満たさずそれ以外の9個を満たすクエリ)でおk。
(プライマリではない) authorがaaaとbbbの最新のレコードをそれぞれ1件ずつ取得したいのですが
どのようにしたらいいでしょうか? 最新かどうかは updated_at で判定できます
SELECT * FROM news WHERE author IN ('aaa', 'bbb')
>>493 もう少し詳しく書いて欲しい
テーブル定義と、updated_atでどうやって判定するのかなど
MySQLでREPLACE関数を使って複数行を置換するにはどうすればいいのでしょうか?
例えば「body」というカラムがあるとして以下の値が登録されているとします。
あいうえお
かきくけこ
さしすせそ
これをREPLACEして「さしすせそ」のみ残したい時、
UPDATE news SET body=REPLACE(body,"あいうえお\r\nかきくけこ\r\n","")
としたのですが、置換できません。
>>496 出来ると思うんだが、出来ないとしたら
bodyの文字列中改行コードが、
replace関数で指定したものと違っているのかも知れない。
>>497 \nにしても駄目でした。一行だけだと置換できるんですけどね・・・
>>498 select hex(body) from table名
とやって、
改行部分を16進数で見てみるとか
>>494-495 遅くなりました
>>3 のをいろいろ弄ってみて実現できました
よく見ず質問してしまいすいません。
ありがとうございましたm(_ _)m
板復帰(OK!:Gather .dat file OK:moving DAT 215 -> 193:Get subject.txt OK:Check subject.txt 215 -> 215:Overwrite OK)0.86, 0.75, 0.74
age subject:215 dat:193 rebuild OK! すいません。DB2でフラッシュバッククエリのコマンドを実行したいのですが、
ググってもOracleのコマンドしか出てきません。
どなたかご教授お願いします。
そっちのスレは過疎ってますし、そもそも回答になってませんが・・・
ここは特定のDBMLの操作方法を質疑するスレじゃないので
DB2にフラッシュバッククエリなんかないでしょ
ぐぐるとOracleのLogMinerみたいな機能ですら
db2ReadLog APIを使って自分で実装しろと出てくる
アクセスでの開発なのですが
氏名,エラー内容.エラー回数
A,ダメポ,1
A,無理ぽ,2
B,もうだめ,1
C,むり,1
みたいなものをクエリで出して、行列を入れ替えて
1回目 2回目
A ダメポ 無理ぽ
B もうだめ
C むり
みたいに出力をしようとしています。
これが2万レコードほどあり、処理が重たくて困っています。
select 氏名
MAX(エラー内容)
from (抽出クエリ)
group by 氏名
等で出力すると、処理が非常に重たく
select 氏名,
[1回目].エラー内容
[2回目.エラー内容
from (抽出クエリ where エラー回数=1) as 1回目
left join on (抽出クエリ where エラー回数=2) as 2回目
みたいにしても重たいのです
どなたか助けてください
>>507 エラー回数は最大2ではなくNなわけ?
かりにNだった場合SELECT句はどうするつもり?
エラー回数は有限で3回までです。
accessがtempテーブルも使えず、実体テーブルにselect into しても
それだけなのに、2万件で1時間近くかかってしまっています。
助けてください。。。今日そのことばかり考えながら家事をしていました。つらい
抽出クエリ自体を実テーブルにして氏名にインデック貼って
SELECT
氏名,
Max(IIf(エラー回数 = 1,エラー内容,Null)) as 1回目,
Max(IIf(エラー回数 = 2,エラー内容,Null)) as 2回目,
Max(IIf(エラー回数 = 3,エラー内容,Null)) as 3回目
from 抽出クエリ結果
group by 氏名
order by 氏名
とかかな
抽出クエリってやつは実テーブルじゃなくて何かの条件で抽出した状態のビューを言ってるわけ?
それとDBがアクセスってだけでSQL自体は外部ツール(C#とか)から実行するの?
適切なスレが見当たらないんで、ここで聞くんだけど
sqlから、ER図を生成する方法ってある?
できればoracleで。
イメージ的には、プログラミングで言うと
ソースコードからクラス図を生成するイメージ
>>510 ありがとうございます。
実テーブルに入れるというところで30分以上かかってしまい。
select だけだと1分程度で抜けるのが、insert selectでも select insertでも
30分かかってしまって、その後にクエリ流すのに時間が掛かってしまっています。
>>511 from 句の中に書いたサブクエリになります。
アクセスに対して、エクセルのVBA側から呼び出しをかけています。
>>512 SQLってDDL分ってこと?
実態テーブルからER作成するのは
有償ツールはいくつかあるけど
とりあえずA5とかで試して見たら?
https://a5m2.mmatsubara.com/help/ER/ FKとか指定してないとさすが無理だけど
>>514 DDLではなく、普通のselect分です。
DBにつながる環境で、FKとかはDBから拾ってきてほしい想定です。
実テーブルから、ER図ではなく、
実テーブルと、select分から、ER図を作ってほしい
select
抽出テーブル1.氏名,
抽出テーブル1.エラー内容 as エラー内容1,
(select エラー内容 from 抽出テーブル as 抽出テーブル2 where 抽出テーブル2.氏名=抽出テーブル1.氏名 and 抽出テーブル2.エラー回数=2) as エラー内容2,
(select エラー内容 from 抽出テーブル as 抽出テーブル3 where 抽出テーブル3.氏名=抽出テーブル1.氏名 and 抽出テーブル3.エラー回数=3) as エラー内容3
from 抽出テーブル as 抽出テーブル1
where 抽出テーブル1.エラー回数=1
order by 抽出テーブル1.氏名;
access2016のSQLビューで動いた奴
エラー内容ってカラムが実は1つのテーブルから複数もってくるけどはしょられたら破綻するけどね
>>516 これはデータ件数が多いと時間かかりそう
レコード1件ごとカラムのサブクエリが実行されるだろう
>>518 おれもそうおもったんだよね
抽出テーブルがサブクエリだとなおさらだな
2万件っていってるのは元データが2万なのか、
氏名で出力する行が2万件なのか(2万×最大3列=6万)なのかで結果がかわるけど、
どっちなんだろな
>>516 ありがとうございます。今一番早く出来たのがその形で、それで1時間掛かっています。
抽出対象が2万件。
そのそれぞれに最大3列、エラーが発生し得る状態です。
サブクエリで抽出している下記のデータは、30万件ほどから抽出していて
氏名,エラー内容.エラー回数
A,ダメポ,1
A,無理ぽ,2
B,もうだめ,1
C,むり,1
抽出もとは最終的に100万件ほどまで増えます。
30万件から抜くクエリは1分程度なので、×3でいけると思っていたら1時間掛かるようになってしまい。
>>520 問題を切り分けたほうがいい気がしてきたけど、
@単純にデータを取得する場合の実行速度
select 氏名,エラー回数,エラー内容
from 抽出テーブル
order by 氏名,エラー回数
Aエラー回数を列別に変換する場合の実行速度(
>>510)を参考
select
氏名,
Max(IIf(エラー回数=1,エラー内容,Null)) as エラー内容1,
Max(IIf(エラー回数=2,エラー内容,Null)) as エラー内容2,
Max(IIf(エラー回数=3,エラー内容,Null)) as エラー内容3
from 抽出テーブル
group by 氏名
order by 氏名
これはどのくらいの実行時間なわけ?※Openして何もせずにループだけする
>>521 状況をきちんと伝えられていなくて申し訳ないです。
30万行の元データ→エラー回数抽出サブクエリ(@ 件数は2万件程度抽出)→エラー回数を列別変換(A)
という流れです。
@は1分程度で1クエリは抽出完了、Aは1時間掛かってしまっています
当初
>>510のように作っていましたが、処理を見直し
>>516のようなクエリに書き換えています。
@は分析クエリのように演算で回数を出しています。
>>524 >>510が正解じゃない?
インデックス効かせるには。
書き込み時間がかかるかもしれないけど。
最終結果の使い方わかんないけど
VBAとかで2万件結果セットループで変数持ちとかじゃだめか。
>>524 > @は1分程度で1クエリは抽出完了
@の結果をアプリ側で整形するってのはできないの?
SQLは行列変換得意じゃないし
>>525-526 他のDB情報と最終的に結合して出力するためできればクエリでやりたいと思っていました。
ただ、どうしても時間が掛かるならVBA側で実装するのもありですね。
もう少し性能測定して、改善の見込みが無かったらVBAに乗り換えてみます。
諸々失礼しました。
実テーブルから定義を引ければ十分だと思うけど、なぜselect文が必要で
>>514じゃ何が足りないのか、質問の意図が誰も理解できないんだと思う。
>>514 に書かれてるようにFKないんじゃね?
join の結合条件見ろと
>>496 なんでreplace関数を使わなきゃいけないのか?
where句の条件が あいうえお、かきくけこ で SET句の値が さしすせそ でいいだろ。
>>531 さしすせそは不定で指定できないとか。
最初の2行はヘッダーとか特定できるなにかなんじゃないかな。
>>496 ちなみにxampp5.6.12でテストしたら
>>496のクエリでできたよ。
命令送ってる側とかで勝手に改行コード省かれちゃってるとか?
サーバーでログとってみたら?
>>532 MySQLと質問者は書いているのに、なんでXAMPPという何をどう使っているのかわからないくくりで答えているのか?
改行コードを含む文字列の置換を言っているのか。単に改行コードがSQLの改行コードとみなされるような環境で発行してねえだろうなw
質問者もMySQLとしか書いてないので環境がよくわかんないから
とりあえずMySQL使ってればなんでもいいかとおもって。
個人からの申請で、登録、変更、削除を受け付けます。
その時、変更だけしか申請していない人を抽出するSQLはどう書いたらいいですか。
変更と登録、変更と削除など、他の申請を出した人は除いて変更だけの人を抽出したいです。
>>536 そのDBシステムで、
受け付けた登録、変更、削除をどう扱っているか次第
>>536 そのテーブルのカラム名すらも書けないんならSQLいじるの止めたほうが良い
>>536 個人Id | 申請
------+-----
001 | '登録'
002 | '登録'
001 | '変更'
002 | '削除'
003 | '変更'
で003だけ欲しくてSQL-Server使ってるとエスパー
select 個人Id from テーブル where 申請 = N'変更'
except
select 個人Id from テーブル where 申請 <> N'変更'
>>539 「SQL Server」を「SQL-Server」と書きたい理由を教えてくれ。
【ちびまる子、乳ガン】 モー娘がヒキ逃げなら <急に基準変更して逃走> トー電はベク逃げかな
http://2chb.net/r/liveplus/1536979182/l50
関東の子供が、東電にベク逃げされて、棺桶が売れてる! 製品名を正しく書けないやつはたいてい危険人物。だいたいよくわかっていない。
内容に突っ込めないから製品名に突っ込むしかないんだろ
どうでもええわ
ところで、IDが出てたり出てなかったりするのは何故?
>>554 そんなもんを気にしてるお客なんてお前の脳内にしかいないけどなww
>>555 sageかどうかでしょ
そもそもsageてない奴のレスは見る価値ないし
sageるのって荒らしに見つからんようにとかそんな理由だったっけ?
今だと勢い順か新しい順、あるいはスレ検索して見るからもう完全に意味ないよな、わざわざ荒らすやつも激減してるし
ましてこんな過疎版じゃ気にするだけ無駄
質問スレだと、質問者は必ずageてって板もある
ID出た方が成りすましを防げるからやり取りで
混乱しなくて良いと言う側面もある
質問スレはそんなルールあったね
sageるとID出ないのはDB板の仕様か
技術的な話をするんだから一律IDつけたほうが勝手がいいと思うけどなあ
専ブラがデフォルトsageになってていちいち削除すんのもめんどいし
質問するのでIDありで・・・
リレーショナルデータベース=JOINで複数のテーブルをまたいでクエリを投げられる
という意味?
リレーションってのは要はテーブルだ。
リレーションでできているデータベースだからリレーショナルデータベース。
レスありがとう。
リレーショナルではないデータベースというのは、テーブルでは無いデータベースが想像つかないな・・・。
二次元的なものではなく、テキストに羅列されているだけという感じだろうか。
昔pc-98で桐ver2とか名前だけは知っていたけど、あの頃はすでにテーブルという概念があったのかしら?
>>568 桐もDBASEもリレーショナルデータベースだな
テーブルであるならそうかといえば、ちょっと違う
複数のテーブルを関係性で紐付けが出来るなら
リレーショナルデータベースと呼んで良いと思う
Excelの表はテーブルだけど誰もそうは呼ばないしな
情報処理試験とかデータベースの勉強をすれば初めの方で説明されているはずだけど、
リレーショナルの前には階層型やネットワーク型といったデータベースの形式があった。
ついでに言えば、リレーショナルデータベースには「複数のテーブル」などという要件はない。
複数のテーブルはその直積である1テーブルと等価なんで。
普通はRDBMSと言えばリレーショナルデータモデルを表現できるだけでなく
ACID特性を備えるのが必要条件とされる
最近流行りのNoSQLなんかはリレーショナルデータモデルを表現するものではない上に
ACID特性のいずれかを満たさないのが普通だったりする
NoSQLが最近ものだと?
タイムマシンで過去から来た人間の書き込み?
しまった
自ら正解を出すことはできず文句しか言わない人に絡まれてしまった
おまえらが知る前から俺は使ってるんだ( ・`ー・´) +
>>574 RDBとDBMSの区別がつかないなら、ややこしくなるだけだから黙っとけな
プライマリキーをフォーリンキーにすることはできますか?
>>581 時系列データのテーブルが2つあって
時間をフォーリンキーにしたいんですけどおかしいですか?
>>580 単に1対1のテーブルだからおかしくはない。
インデックスが使われるSQL文の書き方というのは、例えば出庫データに
商品コード順+出荷日順+伝票番号順というインデックスを作っておいて
SELECT * FROM 出庫データ WHERE 商品コード='A01' ORDER BY 商品コード, 出荷日, 伝票番号
みたいにするとレスポンスが速くなるということでしょうか?
>>584 プラス記号の意味がよくわからんが
CREATE INDEX(商品コード,出荷日,伝票番号)
という複合主キーを作成すると
例示のSQLは速くなるだろうが
ただしインデックスの順序と異なる
ORDER BY 出荷日,商品コード
などと場合は効かない
>>584 忠告しておくが、インデックスが使われるSQLを書くのではなくて、問い合わせの内容とインデックスが必要かどうかを考えてSQLを書く。
SQLがこうだから、このSQLはこのインデックスが使われるとSQLだけでは言いきれない。
>>586 複合主キーじゃないわ複合インデックスね
>>587の言うように
実際に効くかどうかは実行計画で決まるので
インデックスを使ったかどうかは
実際の実行計画を取得しないとわからない
オプティマイザが意図したインデックスを使ってくれない場合
ヒントで特定インデックス使用を強制することもDBMSによっては可能
私たち日本人の、日本国憲法を改正しましょう。
『憲法改正國民投票法』、でググってみてください。
(へいわ)は、勝ち取るものです。拡散も含め、お願い致します。
質問です。
以下のようなテーブルがあったとします。
id|name
------
0|aaa
1|bbb
2|ccc
aaa,bbb,ddd,eeeを呼び出し側から与えて、nameにない項目(dddとeee)を取得したいです。
こういう場合どのように書けばよいでしょうか。
擬似的にaaa,bbb,ddd,eeeの項目をテーブルのように扱えればできそうですが、やり方がわかりません。
SQLiteを使っていますが、汎用的な書き方でできればしたいです。
よろしくおねがいします。
SELECT
a.empno<br />
,a.ename
,a.job
,b.ename AS 'mname'
FROM
emp a
,emp b
WHERE
a.mgr = b.empno;
このようなSQLを書いたのですが、SELECTのAS句が機能しません。どうすれば機能しますか?
意見ありがとうございました。
汎用的なのは諦めて、SQLiteでは以下で疑似的なテーブルができるようなので、これをもとにSQLを考えていこうと思います。
WITH t(name) AS (SELECT * FROM (VALUES ("aaa"), ("bbb"), ("ddd"))) SELECT * FROM "t";
膨大なカラム数があって、スクリプトで処理しているときには都合が良いかもしれないが、
手作業で編集する分にはどっちでもいい気がする
コードは読むもんだと教わらんかったんかおまえら?
ヴィジュアル問題の大切さがいまいちわかっとらんな
前カンマの方が打ち忘れが減るので
自分はこちらのヴィジュアルが合っているらしい
だからヴィジュアルちゃうやんそれ
しかもどっちゃでも変わらんしw
カンマの忘れとか、余分なカンマとか、割とよくやるw
最近JSONとか末尾カンマ無視するのあるよね
あれ導入されれば後ろでもいいんだけどな
前の方が行カット&ペーストで入れ替えやすい
前カンマの方が綺麗だと思うけどなあ
カンマと列名の間にタブなりスペースなり入れてカンマの位置を揃えるの
テキストエディタで矩形選択を使ってごりごり編集するのに便利なのだ
書式整形ソフト使って好きな形で読め。
--のコメントさえなければSQLは改行なし
で書けるんだから読むやつが好きに整形しろ。
ここで個人の好みの書式の話しされると
うざい!!
ちょっと難しい問題を出してみて
そうしたら、多分静かになるから
そもそもカンマがいらなかったんだよな。
英文っぽくしたためにカンマ区切りにしてしまった。
列名の区切りは半角スペースか改行でよかった。
質問させてください。
使っているのはSQLite(Python)です。
あるテーブルに、たとえば性別、血液型、職業というカラムがあって、
それぞれ、男、A、会社員、などと、データが入っているとします。
これら3つのカラムの中身について、テーブル内にある組み合わせの
パターンをすべて抽出したいのですが、sqlでどのように書けば効率がよいでしょうか?
抽出後、(男、A、会社員)は何名、(女、A、会社員)は何名、、、と
集計することが目的です。テーブルにより起こる組み合わせが様々なので、
都度調べる必要があります。
単純にFor文で1行ずつ調べて、過去にない組み合わせであれば外部のリストに
追加する形だと、非効率な気がしています。
良い方法があればお教えください。
ぐぐっていたら、下記を見つけました。
https://www.dbonline.jp/sqlite/select/index9.html DISTINCT を使えばできそうです。
ありがとうございました。
>>617 こうじゃないか
select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;
>>619 ありがとうございます。
助かりました。
再び質問です。
教えてもらった
select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;
で得られる'人数’を同じテーブル内の別カラムに保存したいと思い、
カラムは事前に作成しておいて、
update 'テーブル' set '人数のカラム' =
(select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`)
としてみたのですが、group byの最後のグループのcountの結果が
全部の行に上書きされてしまいます。
各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。
(目的は、その人(各行)の所属するグループの人数を個別に保存することです。)
よろしくお願いします
>>623 > 各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。
> (目的は、その人(各行)の所属するグループの人数を個別に保存することです。)
そんな設計やめなよ…
レコードに追加/削除/更新する度にその人数も更新しないとだめだし
毎回求めてもよほどでかい表でない限りは問題にならないだろ
>>623 使用意図はわからんが、どうしても一時的にテーブルに保存したきゃUPDATEじゃなくて、DELETE→INSERTでよくね?
オイラならテーブル変数使うけど
>>624 コメントありがとうございます。
実はモデルをすり替えて質問していまして、
データを書き換えての繰り返し計算に使いたいのです。
その後、order by でなく、select以下のテーブルをtable as Tなどとしてwhere句で’テーブル’とTの要素が等しい時に限定したら一応できました
何故かブロックされたのでスマホから
>>625 使用意図は、エクセルの表計算のように、
左のカラムにデータがあって、それを元に
右の方のカラムに途中計算を書いていって、
最後に得られた結果の誤差が減るように
また最初の方から計算を繰り返すような感じです。
1巡の計算が大きすぎて記録を残したいのですが、ご指摘の通り、記録が不要なところはテーブル変数がよさそうです
勉強してみます
オレ多分頭悪いんだろう
>>626 で何を言っているのかよく分からない
愚直に
>>623の要求通りのものを書くとすれば
`テーブル`に`人数`カラムを追加したとして
update `テーブル` t1 set
`人数` = (
select `人数` from (
select `性別`,`血液型`,`職業`, count(*) as `人数` from `テーブル`
group by`性別`,`血液型`,`職業`
) t2
where
t1.`性別` = t2.`性別` and
t1.`血液型`= t2.`血液型` and
t1.`職業` = t2.`職業`
);
でも、こんなこと実際にはしないし、
もっと良い方法が必ずあるはずだし
見直した方がいい
>>628 626が意味不明で申し訳ないです。
書かれておられるように自分もwhereで
比較しました。
計算は各行に対してするのですが、
それが所属するグループの平均等の計算値も
途中計算で何度もつかうのです
それで、各行にそれを入れておきたいのです
なんだか変な事をやってるみたいで恐れ入ります
結局何をしたいのかさっぱり理解できないけどわざわざ違うモデルで答えさせるとか失礼な事するやつだからスルーしとくわ
質問をシンプルにしたくてモデルを
変えましたが、失礼と思われたようで
済みません
わざわざスルーするって宣言してる奴なんだからスルーでいいよ
合計値も平均値も割と簡単に計算出来ますし
それをテーブルに入れた方が良いのか
それともDBを見ているミドルの方で計算させた方が良いのか
全体の仕組みと性能で総合的に考えた方が良いかもしれません
mysql,mariadbでmyisamが非推奨になったのはなぜですか?
innodbではbeginやcommitが使えるそうですが、メモ的なデータをinsertするぐらいなのですが、
それでもinnodbを使った方がいいのでしょうか?
そういうのは各RDBのスレがあるんだから、そこで聞けよ
専用スレがあったのですね、誘導ありがとうございます。
【勝谷誠彦(57)死去】 人口が毎年20万人も減るほど被曝して応援させ、さらに70歳まで働いて応援
http://2chb.net/r/liveplus/1543371270/l50 以下のようなデータがあった場合、
name date rate
AAA 11/1 2000
BBB 11/1 900
CCC 11/1 500
DDD 11/1 700
AAA 11/2 2000
BBB 11/2 1200
CCC 11/2 500
DDD 11/2 700
AAA 11/3 2000
BBB 11/3 500
CCC 11/3 1500
DDD 11/3 700
最新のrateが1000未満だけを抽出するにはどうすればよいでしょうか?
DDD 11/3 700
BBB 11/3 500
>>640 こうかな?
select name, MIN(date), rate
from hoge
where rate < 1000
group by name, date, rate
違った、こうか?
select a.name, a.date, a.rate
from hoge as a,
(select name, MAX(date) from hoge where rate < 1000 group by name, date) as b
where a.name = b.name and a.date=b.date;
SELECT * FROM a WHERE (name,date) IN (SELECT name,MAX(date) FROM a GROUP BY name) AND rate<1000
>>642 レスありがとうございます。
試したのですが、fromのselectでMAX(date)以外のも全て列挙されてしまいます。
DDD 2018/11/01 00:00:00
BBB 2018/11/01 00:00:00
CCC 2018/11/01 00:00:00
DDD 2018/11/02 00:00:00
CCC 2018/11/02 00:00:00
DDD 2018/11/03 00:00:00
BBB 2018/11/03 00:00:00
ちなみに使用DBはpostgresqlです。
>>643 おお!できました!!
ありがとうございます!
整理して理解します。
こういうときに色々意地悪な条件をついつい考えてしまう
最新日って言う場合、1件だけになるのか、
それとも同一日は全部該当にするのか
結果表示に時刻まで出てきていると悩んでしまう
その後の処理で何を使いたいかにもよるんだろうけど
>>646 ここで質問してくるやつはいつも仕様などあまり考えていない。
2つの文字列カラムがあり、一方がもう片方の文字列から始まるものだけを抽出したい場合どうすればいいですか?
str1 str2
ABC ABCDEF
DEF aiu
GHI GHIxxx
JKL akasa
の場合、
ABC ABCDEF
GHI GHIxxx
>>648 str1の長さがstr2より短いことがわかってるなら
where left(str2, len(str1)) = str1
でいいかと
ためしてないけど、
where (str1 like str2+'%') or (str2 like str1 + '%')とかでどうだろう
>>648 んじゃ他ので
WHERE PATINDEX(str1 + '%', str2) = 1
>>649>>650
>>651 お三方、ありがとうございました。
ばたばたしてて遅くなりましたが、確認できました。
>>650-651 str1とかstr2に'%'含んでても大丈夫だっけ?
大丈夫。ただ+が使えるのはMS系だな。
後は使えるやり方に読み換えて
SQL SERVERのSQL文について質問です
【条件】
1.全てのテーブル内容を取得
2.@ABのM_CODEとS_CODE、CのM_CODEとS_CODEが一致したNAMEを取得
一つのSQL文で完結できると助かります
以上の内容でご教示お願いします
@Table1
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 1 | 1 | a
02 | 1 | 2 | aa
03 | 1 | 3 | aaa
04 | 1 | 2 | aaaa
ATable2
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 2 | 1 | ab
02 | 2 | 2 | abb
03 | 2 | 3 | abbb
04 | 2 | 2 | abbbb
BTable1
ID | M_CODE | S_CODE | 内容
--+----------+-----
01 | 3 | 1 | ac
02 | 3 | 2 | acc
03 | 3 | 3 | accc
04 | 3 | 2 | acccc
CCode
M_CODE | S_CODE | NAME
--+----------+-----
1 | 1 | サッカー
1 | 2 | 野球
1 | 3 | バスケット
2 | 1 | バナナ
2 | 2 | リンゴ
2 | 3 | オレンジ
3 | 1 | サバ
3 | 2 | カツオ
3 | 3 | マグロ
1,2,3をuionして4とjoinすればいいんだろうけど,何んでこんな設計?
欲しい結果がよくわからん
4に1〜3をJOINするだけじゃダメなのか?
この板誰も人いないけど、他にデータベースの話題扱う場所あるの?
Oracle 12cでのSQLに関する質問です。
2つのDATE型のカラムの差をhh:mm:ssで出力したいです。
例
開始日が2018/12/13 7:00:00
終了日が2018/12/17 17:30:30
だとして、この2つの差(経過時間)の出力結果は
106:30:30
と出したいのですが、出来るだけ簡単に計算して出す方法ありますでしょうか?
(時・分・秒でそれぞれ分解して掛け算して計算する方法がネット上にありましたが、もう少しシンプルにできないか模索しています。)
良い御知恵がありましたらご教示お願い致します。
質問です。
製品のメジャーバージョン、マイナーバージョンという2列があり、
メジャーバージョンが最大の中から、
マイナーバージョンも最大の行を取り出すにはどうしたらいいでしょうか?
postgresql9です。
>>662 postgresql9手元で動かせません。MariaDBです
テーブル名はproductと仮定しました
select * from product
where (major_ver,minor_ver) in (
select major_ver,max(minor_ver)
from (
select major_ver,minor_ver
from product
where major_ver = (select max(major_ver) from product )
) as t
);
>>663 なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか
ありがとうございます。
window関数使うともっと綺麗に書ける気がする
俺はwindow関数苦手だから書けないが
>>661 あんたはDATE型が文字列だとでも思っているのか?
a. 顧客テーブル(顧客コード, 顧客名)
b. 商品テーブル(商品コード, 商品名)
c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数)
↓
売上日, 顧客名, 商品名, 売上数
このように結果が表示されるSQL文を教えてください
何か基本のキって感じ
これが書けないとヤバいと思う
こういうのって内部と外部とどっちで繋ぐのがよろしいの?
それとも、JOINではなくWHERE内でキーを繋いであげればいいの??
まだ書かれていない要求仕様があるんじゃない?
読み取れる範囲だとどっちでも良いように思う
>>667 select 売上日, 顧客名, 商品名, 売上数
from 売上テーブル
inner join 顧客テーブル on 顧客テーブル.顧客コード=売上テーブル.顧客コード
inner join 商品テーブル on 商品テーブル.商品コード=売上テーブル.商品コード
>>669 FROMに複数テーブル書いてwhereに結合条件書くのは今は推奨されない
内部か外部かは、商品テーブルにない商品売ってたり顧客テーブルにない顧客に売ってたりしない限りどちらでも同じ結果
どっちでもいいなら普通は内部結合にするんじゃね
>>672 ありがとうございます
メモしておきます
外部キーがあればinnerなければleft joinかな
このなかで一番美人なのって真ん中だよね?深キョンレベルだと思うのだが
ちなみに向かって右は目も鼻も整形してるって本人が公言してるけどそれ抜きにして誰が一番美人だと思う?
http://bigsta.net/media/1933567086757747003_3564907098 >>672 そうなのか、勉強になったわー。
講習受けたときはJOINで教わったのに、実際にWHEREで書かれたの使ってる人たちがいて何でだろうと不思議だったんだけど、
歴史的な表記ぶれみたいなもんなんだな。
商品登録がない商品を売ってる可能性とかも全然思いつかなかった。
>>674 外部キー無いけど繋ぐって、どんなシチュエーション??
>>677 結合条件をFROM句にしたのは標準SQL。ただ構文が長ったらしいのは失敗だった。
>>672 推奨されない?
そんな嘘を書くな。
製品によって結合条件の構文の一部が非推奨になっただけ。
>>677 上の世代からするとなんでFROM句に書きたがるのか疑問なんだよ。
どのテーブルにも脳死したかのように
createdとupdatedっていうtimestampなカラムがあるんですが普通なんですか?
都道府県テーブル
id 県名 作成日 更新日
1 北海道 2018略 2018略
2 岩手県 2018略 2018略
こんな具合に定数のような項目にもあります
>>681 結合の条件なのか検索の条件なのかが分かりやすいからだろ
Whereに結合条件書くと順番が制御できないから外部結合で結果が不定になることがあるってのがあったな
>>682 テーブル設計の基本ルールとして定めていることは特に珍しくはないと思う
本当に必要か?という議論をすることは可能だが
どっちに転んでも誰も得をしないので誰も言い出さない
普通かどうかよりも、テーブル設計書を見た方が良いかと
みなさん、UFOはもう見られましたか? 世界教師マYトレーヤは、大暴落のあと出てこられます。
http://2chb.net/r/liveplus/1546223584/l50 >>683 それを言い出すとWHERE句が不要になる。絞り込み条件もFROM句に書けるし、若い人間で知識がないとひとつのテーブルでレコードを絞り込んで結合させた方がいいなどと言い出して、全部FROM句に行ってしまう。
>>684 根本的にSQLをわかっていない。SQLの書き方で処理が決まるわけではない。
>>682 自分がシステムのテスト、運用・保守をしていたらわかるよ。複数人でテストをし始めたら、誰がいつ作ったのか、誰がいつ更新したのかわからなくなり、チーム作業が成立しない。
>>690 >SQLの書き方で処理が決まるわけではない
から、そのときの実行計画次第で結果か変わるって話だけど?
意味わかってレスしてる?
where句に結合条件を書こうとすると外部結合のとき困るよな
Oracleは(+)を使ってwhere句で外部結合が今でもできるけど推奨してない
SQL Serverでも似たような演算子が昔あったけどもうサポートされてない
from句は、集合を作る処理で、where句とselect句で選択範囲を決定しているんだろ?
>>692 製品は人間の感覚を意識して実装されているが、SQLの仕様ではない。
>>694 RDBの教科書的に言えば直積(from)→選択(where)→射影(select)だな。
>>695 SQLの仕様的に不定な結果を除去できないから推奨しないって話をしてたんだけど
製品ってなに?SQLが人間の感覚を意識して実装されてるって?
3値論理とか、不定な結果とかが感覚的なのかよ。常人とは違う感覚もってるらしいな
言うことはわかるが、具体的にどの製品のデフォルト設定を想定しているのか?
外部結合の構文は、どの製品も標準SQLの構文にも対応するが、個々の製品の独自拡張もまた進んでいる。
あなたの言うことで気になるのが、実行計画によって結果がかわるという点で、そんなポンコツ製品は使わない方がいい。
議論するときはID表示にするかトリップ付けてくれよ
誰が何を言っているか追いかけられない
>>698 製品がポンコツなんじゃなくて、SQLのあいまいさの問題
まあ俺もかなり信じられなかったからな
実例もどっかで見たんだが見当たらん
AとBを外部結合したものにCを外部結合するのと、
BとCを外部結合したものにAを外部結合するのとでは結果が変わる
whereでの外部結合ではこの違いを表現できん、てな話だったはず
from A,B,Cと書くと、感覚的には前者で処理されると思い込むが
事項計画次第で後者で処理されることもあり得るって話だったはず
>>700 OUTER JOINが導入される前の外部結合は製品毎の独自拡張なんだから
そこにあいまいさがあるならその製品の問題になるでしょ。
それともOUTER JOINにまだ曖昧さが残っているということ?
>>701 だからwhereでの結合は推奨しないって話じゃないのか
「だから」ってのはどこに係ってるの?
>>684が言っているように結果が不定になるというのはどの製品のことかって話なんだけど。
>>700 外部結合の条件が書かれていない。結合条件が異なるから結果が変わるのを実行計画の違いだと思っているのか?
>>703 たしかオラクルだったはず
今探しても見当たらん。結構トリッキーなSQLではあった気がするんだが
原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが
>>704 まったく同じSQLで結果が変わる事があるから不定って言うんだけど
まあ俺はwhereで結合する事はそれ以来やめたからもうどうでもいいや
実例だせない時点で説得力低そうだしな
Oracleなら、解釈があいまいになりそうな記述は最初から弾かれたと思うが。
>原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが
原理的もなにも、SQL標準のfromとwhereだけではそもそも外部結合を表現することはできないんで
各製品が独自に拡張していたわけ。そこに問題があるなら当然その製品の問題。
ってのは上で何度も指摘されているんだが。
>>708 >>35で[KEY]を"KEY"にすれば標準SQLになると思う
IDが予約語のDBもあると思うが標準では予約語じゃない
row_number()使わないでやってみた
SELECT "TableA".*,"TableB"."ID2","TableB"."DATA" FROM "TableA"
LEFT JOIN (
SELECT "ID",MAX("KEY") AS "KEY" FROM "TableB" WHERE "KEY"<=2 GROUP BY "ID"
) AS a ON "a"."ID"="TableA"."ID"
LEFT JOIN "TableB" ON "TableB"."ID"="a"."ID" AND "TableB"."KEY"="a"."KEY"
ORDER BY "TableA"."ID"
>>711 MAX(KEY)とWHEREが巧妙ですね
>>711 検証してみたんですが、
TableBに(8,2,3,'b_key3')を追加し、検索KEY=3にした時、
一番若いKEY=1を持って来れてません
?
2より若いじゃ無くて2が無ければ一番若いKEYなのかな
KEY=3,4,5の場合3になる?
なんかSQL貼り付けようとすると書き込みに失敗する
何故だ
連投スマン
何度か試したけど直接SQL書くとエラーになるっぽい
https://ideone.com/UrWptx >>33みたいに場合分けを含むようなのは素直にunion allでやる方が見通しが良かったりする。
記述は冗長かもだけど。
>>718 最初、
>>716の16行目以降のSELECT文を書き込もうとしたら失敗したのよ
>>711だと書き込み成功してるのに何故だろうか?
どの部分が問題になっているか知ってる?
チェックは途中のクラウドで行っているようです
SQLの特定のキーワードに反応しているみたい
引っかかるときもあれば引っかからないときもある
その辺の基準はよく分からないです
チェックする検査項目が変わるのかもしれない
>>720 ありがとう
書いてみてエラーになったら外部サイトに貼るしかないか
手間だけど、それが一番良いと思う
後は全角文字に置換して貼り付けるくらい
汚くはなるけど、説明と合わせて書きたい時は
こうすると良いかな
初めて質問させていただきます
SQLからPostgresへのデータ移行をC#使ってプログラム作ってます
csv吐き出しで移行させたいんですが、ダブル型のカラムのデータが.000や10.600という形で入ってるのですがどうにか0にする・余計な0を無くすことが出来るのでしょうか?
またそういう事が吐き出しの際指定出来るのでしょうか?
吐き出しはbcpでフォーマットを読ませてます
FORMAT()関数とか言うのがあるんじゃねぇの?よく知らんけど
>>723 SQL ServerのことをSQL
CSVファイルのデータをわざわざC#でインポートプログラムを作ってインポート
エクスポートや出力にあたる言葉が「吐き出し」
初心者なのかクソ経験者なのか?
>>725 自己解決しました
申し訳ない急ぎだったのでそういう書き方になってしまった
C#は移行という一貫性のあるプログラムです
SQL serverからPostgresへの移行と書いてあるように
目的の為の柔軟性もあるという意味合いで情報を付加しただけに過ぎないです
文字でデータを移行するのに数値型のデータをどう表現するのか指定を行っていない時点で初心者。
>>727 吐き出しはbcpでフォーマットを読ませてます
>>728 問題は別にありました
思いっきりbcp時にNULL文字の空白が…と警告が書いてあるのにも関わらずNULLIFでRTRIM関数を使用していないことが原因でした
ちなみに.000は0には出来ませんでしたがコンバートで代用しました
根本的にアプローチ方法が違う様な気がする
山に登るのも好き好きだから
逆立ちして登りたい人もいるだろうし
今度はbcpの使い方を知らなかったということか。何もかもダメだな。
bcpの使い方ってよりbcpの相互関係に気付けなかっただけだろ
auto incrementって指定しなくても勝手に連番いれてくれないの?
autoincrementのカラムを何も指定しないでinsertしても入らないのですか?
それは無理だろう
作成時に指定した制約の範囲で値は入る
じゃあ空のテーブルに1から連番のidを入れたいときどうしますか?
取得時に連番を振れば良いので、そもそもの要求が正しくないと考えるべきだな
>>742 取得時?自分で連番を入れろってこと?
>>743 postgresqlです
データベースってどういう仕組みなの?一つのテーブルにファイルどれくらい使ってるの?
>>741 必ず連番でないといけないか、まずはそこを考えた方がいい。
>>744 同時実行時にどうやって連番が振れるのか考えた方がいい。
ユーザーがよく連番にしてくれというが、データそのものが連番を持っている必要はない場合が多い。
シーケンスを使うと歯抜けになるが、歯抜けで何か問題がどうか聞け。
どうしてもやりたければ、番号を管理するテーブルを用意して、一瞬、テーブルをロックして最大値を求めてレコードを追加したり更新したりすることで実現する。
レコードが削除されたときは番号を降り直すのかどうかも事前に聞け。
ユーザーは単に表示されている件数とデータの番号が一致していたら、わかりやすい程度のことしか言っていない。
>>746 これが何なのか読んでもわからんすw
というかORM使ってるのでこの型使えるのだろうか
>>747 >>748 確かに連番である必要は無いです
適当に被らない番号を振ってもらえれば良いんだけどそういう句はあります?
>>750 どういうやり方で最初の空のテーブルを作成してますか?
>>750 シーケンスを作って、シーケンスから新しい番号を取る。
製品によって異なるから「PostgreSQL シーケンス NEXTVAL」のキーワードでくぐって勉強して。
>>751 CREATE TABLE prices (
id INTEGER,
date DATE NOT NULL,
market_price INTEGER,
nav_price FLOAT,
retrieval_date DATE,
PRIMARY KEY (date)
)
というSQL です。id をインクリメントしたいんですが
>>752 ググっても使い方がwかりませんでした
>>752 質問をいくつか
idを連番にして一意にしたいって事ですか?
dateをプライマリキーにしていますが、
このテーブルデータのデータを一意に特定したいときに
dateを指定するって事ですか?
date DATE NOT NULL,
PRIMARY KEY (date)
>>746の回答で終わってる話だし、自分で調べる気がないようだから
これ以上構わないほうが良いぞ
>>755 date で一意にしたいです
>>758 つまりカラムの型をSEREALにすれば良いんですね PRYMALY KEYにしか使えないんですね
何をしたいのかがよく分からないけれど
率直に言うと、テーブル定義を見ただけで、これは酷いと思った
ここで質問するにしても基本が出来ていないと
質疑そのものが成り立たないと思う
一つ一つ教えてやれるほど暇な人はここにはいないと思うので
まず自力でテーブル設計の基本から学び直した方が良いだろう
う〜ん厳しいっすね、
達人に学ぶDB設計指南書
という本を読んで出直してきます
ありがとうございました。
教えてください。
12c ってWindows10Homeには対応していないのでしょうか?
インストールしようとすると、最初の段階でフリーズしてそのままなんですが。。。
それとも自分のやり方が間違っているのか?
> それとも自分のやり方が間違っているのか?
Yes.
Oracleに聞け
>>762 Windows 10 Homeには対応していません。Windows 10 HomeはIT技術者が使うようなものではありません。
Windows10でも64ビット版なら対応してるみたいだな
>>762 Win10Home x64 に Oracle12c 入れてるよ
Release2 だと言うように途中で止まったけど Release1 は最後まで行った
こういう勝手な組み合わせで使って文句をサポートに言ってくる会社は必ずある。
>>766 視力検査で「みぎ」と言えば視力1.2と判断される。
【バイトテロ】 くら寿司「法的措置とる」 奴隷DQN「法律が金持ちだけを守るから、テロに訴える!」
http://2chb.net/r/liveplus/1550110870/l50 基本情報の古い過去問のデータベースが解けません。解説してください。
平成18年度春期 基本情報 問1 空欄c 答えは「ア」
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2006h18_1/2006h18h_fe_pm_qs.pdf SELECT 社員ID FROM 社員表
WHERE 年齢 < ALL(SELECT 年齢 FROM 家族表
WHERE 家族表.社員ID = 社員表.社員ID)
副問い合せ、相関副問合せは理解しています。
副問合せの結果リストが0行の場合、なぜ<ALLの条件が成立してしまうのかわかりません。
oracleの環境で試してみたところ >ALL でも =ALL でも、副問合せの結果リストが0行の場合、真となるようでした。
よろしくおねがいします。
>>772 ALLは真偽値を返すのではなく、副問い合わせの結果すべてに当てはまるかどうかの条件構文。
>>772 結果リストがゼロ件の場合は、FALSEでもNULLでもTRUEでもないため、条件そのものがない扱いになる。
正確には結果が返らないため、どの年齢もTRUEになってすべてのレコードが対象になる。
SELECT文の結果の対象レコードが存在しない状態はNULLではない。
>>772 ALLはその副問い合わせが空のときはTrueと決まってるから
イマイチ直感的ではないけど、そう決まってるからしょうがない
条件そのものが無い扱いになったりするわけじゃない
ALL条件はTrue/Falseを返す(この場合はTrue なぜならそう決まっているから)
MySQLの使い方に悩んでる。
WebアプリケーションでToDoリスト作るとして
ToDoリストのデータとして5つのテーブルが必要です。
Aさん、Bさん、Cさんがそれぞれ保存し、各自、自分が登録したToDoのみが見れます。
このような場合、SQLサーバでは、Aさん用データベース、Bさん用DB、Cさん用DBを作成する。
という使い方は変ですか?
>>779 補足、使用人数は例では3人ですが、100人以上の可能性あり
ひとつのテーブルで行ごとにアクセス権を設定できるDBMSもあるにはあるけど
(MySQLでできるかどうかは知らん)
アプリケーション側で制御するのが普通
ユーザーごとにテーブルを分けるのは普通じゃない
MySQLでもユーザー毎にdatabaseを割り当ててアクセス権を設定すれば出来ないことはないが
そこまでする必要があるのって、ユーザーにテーブル作成や削除までやらせたいときくらいじゃないか?
ありがとうございます。
>>779です。
SQLに対してDBを作ったり、テーブルを作ったりするのはToDoアプリ側で、ユーザーはToDoアプリの操作のみです。
アプリの保存データをSQLで管理したいという話なのですが、
こういうときは、データベースごとに分けるのが普通ではないというなら、普通はどんな方法で管理するのでしょうか?
@ 一つのDB内に、Aさんのテーブル5つ。Bさんのテーブル5つ作る 。(テーブルが増えていく)
A 一つのDB内に5つのテーブルがありその中でAさんのレコード、Bさんのレコードを作っていく。(レコードが増えていく)
B 名前をつけて保存で、新しいDBを作りその中に5つのテーブルを作る。(DBが増えていく)
人が増減するのに合わせてDBやテーブルを増減するのってその管理がまた
大変だろ…。これ言うとここで鬼門の削除フラグが〜になってしまうけどw
昔、IBMが作ったシステムの設計見たらビューで権限のあるレコードだけ表示できるようにしていた。
そんなんでパフォーマンスが出るのかと思ったけど、結構大規模なDWHでもそこそこの速度が出ていた。
もしかしたらIBMのチューニング力のなせる業だったのかもしれないが。
>>784 ありがとうございます。ということは、ユーザーの操作により、DBやテーブルの作成はあまりしない方が良いということですね。
アプリ起動時に、DBが無ければ作成したかったんですがそれもやめた方がいいのか?事前に作成しておくのが普通?
>>785 なるほど、ビューを使えば個人毎のテーブルとして扱えるって事ですね。
SQL文は理解したんですが、全体的な使い方がイマイチでして、こういう時に役に立つ書籍が何かあれば教えて下さい…
使い方なんて人それぞれっていうのは分かってるんですが。
>>786 >事前に作成しておくのが普通?
普通は動的にテーブル作ったりしない
>アプリ起動時に、DBが無ければ作成
WEBアプリだよな
アプリってクライアント側かサーバ側かどっちのことを言ってるんだよ
普通クライアントが直接DB弄ることなんかないだろ
つか設計スレいけ
>>786 ひとりずつ分けて管理するというのは紙媒体の考え方だから、素人がそういう設計を思いつくのは理解できる。
ただし、リレーショナルデータベースの世界では、かなりおかしな発想。
操作できるのが自分のデータのみであれば、自分のデータかどうかどうして区別できないと思うのか?
権限という概念がどうしてあるのか、勉強した方がいい。
>>688 >>689 ありがとうございます!
もう少し考えて勉強します。
>>681 横だけど上の世代はWHERE句に結合を書いてたの?
いわゆる結合条件のことだろう。
θ結合は直積から選択するのと等価なんでSQL89まではそういう風に表現してた。
Oracleに限って言えばシステム内部で組み込まれてるビューは
今でもWHERE句の結合だけじゃないかと思えるレベル
>>791 ちゃんと製品のマニュアルを見たことがあるのか?
SQLの歴史上、結合条件はWHERE句に書き、FROM句には書けなかった。
>>794 マニュアルなんてあるんだ
見たことないよ
>>794 勉強んなるわ
でもFROMに書けるんだから今はWHERE句に書く必要もうないってことだよね?
最初に現場でoracleを習って
そこでは(+)が多用されていた
その後外部結合というのを習ったけど
join句、いまだに使い方慣れなくて困る
へぇー
じゃあぶっちゃけ今はJOINから入っちゃった方が無駄がないのかな?
社員テーブルに以下の5カラムがあります。すべてnot nullカラム。
社員id(主キー)、氏名、所属部署、入社年度、生年月日
社員idはランダムで採番されます。
このとき、
所属部署ごとに以下を満たす1人の氏名と生年月日を抽出するとき、
どのようなSQLが考えられますか?
・入社年度が最も過去
・それが複数人居る場合は、その中で社員idが最大の社員
お力添えよろしくお願い致します。
FROM 社員テーブル T1
WHERE NOT EXISTS (
SELECT * FROM 社員テーブル T2
WHERE T2.所属部署 = T1.所属部署
AND (
T2.入社年度 < T1.入社年度
OR T2.入社年度 = T1.入社年度 AND T2.id > T1.id
))
803さんのはまだ試してないですが、
group byとhavingで2回絞るのは無理ですかね?
>>802 つかってるDBMSかけ
SELECT * FROM(
SELECT
ROW_NUMBER() OVER( PARTITION BY 所属部署 ORDER BY 入社年度,社員id DESC) as 順位,
*
FROM 社員テーブル
) t
where t.順位=1
ウィンドウ関数使えないようなら、サブクエリ3段とかで出来そうだが
>>806 ありがとうございます、勉強になりました。
SQL serverです。
MySQLで
select max(`社員id`),`氏名`,`所属部署`,`入社年度`,`生年月日`
from `社員テーブル`
where (`所属部署`,`入社年度`) in
(select `所属部署`,min(`入社年度`) from `社員テーブル`
group by `所属部署`)
group by `所属部署`;
>>806 Row_Number wwwwwwwwwwww
>>806 そういう使いもんならないの教えんのやめ
これから仕事で必要になるためSQL勉強しています。
皆さんはどうやって勉強していますか?
現在SQLBoltってサイトで勉強しています。
覚えが遅いためなかなか覚えられません。
一応ExcelのVBAはできます。
勉強法がわからないのでAccess VBA Standardの資格で勉強した方がいいでしょうか?
プログラム言語と違って、何か適当な例題があるわけじゃないし、
割と実践的に体で覚える感じでした
SQLを使用するソフトによって多少、あるいは大きく違ったりするので
SQLをどういう所で使いたいか、ソフトに何を使うかを見極めて学習すると
効果的かも知れません
それから、SQL言語はVBAとは異なるものです
>>812 使いものになるまでの所要期間だいたいどれくらい?
>>815 すみません横から失礼いたします。
業務上必要に迫られ勉強することになりました。
環境は会社で用意されてますが前任者が居なくなってしまう為、ゼロから始めて1ヶ月半でモノにしろと言われています。
命がけで半年ですか…胃が痛くなってきました。
1ヶ月半など無茶苦茶な要求と言えそうですね(泣)
ちなみにエンジニアさんですか?当方非エンジニアです。
複雑さの程度にもよりますから
簡単なものでしたら、1か月も掛からずに習得は出来るでしょう
担当する業務の内容次第です
>>817 レスありがとうございます。
段階にもよりますね。
予定されているものを見たところサブクエリ5〜7つ、最後で結合するという説明でした。
かなり長くこんなの書けるのだろうかと気が遠のきました。
テーブルの挿入などはなさそうです。
>>812 私はあまり覚えがよいほうじゃないので、業務が始まる前に
勉強して基本的な知識をつける予定でしたが、
やはり実務をこなして体で覚えるほうが早いのですね。
レスありがとうございます。
>>813 レスありがとうございます。
ゲーム会社で簡単なデバック作業をしています。
SQL覚えるのに半年もかかるのですね。
皆様色々教えてくれてありがとうございます。
>>819 818です。横から質問奪ってたいへん失礼しました。
ちょうど同じような境遇でしたもので。
思ったよりもSQLを身につけるのは時間がかかりそうで覚悟せねばと思いました。
お互い頑張りましょう。
>>820 いえいえ失礼なんて、とんでもないです。
私もSQLを覚えるのがこんなに時間がかかるとは思いませんでした。
大変だと思いますが、お互い頑張りましょう。
>>811 仕事で必要になるならその仕事で使うDBMS使えばいいと思うが
大抵のDBMSは無償版提供してるし
このスレの先頭、
>>3-10辺りをすらすらと書けるようになれば
大体の業務はこなせるんじゃないかな?w
分からなくなったらここで聞いてみると良いですが、
その際に、ソフトに何を使っているかを書いて欲しいです
ソフトによって使えたり使えなかったりするものがあります
Sybase ASEだとOLAP関数サポートなく、
806さんのムリでした
一番エレガントだと思ったのに
初心者の質問続きとなっているようですみませんがお願いします
「SQLの基本構文を書くことができる」というとどういった範囲になりますか?
>>803 望んだ結果が出ました。
ありがとうございました。
社員テーブルに該当するものが複数テーブルから構成されたサブクエリだとかなり重くなりました。
Select文のasに( )を使いたいのですが、どうかけばいいでか?
ダブルクォートで括るのが普通だが
角括弧やバッククォートを使うDBMSもある
>>828 そういったあんた個人のわがままが通ったとして、
で、ユーザー(つまり結果)に優位性があるのか?
>>829 レスありがとうございます。
使ってるのはpostgresqlてすが、" ではダメみたいです。
>>830 As 時間 としていたところ、ユーザーから 時間(分) と表示して欲しいとの要望かありました。
()は特殊な文字てあることは理解していますが、何らかの策があるのではと質問したのですが。あまりに非常識なようでしたら諦めます。
postgresなら"でいいはず
なんらかのプログラミング言語を介して使っているなら
そのプログラミング言語に対して"をエスケープしなければならない
>>832 すみません、アホなことしてました。
時間"("分")" って…
"時間(分)"でokでした。
まもなく日本から世界経済が崩壊し、世界教師マYトレーヤとUFOが出てくる。
それからベーシックインカムがはじまるので、20年間ヒキコモリの人でも死にはしない。
むしろ、心配するなら被曝のほう。
【メルトダウンA級戦犯】 『非常用発電機』安倍が放置 『非常用空冷回路』小泉が撤去 死刑求刑
http://2chb.net/r/liveplus/1552357792/l50 >>837 必要なだけ
経験としては10個ぐらいまでやったことある
テーブル
No1 No2 No3 No4 No5 No6 No7 No8
data1 A B A A A C B A
data2 A A A A A A B B
data3 C C C A B A A A
data4 A A C C A B A B
data5 A A B A A B B A
data6 A C C A C C A A
ほしい結果
A B C
data1 5 2 1
data2 6 2 0
data3 4 1 3
data4 4 2 2
data5 5 3 0
data6 4 0 4
横方向にA,B,Cの数をカウントしたいですが、SELECT文のみで実施するとしたらどういったクエリになりますか?
oracle12です。
select
No1,
((case No2
when A then 10000
when B then 100
when C then 1
end)
+(case No3 ……)
+……)
from テーブル
>>839 スマホだから試してないけど
(セレクトはselectに置換えてくれ)
セレクト
T.data as data,
sum(case T.NO when 'A' then 1 else 0 end) as A,
sum(case T.NO when 'B' then 1 else 0 end) as B,
sum(case T.NO when 'C' then 1 else 0 end) as C
from (
セレクト data, NO1 as NO from table
union all
セレクト data, NO2 as NO from table
(* 中略 *)
union all
セレクト data, NO8 as NO from table
) T
group by T.data
>>840 >>841 >>842 レスありがとうございます。
>>841 ちょっと理解できませんでした。
>>842 やはり、UNION ALL使うぐらいしかないんですね。
少し調べて全く同じものまではたどり着けました。
NOが200ぐらいあるのですが、テーブルの設計自体を見直したほうがよさそうですね。
>>843 そもそもその表で管理しようとしているところが天才
>>839 これはPostgreSQLだけどoracleにもUNNESTはあったように思う
無かったらスマン
https://rextester.com/VNEZX24470 >>845 ありがとうございます。
ちょっと調べてみます。
>>844 うん。わかってる。
ほんとはこういったテーブルにしたいのだけど、毎日のレコード数が凄いことになっちゃうなーって。
別に集計されたテーブルを作ることを検討します。
data_ No rank
data1 No1 A
data2 No1 A
data3 No1 C
data4 No1 A
.
.
.
data1 No8 A
data2 No8 B
data3 No8 A
data4 No8 B
data5 No8 A
data6 No8 A
>>846 > 毎日のレコード数が凄いことになっちゃうなーって。
どんなシステムかわからんけど今時そこら辺のPCでも100万レコード程度は普通に扱えるしOracleでそこそこのサーバー入れてりゃ1億件程度でも破綻しないよ
>>847 1次元配列だと200万レコード/日ぐらいが想定されるので、少し厳しいのかなと感じています。
集計前・集計後のどちらもが必要なので、各々のテーブルを作るのが良さそうですかね。
項目にsumA、sumB、sumCを追加しておいて
レコード挿入時に集計しておけば良いのではないか?
select
No1
,decode(No2,A,1,0)+decode(No3,A,1,0)+…+decode(No8,A,1,0) As Acnt
,decode(No2,B,1,0)+decode(No3,B,1,0)+…+decode(No8,B,1,0) As Bcnt
,decode(No2,C,1,0)+decode(No3,C1,0)+…+decode(No8,C,1,0) As Ccnt
from テーブル
20年前のPCの感覚で考えているんだろうな。しかも巨大Excel風がお好みらしいから無視が一番。
糞メーカー製品のせいでテーブル変えられないって訳でもなく、自分でそういう設計にしてるならしょうがないね
decodeとかOracleしか使えないのよりcase when
で記述していったほうがよくね
いじめはどこの町にもあるが島本町は特に酷い
「大阪府三島郡島本町のいじめはいじめられた本人が悪い 」なんて
公言する町は他に無い
Oracle 12 なら VARRAY とかでもいいかも
ただ操作する関数は貧弱なのでストアド必須になると思うが
>>856 知識がないのになんで無理やり書き込むの?
Postgres11を使用しています。
3700万行程のテーブルの中途半端な位置に行を追加したいのですが、
通し番号の昇順を維持するにはどうすればよいでしょうか?
こんな構造です。
----------------------------------
主キー | 本文(最大3MB程度)) | 通し番号
----------------------------------
今はこうなっているとします。
--------------------
0001 | あいうえお | 0001
0003 | さしすせそ | 0002
0004 | たちつてと | 0003
--------------------
ここに、1行追加して、以下のように変更したいです。
--------------------
0001 | あいうえお | 0001
0002 | かきくけこ | 0002
0003 | さしすせそ | 0003
0004 | たちつてと | 0004
--------------------
>>858 この穴埋め問題はよく話題になるんだけど、やりたいなら最初からそう設計して採番しないとキレイにできないんだよ。後からやるならアプリ側で調整したほうがうまくいく。主キーならとくに。
>>858 UPDATE テーブル
SET 通し番号=通し番号+1
WHERE 通し番号 > 2
とかではなくて?
>>858 update テーブル t1
set 通し番号 = (select Rank
from (select 主キー,
Row_Number() over(order by 主キー) as Rank
from テーブル) t2
where t1.主キー = t2.主キー);
主キーには空きがある前提なのか?
その例だと通し番号要らんように見えるぞ
超初心者の質問で申し訳ないですが
SQLで
顧客情報、順路表から計算して
申請書を作る
医療関係のデータベースは作れますか?
>>864 要件が不足しています
計算とは?
2つ表から単に申請書に必要なデータを抜いてくるだけなら当然つくれます
>>865 すいません
もう少し詳しく書くと
■顧客情報
A受けている治療内容 (〇〇円)
■順路表
B患者を何回いった(〇〇回)
C前の患者との距離(〇〇km)
■申請書
A、B、Cの数字を元に
四則計算して
それぞれの箇所に数字を入力
して申請書を作成
できるデータベースです
>>865 あと
順路表を前月と同じ内容を
翌月にコピーできますか?
※4/1(月曜) Z→E→F
4/2(火曜) L→E→M
なら
5/6(月曜)) Z→E→F
5/7(火曜)L→E→M
>>865 現在はEXCELでやっていて
重すぎるので何か手はないか
と考えているところです
SQLでできるかというより
これは医療向けアプリじゃないの?
ACCESSで作れますかという話かね
索引とか使えば検索を早くできるからたぶんマシにはなるしデータの複製もできる
発想を跳躍させて
Z、E、Fとか未定義で最短経路問題なのかすら怪しいけど
経路ならグラフデータベースとかある
>>869 返信ありがとうございます
Eさんの4月分の申請書を作成するときは
4/1はZ→Eの最短距離
4/2はL→Eの最短距離
で計算します
※Excelでは最短距離だけのシートがあり
Z→Eとすると4/1は最短距離だけのシート
から情報を抜き出しZ→Eの最短距離で計算します
Accessで作れますか?
調べたら
Excelと同じOfficeですし
SQLもあるそうですね
それと
検索機能とかでスピードアップ期待
データの複製はしやすそうですね
現状のスタイルを頑なに守るよりも、市販のパッケージに業務形態を合わせたほうが幸せになれると思う。
SELECT key, 名前, 住所, 電話番号
FROM usertable
WHERE (key = (SELECT MAX(key) AS EXPR1 FROM usertable usertable_1))
このSQLは何をしているのでしょうか?
特に、EXPR1が分からないのと、FROM後に、DBには存在しないusertable_1というテーブルが指定されているのが理解出来ません。
>>872 EXPR1はMAX(key)の項目名、
usertable_1はusertableの一時的な名前
と名前を付けているだけです
が
このSQLの場合は特に名前を付ける意味はありません
>>872 無駄なテーブル別名、カラム別名があり、さらに無駄な括弧がある。
こうなった経緯は読み取れない。
項目別名はけっこうasつけるひと多いな
テーブル別名にはみんなつけないけど
>>871 ならない
他業界しかやってないやつに
現場の気持ちはわからない
どんなソフトよりも
自分のExcelが一番
今後さらに良くするための質問
SQL標準では昔から列別名もテーブル別名もASをつけて良いのだが
なぜかOracleでは昔からテーブル別名にASをつけられない
>>878 それは誤り。Oracle Databaseでは特定のバージョンだけASを使用できないものがあった。
ExcelのクエリはASで別名付けても無視するのが残念
>>881 ExcelのSQL操作はおまけ機能みたいだからなあ。特定の文字が使えなかったりとタチが悪い。
そもそもデータベースが何かを理解してないな
表計算ソフトとは別物
計算や出力が必要ならプログラム書く必要がある
ウェブのニュースを集めてとにかくデータベースに放り込み必要なものを取り出すことをしていたのですが
先日からこのようなエラーが出てデータを取り出した結果が取れなくなりました
データが取れることもありますがたまにうまく行くといった感じです
エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
コード:80004005
ソース:Microsoft OLE DB Provider for ODBC Drivers
データベースのサイズは2GBくらいあります。設定等々は変えていません
SQLサーバーのエラーログにエラーは見当たらずいろいろやりましたが困っています
解決方法を教えてください
クエリを飛ばして30秒ほどでエラーが返ってきます
エラーコードで検索してnet_read_timeoutをいじったり
/*+ MAX_EXECUTION_TIME(1000) */を入れてみたのですが結果は変わりません
データベースの行数は680421です
よろしくお願いします
ありがとうございます。どうすればいいですか
クエリを変えるか、データベースの設定をいじるか調べてみましたがわかりません
>>889 >エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
>SQLサーバーのエラーログにエラーは見当たらず
なに使ってるかしらんがそのDBMSのスレで聞けや
このスレタイで言ってるSQLはMySQLのことでもSQLサーバーのことでもないぜ
>893
sql晒してみれば?
ココ、sqlスレだし
ありがとうございます。SQLは以下です。範囲を短くしても長くしても前述のエラーが出ます
SELECT * FROM table1 where input_time BETWEEN '2019-05-01 00:00:00' AND '2019-05-01 00:10:00';
>>896 input_timeにインデックス張ってる?
>>897 ありがとうございます!データの件数は68万です。
input_time日インデックス張ってみます
MySQL 総合 Part26 [無断転載禁止]©2ch.net
http://2chb.net/r/db/1499949595/ >>889 これが元の話だけど、問題の切り分けが全然できてない。
「SQLサーバー」とは何?
>>904 SQL Serverじゃないの?違うの?
>エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
>コード:80004005
>ソース:Microsoft OLE DB Provider for ODBC Drivers
この通りなんだろう。(Microsoft) SQL ServerではなくMySQL
それを動かしているPCを指してSQLサーバーと言ったんだと思う
まあよくわかってない人がデータベースとSQLをごっちゃにしちゃうとかはありがち
>>893がちゃんとログをコピペしてる所はほめていいと思う
昨日はありがとうございました。
>>908はその通りです
インデックスを張ると今度は要求された名前、または序数に対応する項目がコレクションに見つかりません
のエラーが出るようになったのでインデックスをちゃんと張る所からやってみようと思います
ひとまずありがとうございました
>>888 Excelからデータベースに対してSQL文を投げて、結果をワークシートに取り込むまでの機能の話だろ。
かなり初期からある機能だぞ。
UPDATE のときのテーブル名に正規表現またはワイルドカードを使う方法を教えてください。
例えば、table_a_001〜table_a_100が合った場合に、「table_a」が含まれるテーブルだけ一括でupdateしたいです。
イメージ的にはこんな感じに
UPDATE `table_a_*` SET `type`='hoge'
宜しくおねがいします。
>>915 > 例えば、table_a_001〜table_a_100が合った場合
その時点でおかしいから設計を見直せ
どうしてもしょうがない場合はテキトーなスクリプト言語でSQLを生成して流せ
金と技術力がないと運用にツケがまわるよくある悪例だね
テーブル名の001〜100に意味があるなら、その値を項目に追加して
全部を一つのテーブルにまとめてしまえばどうかな?
001〜100は例えで書いたんですけど、実際は日付なんです(_20190510)みたいな
その日付ごとにけっこう大きなデータがあるので日付で分けてるんですが、SQL文だけでtable_aのみを絞るのはやっぱり無理なんでしょうか?
おっしゃるとおりで設計が間違ってるんでしょうけど
日付をテーブル名にするようなデータベースで
その後に更新が必要になるって何かが変だと思う
>>920 ストアドプロシージャで動的sqlでも使わない限り無理です
性能的な問題でやっているんならパーティショニングが使えないか検討するところだね。
量が多いからテーブルを分けるというのが、わからんな。
処理速度の問題だとしたら、インデックス付けてないとかw
>>920 ひとつのUPDATE文で済ませたいという点からして、トランザクションの概念がないのがわかる。
>>920 データ量が多いという認識がそのものが間違っている。
本当にデータ量が多いシステムを担当しているのなら、こんなところで質問してこない。
質問者をあれこれ詮索するの、感じ悪い
提案までにしとこうよ
このスレッドそのものが、ずっと初心者スレになっているから仕方ない。
シェルスクリプトのスレッドでも一発コマンドでできないかと、しつこく質問してるやつがいる。
プログラマがプログラムを作っているのに、なぜかひとつの文に収めないといけない思想信条があるようだ。
こういうのは無視するしかない。
ワンライナーは個人の趣味であって必ずしもソレに付き合わされる必要はないな
PHP&MySQLの環境です。
ユーザーID
ポイント
を項目にしたテーブルがあるとします。
ユーザー間で破綻なく自由に任意のポイントを送受信するにはどのようなコードを作成すればよろしいでしょうか?
また、DBサーバが複数ある場合で、同様にDBサーバ越しでも同様のことをしようとするとどのようなコードになりますでしょうか?
秒間数千、数万の処理を行いたいです。
ご教授お願いいたします。
なぜこの程度の知識しかない奴がこんな作業をさせられるのだろうか
PHPしか書けないような聞き方っぽいのに
XAトランザクションで秒間数万ね
人をすり潰していたITバブル期みたいなブラックだね
http://q.hatena.ne.jp/1217036141 超初心者ですすいません
likeとisと=の使い分けが分かりません
inの前はlike、nullの前はis、データ型が数字だと=であってますか?
なんか1つもあってないような気がするな
"is null" と "is not null"は単語じゃなく文でワンセット
文字の比較でも =
in の前は like ... え?
すいませんありがとうございます
比較の時に、=を使ったりlikeを使ったりが、使い分けがわからないのです
isが出てくるのは、isnullとisnotnullだけですか?
超初心者なら、慣用句みたいに暗記した方が良いかもよ
like……文字列の部分一致検索につかう
=……完全一致検索
is……null比較の構文の一部
nullの扱いはシステムによりけりなのでシステムごとに調べること
なるほど、ありがとうございます
ここの方々はエンジニアですか?
自分はマーケティングの担当で自分で使えた方が便利ということで覚えようとしてます
セレクト文しか使わないのですが、色々な条件で、いつ誰が何を買ったとか抽出したく、サブクエリがうまく使えるようになるのが目標です
またアドバイスいただいてもいいですか
SQLの書き方なら、ここで聞いて良いですよ
そういう質問を、みんな待ってますから
SQL書かなくてもデータ分析できるツールあるからそれ使う方が良いんじゃない
ここにかぎらず不思議なのは5chのスレッドは探せるのに、SQLを解説しているWebサイトや、そのへんに転がっている書籍は視界に入らない人間がいるところ。
>>944 > SQLを解説しているWebサイトや、そのへんに転がっている書籍
そう言うのは能動的に探さないと駄目だから
エスパー機能付きのWebサイトとか書籍があればいいんだけどw
BIツールは入ってますがSQL使うこともあります
いつもはデータ抽出を社内SEの人に頼んでますが、簡単なものは自分で出せた方が仕事のスピードが上がるので覚えようと思っています
本やサイトも使っていますが、どうしても途中で分からないところが出てしまって、よければ御指南ください
練習問題をやっていて、以下のような内部結合を書いたのですがデータが返ってきません
PublisherテーブルにIDとNameがあって、IDがBookテーブルのPublisher_IDとつながっています
山田さんが書いた本についてすべての情報を抜き出したいです
SELECT *
FROM Book
inner join Publisher on Book.Publisher_ID=Publisher.ID
WHERE Publisher.Name='山田';
Publisher.Name って名字しか入ってないの?
>>946 Publisherには'山田'ってデータがないんじゃない?
よけいなことだろうけど、
Publisherって言うと出版社のことだと思う
著者ならAuthorにしたいところ
>>946 連結する場合select でアスタリスク使わない方がいい
連結側に同じフィールド名があるとエラーになるのでasで別名にしないといけない
>>946 SQLは問題ないみたいだから
Publisher.Nameに山田があるか確認するために
まずそのSQLのWHERE句をはずしてどういうデータがあるかを見たほうがよいのでは?
>>946 テーブル定義 (CREATE TABLE文) を見たいな
946です、みなさんありがとうございます
SQLはあってるんですね、よかったです
模範解答は
>>949さんが書いてくださってるように、asでテーブルすべてに別名をつけています
テーブル名を指定するときは、別の名前を付けた方がいいんですね
これからやってみます
またよろしくお願いします
microsoft sql server 2008
テーブル同士を結合するとき、char型の項目とvarchar型の項目とで
結合するときはconvertで型を合わせる必要があるでしょうか?
この項目はマスタテーブルの主キーなのですが、
伝票テーブルに外部キーとしても存在します。
伝票側の項目には必ずしも値が入るとは限らず、空白も存在します。
そのためマスタテーブル側をchar型に、伝票テーブル側をvarchar型にし、
それぞれで外部結合します。
そもそもなぜ型を合わせないのか
値がないなら、空白じゃなくてNULL入れろよ
まあ世の中にはNULLと空白を区別できない欠陥DBもあるけどなw
NULLと空白を区別できない欠陥DBなんかあるかな
長さゼロの文字列とNULLを区別できない欠陥DBなら知ってるけど
NULL不許可にしてるんでしょ
NULL撲滅委員会とかあるし
>>958 長さがゼロの文字列だったら、それはNULL値。これが本来のデータベースの定義。
長さゼロの文字列とNULLを区別しないのは
Oracle Databaseの有名な欠陥であり
それはOracle社自身も認識していてマニュアルにも書いてある
https://docs.oracle.com/cd/E96517_01/sqlrf/Nulls.html > Oracle Databaseは現在、長さが0(ゼロ)の文字値を
> NULLとして処理します。ただし、将来のリリースでは
> この処理が変更される場合があるため、空の文字列を
> nullと同じように処理しないことをお薦めします。
>>963 > ただし、将来のリリースでは
> この処理が変更される場合があるため
まあ、どう見ても無理だろw
かなり昔からそういってるからなぁ
そのうちVarchar3型つくるんじゃって話もある
欠陥であることは分かってるんだけれども
直しちゃうと既存のアプリケーションに甚大な影響が出るんで
直すに直せないんですよー
という気持ちがありありと分かるマニュアルだねえ
つーか null と空文字列を同一視するというのは極めて常識的な挙動であって
標準SQLの方が時代遅れと言えるのでは
ここはもう標準を変更してnullも空文字列も、ついでに空白だけのカラムもすべて同一視するようにすべき
null は is で比較するとかいう無意味な制限も廃止して全て = の比較に統一すべき
とするのはどう?
こんなところでそんなアホ丸出しの提案して
何かが変わると本気で思っているのか
空文字列とNULLが混在して混乱を招いているシステムは多い。
空の文字列とNullを同一視するのが常識とかないと思うんだが
データベースしか触らんやつはそういう常識なの?
ホントOracleはシステム開発者にとってマイナスなことしかしないよね
特定のDBしか触らない奴だとそれが常識だと考えるかも
その場合は、そいつには触らない方が良いと思う
ぬるい質問ばかりで暴れたくなった
相手はどのDBでもよかった
>>973 例えばC言語で空文字列とnullが同じと言ったらそりゃ変なんだが
抽象度が高いSQLで区別する意味は全くないと思うんだよね
むしろ区別することが当然と考えること自体が何か洗脳されてるという気がするわけ
まあ釣りではあるのだが
全項目NOT NULLにして集計処理の手間を減らすことはあるな
CSV/TSVを外部テーブルで使うとNULLが使えないことがほとんどよね
外部結合して片側NULLで引っ掛けるのはよく使うから
NULLの概念自体はあってほしいけど
nullと空文字列が区別できなくて良いってやつは、nullが値ではないって概念が理解出来ないんだろうな
>>980 その概念に実用性はあるのか?
それで何か便利なことがあった?
むしろ不便であって弊害しかないオナニー概念だと思うのだが
いや
>>970 の言う通り、ここで言っても仕方ないことは分かってるけどね
たまには王様は裸だと言って見たくなる
あえて釣られてやるけど、例えば未入力と空文字の入力を区別したいとか普通にあるだろ
>>983 あるか? そんなの
空文字の入力は未入力でいいんでわ
>>985 空文字の入力を未設定と区別する必要があるのかね
それを区別しようとすることでシステムは複雑になり間違いも多くなる
セルの値としてはどうかわからないが,テーブル結合後の名テ―ブルの行の属性値としては有りだと思う
>>987 そうかねぇ
むしろ使い分けする運用こそ危うい気がするのだが
整数値カラムでouter joinしたとき
存在しない行の整数値カラムの値は
何になるのでしょうか?
どうしてオラクルは、ああいう苦しいコメント出しているの?
「sqlなら曖昧でよくね?」っていうけど
連携するプログラム側が困るんよね。それじゃぁ
運用担当がデータ見るだけに使うなら
テキトーでも許されるのかもしれんけど
NULLとかnilとかNoneについては、「値ではない」という説明の仕方より、「あくまでも値だけど、約束事として、(概念的に)値なしと呼びうる状況(の一部)に対応する値として利用できる特殊な値」という説明の仕方の方が誤解を招きにくいんじゃないか。
たとえば、空の配列の長さが0、Noneが1個入った配列の長さが1という言語で「Noneは値ではない」という説明はしづらい気がする。
結局、(概念的に)値なしと呼びうる状況のうち、どれにNULL/nil/Noneを対応させて、どれに空文字列・空配列を対応させるか(undefinedがある言語についてはそれも)というマッピングを整理しておくべきという話かなと思うが。
-curl
lud20250126073411caこのスレへの固定リンク: http://5chb.net/r/db/1515071542/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「SQL質疑応答スレ 18問目 ->画像>2枚 」を見た人も見ています:
・SQL質疑応答スレ 19問目
・四柱推命の質疑応答スレ
・●政治に関する質疑応答スレ●
・◆◇タロット初級〜中級質疑応答スレッド・2◇◆
・任天堂決算 質疑応答総合スレ
・■タロット質疑応答&雑談スレッド■part18
・お菓子を食べながら質疑応答の女性議員が炎上
・山口真帆と荻野由佳は記者会見と質疑応答をすべきだろ
・[技術]公務員受験者へのアドバイス[質疑応答]
・【オーストラリア】豪訪問中のスー・チー氏、「体調不良」で講演と質疑応答をキャンセル
・【野球】巨人・由伸監督と夕刊フジ記者が激論 質疑応答で「どうやったら勝てる?」と逆襲、囲み取材で殺伐空気に
・「#MeToo」運動への影響は? 強制わいせつ容疑で書類送検された立民・ #初鹿氏 の質疑応答全文
・【ハリス駐韓米国大使】「13カ月ぶり2回目の事件…猫たちは無事」米国務省も現地の質疑応答で「2回目の不法侵入強く懸念」[10/21]
・【サッカー】<Jリーグ村井満チェアマン>【会見&質疑応答】シーズン移行案やビデオ判定導入案に言及!
・任天堂株主総会質疑応答レポート
・BassのQ.A.マガジン(質疑応答編) ルート4
・BassのQ.A.マガジン(質疑応答編) ルート36
・元ソニー従業員のVitaについてのAMAの質疑応答の全訳
・【頭でっかち】ミックスボイス質疑応答【隔離】
・月曜日、鈴木宗男が国会で質疑応答へ 親露派の演説を見逃すな 維新の会
・【百条委員会】石原元都知事、体調不良を理由に質疑応答時間を減らすように要請
・スプラトゥーンTシャツを着た任天堂株主さん、とんでもない質疑応答をしてしまう
・【7月4日】ゼレンスキー大統領、東洋大学(Toyo University)で講演会へ 学生との質疑応答も
・【メディア】眞子さまと小室さんの結婚会見 質疑応答をとりやめ 宮内庁発表★6 [冬月記者★]
・【メディア】眞子さまと小室さんの結婚会見 質疑応答をとりやめ 宮内庁発表★5 [冬月記者★]
・スクエニ松田社長、株主総会質疑応答でDQ10の話題→「いつまで続くか分からないけど継続して遊んでね」
・田中さん会見中のミヤネ屋さん「この人は嘘をつくと思って見ないと駄目!言い訳いいから質疑応答始めろよ」統一教会激怒
・【テレビ】松本人志 「小室圭さん個人で質疑応答ある会見を」と見解 「奥さまを守ることになる」 [爆笑ゴリラ★]
・眞子と小室の結婚会見、口頭での質疑応答をとりやめ 眞子が事前に提出された質問に強い衝撃を受けたため [フラワー★]
・【話題】小室圭さん単独&無制限の質疑応答なら空気を一気に変えられる可能性あった 竹田恒泰氏が指摘 [数の子★]
・【携帯値下げ】武田総務相の記者会見 質疑応答「いや。ハードルが自由な選択を阻害しているわけですよね。」 [雷★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★17 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★19 [愛の戦士★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★18 [木枯し★]
・【速報】大谷翔平 水原氏解雇で取材対応予定だったが「声明のみ」に 報道陣の質疑応答なし、撮影も禁止 球団が発表 [冬月記者★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に衝撃を受け不安を感じられているため★4 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に衝撃を受け不安を感じられているため★9 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★15 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★10 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★21 [木枯し★]
・【宮内庁】眞子さま、小室圭氏との結婚会見、口頭での質疑応答取りやめ 事前提出された質問に強い衝撃を受け不安を感じてるため★11 [木枯し★]
・MySQL SQL質問応答スレ
・SQL Server SQL質問応答スレ
・PostgeSQL SQL質問応答スレ
・無線LANの質問スレ 38問目
・ヤフオク初心者質問スレッド 818問目
・ヤフオク初心者質問スレッド 808問目
・婚活に関する異性への質問 18問目
・婚活に関する異性への質問 48問目
・teratailもりあがっtail? 28問目
・【3DS】妖怪ウォッチバスターズ質問スレ 3問目
・ヤフオク初心者質問スレッド 807問目
・ヤフオク初心者質問スレッド 814問目
・ヤフオク初心者質問スレッド 820問目
・ヤフオク初心者質問スレッド 813問目
・【グノシーQ YQ他】ライブクイズ 18問目【招待コードやりとり禁止】
・婚活に関する同性への質問 1問目
・teratailもりあがっtail? 16問目
・teratailもりあがっtail? 13問目
・英語とクイズのココロセカイ 10問目
・NHK総合を常に実況し続けるスレ 162939 低酸素応答
・【グノシーQ YQ他】ライブクイズ個別参加者用スレ 1問目【招待コードやりとり禁止】
・応答せよ総合スレ
・林先生の初耳学6問目
・面白い問題教えて〜な 24問目
07:02:28 up 17 days, 8:06, 1 user, load average: 8.02, 9.51, 9.28
in 3.1409089565277 sec
@3.1409089565277@0b7 on 013021
|