◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

SQL質疑応答スレ 18問目 ->画像>2枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/db/1515071542/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1NAME IS NULL
2018/01/04(木) 22:12:22.14ID:???
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。

SQLという言語はISOによって標準化されていますが
この標準を100%実装したDBMSは存在せず、
また、DBMSによっては標準でない独自の構文が
追加されていることもあります。

質問するときはDBMS名を必ず付記してください。

【質問テンプレ】
・DBMS名とバージョン
・テーブルデータ
・欲しい結果
・説明

前スレ:
SQL質疑応答スレ 17問目
http://2chb.net/r/db/1468157341/
2NAME IS NULL
2018/01/04(木) 22:13:25.04ID:???
過去スレ
17問目:http://2chb.net/r/db/1468157341/
16問目:http://echo.2ch.net/test/read.cgi/db/1447160858/
15問目:http://peace.2ch.net/test/read.cgi/db/1402919549/
14問目:http://peace.2ch.net/test/read.cgi/db/1371476534/
13問目:http://toro.2ch.net/test/read.cgi/db/1343899481/
12問目:http://toro.2ch.net/test/read.cgi/db/1316769778/
11問目:http://hibari.2ch.net/test/read.cgi/db/1299305530/
10問目:http://hibari.2ch.net/test/read.cgi/db/1274791771/
9問目:http://pc11.2ch.net/test/read.cgi/db/1252492296/
8問目:http://pc11.2ch.net/test/read.cgi/db/1236253554/
7問目:http://pc11.2ch.net/test/read.cgi/db/1223525474/
6問目:http://pc11.2ch.net/test/read.cgi/db/1210940477/
5問目:http://pc11.2ch.net/test/read.cgi/db/1193486961/
4問目:http://pc11.2ch.net/test/read.cgi/db/1176553195/
3問目:http://pc11.2ch.net/test/read.cgi/db/1160458216/
2問目:http://pc8.2ch.net/test/read.cgi/db/1141622643/
帰ってきた:http://pc8.2ch.net/test/read.cgi/db/1124178925/
Part 2:http://pc8.2ch.net/test/read.cgi/db/1103113155/
初代:http://pc8.2ch.net/test/read.cgi/db/1056973582/
3NAME IS NULL
2018/01/04(木) 22:14:28.52ID:???
よくある質問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
;
4NAME IS NULL
2018/01/04(木) 22:15:39.02ID:???
よくある質問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
;
5NAME IS NULL
2018/01/04(木) 22:16:40.08ID:???
よくある質問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によって文法がかなり違うので注意
6NAME IS NULL
2018/01/04(木) 22:17:39.88ID:???
よくある質問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
7NAME IS NULL
2018/01/04(木) 22:48:11.80ID:???
ダメだ
ブロック条件が厳しすぎる
誰か残りのFAQを貼ってくれ
8NAME IS NULL
2018/01/05(金) 02:46:10.18ID:???
よくある質問5

(問)
年月(YYYYMM)を指定し、その年月に対応する年月日を取得したい

 例:201006を指定したら、以下の結果を得たい

   20100601
   20100602
    ・
    ・
    ・
   20100630

(答)
SQLでは存在しないデータを生成することはできません。
この問いの場合は素直にカレンダーテーブルを用意しましょう。
9NAME IS NULL
2018/01/05(金) 02:47:19.49ID:???
よくある質問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ならこれを適当に改変すれば動きますが
 どのみちお奨めしません。
10NAME IS NULL
2018/01/05(金) 02:49:13.40ID:???
よくある質問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ならこれを適当に改変すれば動きますが
 どのみちお奨めしません。
11NAME IS NULL
2018/01/05(金) 02:50:38.56ID:???
いちおつ
generate_series()関数がダメみたいだな
12NAME IS NULL
2018/01/05(金) 21:56:46.58ID:???
前スレ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
;
13NAME IS NULL
2018/01/06(土) 14:50:55.67ID:???
なるほど
全然速そうだな
14NAME IS NULL
2018/01/06(土) 15:46:57.99ID:Os9t48kn
なんでそんな変なのばっかりなの?
ソートが頭から離れないのか。
15NAME IS NULL
2018/01/07(日) 01:11:19.54ID:???
>>13
パーティション切ってrow_numberで先頭行だから
オプティマイザの出来次第だけどパフォーマンスに大差はないと思うけど
相関サブクエリとjoinなら同じ実行計画はいたりするし

>>14
はいはい
どうせ正解は書かないんじゃなくて書けないんでしょ
16NAME IS NULL
2018/01/07(日) 10:01:46.51ID:yu9dE7vj
なんというレベルの低さ
17NAME IS NULL
2018/01/07(日) 12:26:12.96ID:???
>全然速そうだな

変な日本語を何とかしろよ
18NAME IS NULL
2018/01/07(日) 14:04:49.83ID:yu9dE7vj
>>15
>>3 を見たのか?
19NAME IS NULL
2018/01/25(木) 18:41:52.80ID:heRfYWvO
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を盛り込もうとすると
サブクエリだらけになってしまう。
20NAME IS NULL
2018/01/25(木) 19:27:52.27ID:???
これでその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
;
2119
2018/01/26(金) 09:39:10.20ID:IngnXOhQ
>>20
ありがとうございます!!
22NAME IS NULL
2018/01/26(金) 12:43:24.38ID:pxozcjcA
自作自演?
23NAME IS NULL
2018/01/26(金) 17:32:37.75ID:???
どうしてそう思ったの?
24NAME IS NULL
2018/01/26(金) 20:18:17.38ID:???
感謝ぐらい好きにさせてやれよ歪んでるなあ
25NAME IS NULL
2018/01/28(日) 15:06:04.05ID:Qiu5BIxt
明らかに情報不足なのに情報を補完して回答しているからな。
26NAME IS NULL
2018/01/28(日) 17:13:34.73ID:27cZ5HqG
それはキミ、情報不足やない、キミの知識不足やろ。
27NAME IS NULL
2018/01/28(日) 18:21:25.57ID:qkfYCnFE
>>26
メインテーブルとサブテーブルの結合条件がクロスジョインとは普通、思わない。
28NAME IS NULL
2018/01/28(日) 18:34:16.20ID:???
>>27
> メインテーブルとサブテーブルの結合条件がクロスジョイン
え?
29NAME IS NULL
2018/01/28(日) 18:55:59.94ID:???
>>19のSQLがクロスジョインだと思えないのは知識不足としか言いようがない
30NAME IS NULL
2018/01/28(日) 19:07:37.13ID:???
>>20は何も補完」してないだろ。逆に>>19の意味不明な部分はそのまま字面通り解釈して回答してる。
31NAME IS NULL
2018/01/28(日) 19:16:59.64ID:???
>>29
main_table と「sub_table」の cross join だと思ってるなら知識不足以前の話かとww
32NAME IS NULL
2018/01/30(火) 17:05:33.92ID:???
やりすぎ防犯パトロール、特定人物を尾行監視 2009年3月19日19時7分配信 ツカサネット新聞
http://headlines.yahoo.co.jp/hl?a=20090319-00000026-tsuka-soci

この記事で問題になった通称やりすぎ防パトは、創価学会と警察署が引き起こしていたようです

掻い摘んで説明すると

・創価学会は、町内会や老人会、PTA、商店会等の住民組織に関し、学会員が役員になるよう積極的に働きかける運動を
 90年代末から開始し、結果、多くの住民組織で役員が学会員という状況が生まれた

・防犯パトロールの担い手は地域の住民と住民組織で、防犯活動に関する会議や協議会には、住民組織の代表に役員が出席する為
 防犯活動や防パトに、創価学会が間接的に影響力を行使可能となった

・防パトは住民が行う為、住民が不審者や要注意人物にでっち上げられるトラブルが起きていたが
 創価学会はその緩さに目をつけ、住民組織を握っている状況を利用し、嫌がらせ対象者を不審者や要注意人物にでっち上げ
 防パトに尾行や監視、付き纏いをさせるようになった

・防パトは地元警察署との緊密な連携により行われる為、創価学会は警察署幹部を懐柔して取り込んでしまい
 不審者にでっち上げた住民への嫌がらせに署幹部を経由して警察署を加担させるようになった

・主に当該警察署勤務と考えられる創価学会員警察官を動かし、恐らく非番の日に、職権自体ないにもかかわらず
 私服警官を偽装させて管轄内を歩いて回らせ、防犯協力をお願いしますと住民に協力を求めて回り
 防犯とは名ばかりの、単なる嫌がらせを住民らに行わせた(防犯協力と称し依頼して回っていた警察官らの正体は恐らく所轄勤務の学会員警察官)
 ※これに加えて防犯要員が同様のお願いをして回る

・こうして防犯パトロールを悪用し、住民を欺いて嫌がらせをさせつつ、創価学会自体も会員らを動員し、組織的な嫌がらせを連動して行った

つまり警察署に勤務する学会員警察官、警察署幹部、創価学会が通称やりすぎ防犯パトロールの黒幕

詳細は下記スレをご覧下さい
やりすぎ防犯パトロールは創価学会と警察署の仕業だった
http://2chb.net/r/bouhan/1516500769/
33NAME IS NULL
2018/02/04(日) 15:27:38.88ID:gIv0OydZ
質問です
以下のような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
34NAME IS NULL
2018/02/04(日) 15:29:21.67ID:gIv0OydZ
訂正

「結果」
3 | ccc | 6    | c_key1
4 | ddd | NULL | NULL
35NAME IS NULL
2018/02/04(日) 17:18:13.30ID:???
>>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
36NAME IS NULL
2018/02/04(日) 17:38:30.70ID:gIv0OydZ
>>35
ありがとうございます
使用しているのはMariaDB 10.1でしたが(書き忘れ失礼しました)、頂いた解答をヒントに試してみます
37NAME IS NULL
2018/02/04(日) 18:26:18.34ID:???
>>36
う〜ん、MariaDB使ったことないけど
https://mariadb.com/kb/en/library/row_number/
を見るとrow_number()は10.2.0以降でないとダメみたい
10.2.0には上げられないの?
38NAME IS NULL
2018/02/04(日) 18:33:52.86ID:gIv0OydZ
>>37
こちらもちょうどそこに行き着いてました
バージョンを上げることは可能なので最新版にアップデートして試してみようと思います
わざわざ調べて頂き感謝します
39NAME IS NULL
2018/02/14(水) 13:22:57.02ID:???
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
40NAME IS NULL
2018/02/15(木) 23:04:18.91ID:???
SQLがなかなか覚えられません
SELECT が先頭に来るのは覚えていますが、
次がFROMか、WHEREか迷ったりします
なにか覚えやすい方法ってありますか?
41NAME IS NULL
2018/02/15(木) 23:30:33.91ID:???
暗記
42NAME IS NULL
2018/02/16(金) 00:34:33.15ID:???
>>40
順番はきっちり決まってるから覚えれば迷うことはない
それすら覚えられないならマやめた方がいい
43NAME IS NULL
2018/02/16(金) 07:59:00.96ID:???
>>41-42
ありがとうございます
覚えます
44NAME IS NULL
2018/02/22(木) 17:16:09.65ID:???
集計で、nullがあれば0で、nullが1つもない場合は最大値や最小値を取ってくるような書き方ってないでしょうか?
45NAME IS NULL
2018/02/22(木) 18:10:39.74ID:???
>>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

設計見なおしたほうがいいパターンだと思う
46NAME IS NULL
2018/02/22(木) 18:30:09.05ID:???
少し違うやり方だけどこっちのほうがパフォーマンスはいいかも。

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;
47NAME IS NULL
2018/02/23(金) 10:11:31.58ID:???
>>45 >>46
ありがとうございます!
後者の方が問い合わせが少ない感じで良さそうですね。
48NAME IS NULL
2018/02/23(金) 21:55:14.87ID:0la0B0YA
uelect文を2つ書いてunion allの方がよっぽど可読性が高い。
49NAME IS NULL
2018/02/23(金) 22:08:01.48ID:KWaEL2bi
union言いたすぎてuelectになっちゃう奴カワユスw
50NAME IS NULL
2018/02/23(金) 23:22:19.25ID:???
>>48
その可読性が高いやつ提示しなよ
51NAME IS NULL
2018/02/24(土) 09:47:28.16ID:???
uelectあるじゃん
52NAME IS NULL
2018/02/24(土) 10:02:55.41ID:???
ウェレクト
53NAME IS NULL
2018/02/24(土) 19:12:40.41ID:Au0dOZ0B
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having 列名 is null
union all
セレクト max(カラム名) as カラム別名 from テーブル名 group by グループ列名 having 列名 is not null
54NAME IS NULL
2018/02/24(土) 20:27:08.92ID:pUuArQ+S
uelectになるのにビビってセレクトになっちゃう奴カワユスw
55NAME IS NULL
2018/02/24(土) 20:41:54.02ID:???
いつもSQL書かずに意味不明なイチャモンだけつけてた人が
珍しくSQL書いたと思ったらやっぱり意味不明なSQLじゃんか
havingの意味分かってないんだろうな
56NAME IS NULL
2018/02/24(土) 20:54:00.99ID:pUuArQ+S
>>55
おい勘違いするな
いつも意味不明なイチャモンつけてるアゲは俺だ
アゲだからといってバカと一緒にされては困るなw
57NAME IS NULL
2018/02/25(日) 00:08:49.03ID:???
union all期待してたのに。。。こんな結果なの??

>>45のやつはCASE WHEN EXISTSにしたほうがよかったね
58NAME IS NULL
2018/02/25(日) 03:10:53.80ID:???
SEなんだが殆ど要件定義とか折衝が主担当だから
SQLの知識があんまりなくていつも効率悪い調査の仕方だったりベンダーさんに投げてしまったりになってしまうんで質問させてください
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付

Bマスタ
名前 社員番号 適用開始日 適用終了日

【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)

を抽出したい場合はどうすればよいでしょうか?
実業務ではベンダーさんからの報告で解決したのですが次からは自分でも頑張ってみたくて勉強したのですが実際に書こうと思うと全く上手くいきませんOTL
59NAME IS NULL
2018/02/25(日) 03:25:04.65ID:???
>>58
とりあえず自分の思うように書いてみ
60NAME IS NULL
2018/02/25(日) 03:51:57.01ID:???
>>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の方の文の書き方の考え方のコツなんかも教えていただけるとうれしいです
61NAME IS NULL
2018/02/25(日) 15:25:45.40ID:EdN+hOz0
>>55
having に集計関数と書かずにカラム名と書いたら、見事にそこだけ問題視するんだな。

セレクトと書いているのもSQLインジェクション対策に引っかかるため。
62NAME IS NULL
2018/02/25(日) 15:27:53.61ID:EdN+hOz0
セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having グループ列名 is null
union all
セレクト max(グループ名) as カラム別名 from テーブル名 group by グループ列名 having max(グループ名) is not null
63NAME IS NULL
2018/02/25(日) 15:29:20.92ID:EdN+hOz0
曖昧質問に対して勝手な想像で要件を決めつけて答えるのはよくない。

そもそもSQLをずばり教えてくれというのが間違い。
64NAME IS NULL
2018/02/25(日) 15:31:10.48ID:EdN+hOz0
>>57
select句にselect文を書くのを推奨するな。
65NAME IS NULL
2018/02/25(日) 15:37:06.31ID:EdN+hOz0
>>60
あなたが書いているとおりに書けばよい。

なぜ一つのSQLでいきなりやろうとするのか?
66NAME IS NULL
2018/02/25(日) 15:39:24.08ID:EdN+hOz0
>>60
3パターンの整理をせよ。
67NAME IS NULL
2018/02/25(日) 15:44:37.91ID:EdN+hOz0
>>60
それあなたのいう1つ目もできていない。
少なくともそのSQLにこだわりがあるのなら、内部結合ではなく外部結合しなければ、1つ目も達成できていない。
68NAME IS NULL
2018/02/25(日) 15:45:55.07ID:???
>>62
ここで動かしてみてくれよ
そういうクエリでも動くDBMSがあるんならぜひ知りたい
http://sqlfiddle.com/#!17/05796a
69NAME IS NULL
2018/02/25(日) 15:46:29.20ID:???
>>64
なんで?
70NAME IS NULL
2018/02/25(日) 17:49:37.39ID:fHMtmeQ2
順当にバカが発狂しとるなw
71NAME IS NULL
2018/02/25(日) 18:35:17.10ID:???
>>60
1. SQLの研修を受ける
2. 最小限のテストデータを作成して試行錯誤を繰り返す
3. 少し高度なクエリをWebや書籍で学ぶ

まず1と2をやること(>>58のやつはSQLの研修を受講すれば解決できるレベル)
基本的なクエリは問題なく出来るようになってから3に進む
3はミックのブログやセルコの本がおすすめ
72NAME IS NULL
2018/02/25(日) 18:36:47.80ID:???
あと要件定義が主な担当なら
SQLの書き方よりもDB設計を学んだほうが役立つ度合いが大きいよ
73NAME IS NULL
2018/02/25(日) 21:06:12.14ID:???
>>58
http://sqlfiddle.com/#!9/81ab8/1

2つめはfilter句が使えるDBもあるけど普通はCASE式かな
74NAME IS NULL
2018/02/26(月) 00:51:55.29ID:???
>>71
SQLの受講は予定してるけど・・・
ここってそういうの教えてくれる板じゃないの?
勉強法なんて聞いてないんだが
75NAME IS NULL
2018/02/26(月) 02:37:26.99ID:???
こいつはクズだね〜w
営業をお払い箱になって情シスでもお荷物だな
76NAME IS NULL
2018/02/26(月) 02:57:29.29ID:???
簡単に解決できるレベルとかいって勉強法講釈たれる奴もどうかと思うがな
77NAME IS NULL
2018/02/26(月) 14:57:52.44ID:???
>ベンダーさんに投げてしまったりになってしまうんで
とか言ってるやつがこのスレに投げるだけになるんだぜ
鬱陶しいだろ
78NAME IS NULL
2018/02/26(月) 16:34:56.99ID:???
問題を解くコツを教えてもらおうとする前に基礎を学べってことだろ
内部結合や外部結合は算数で言えば四則演算レベルの基礎なんだからさ
79NAME IS NULL
2018/02/26(月) 19:15:23.41ID:k450wkRK
教えたがりのくせに質問には答えたくないてどないやねんw
そのややこしい承認欲求どうにかしろやw
80NAME IS NULL
2018/02/26(月) 20:28:10.94ID:???
>>60だけど
やっぱりSEって気持ち悪いな
ベンダー嬲り倒すことにしたわ
てか早く答えろやwwwPGしかできないアホなんだからこれくらいすぐ答えだせwwwwww
81NAME IS NULL
2018/02/26(月) 20:56:37.17ID:???
答え出てるだろww
82NAME IS NULL
2018/02/26(月) 20:59:21.87ID:???
>>81
どこが出てるんだよwwwwww
やっぱSEって頭おかしいのしかいないのなwwwwww
83NAME IS NULL
2018/02/26(月) 21:13:20.39ID:???
おまえマジかww
回答してくれた気持ち悪いエス・イーさんの親切心台無しだなww
84NAME IS NULL
2018/02/27(火) 20:04:14.37ID:???
困ったら黙っちゃうSEさん達現実でも2ちゃんでも同じなんだね・・・・・
85NAME IS NULL
2018/02/28(水) 08:09:46.03ID:???
>>44
これでもいける
select c1,
case when count(*) = count(c2)
then max(c2)
else 0
end
from t1
group by c1
order by c1
86NAME IS NULL
2018/02/28(水) 16:49:50.76ID:???
>>85
そんな答え出てるものより60でも答えたれや
87NAME IS NULL
2018/02/28(水) 18:05:33.63ID:???
60も答えでとるやん
88NAME IS NULL
2018/02/28(水) 19:44:20.59ID:F+U9w50n
>>87
それではその答えを31文字以内で示しなさい。
89NAME IS NULL
2018/02/28(水) 19:49:58.19ID:???
>>87
どこにでてんだよwwwwww
あほかよSEさんwwwwww
90NAME IS NULL
2018/02/28(水) 22:18:01.64ID:???
二人もおるんかww
インターネッツの使い方も知らないんやなwwwププッ
91NAME IS NULL
2018/03/01(木) 07:11:43.52ID:???
箇条書きの条件それぞれのsqlつくればいいのか?
それなら簡単じゃね
92NAME IS NULL
2018/03/01(木) 07:52:43.33ID:RvibXfFY
簡単じゃねえ!
93NAME IS NULL
2018/03/01(木) 11:39:27.35ID:hRou4xtV
これは「SQLの研修行け」の人が正解だったな
94NAME IS NULL
2018/03/01(木) 12:18:12.52ID:/b0teX7H
>>93
バカはお口にチャックで
95NAME IS NULL
2018/03/01(木) 15:53:17.90ID:???
>>92
どの辺が簡単じゃないの?
96NAME IS NULL
2018/03/01(木) 18:35:19.24ID:???
こんな簡単な SQLも教えられないとかゴミしかいないんだなここ
そりゃ営業上がりに馬鹿にされるわけだわ
97NAME IS NULL
2018/03/01(木) 18:42:45.36ID:???
>>96
簡単なSQLだからこそ
9860
2018/03/01(木) 18:53:30.95ID:???
ほらこの答え出るまで
俺居座るからなはやくだせや
他のやつ質問すんなよこれが最優先だから
99NAME IS NULL
2018/03/01(木) 18:59:20.56ID:???
お前が質問してからのレスを全部読み返せよ、ゴミ
100NAME IS NULL
2018/03/01(木) 19:05:25.93ID:???
簡単なSQLすら理解できない人に教えるとか無理ゲーやろ
101NAME IS NULL
2018/03/01(木) 19:22:33.99ID:RvibXfFY
>>100
じゃあ誰に教えんだよw
102NAME IS NULL
2018/03/01(木) 19:58:10.36ID:???
>>100
お前最高にアホだな
103NAME IS NULL
2018/03/01(木) 20:18:58.38ID:???
>>101
>>102
お前ら池沼にSQL教えられんのか?
104NAME IS NULL
2018/03/01(木) 20:26:35.43ID:???
>>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.名前)
105NAME IS NULL
2018/03/01(木) 20:45:45.55ID:???
かけ算も割り算も分かってないやつが
四角形と三角形の面積の求め方を教えろと質問してるのと同じ状況なんだよな

かけ算も割り算も分かってないってことが分かってないレベルなら
かけ算がよくわからないので教えて下さいって言えるところまでは最低でも自力で勉強すべき
106NAME IS NULL
2018/03/01(木) 20:51:29.51ID:???
例えが全然的を射てないんだよなあ
かけ算と SQL同列に語って池沼に教えるのと同じってw
お前の方がどうかと思うぞ 部下とか後輩から嫌われてない?w
107NAME IS NULL
2018/03/01(木) 21:01:35.54ID:???
>>106
ガイジキタ━━━━(゚∀゚)━━━━!!
108NAME IS NULL
2018/03/01(木) 21:09:42.85ID:RvibXfFY
悩める教えたがりクン>>105
愛くるしいよぅ〜wwww
109NAME IS NULL
2018/03/01(木) 21:09:49.44ID:???
うわっ今どきキターとか使わないで
恥ずかしいから辞めた方がいいよ
11060
2018/03/01(木) 21:11:32.00ID:???
>>105
このスレ否定しちゃったよwwwwww
アホかwwwwwwお前は2度とここ見なくていいからwwwwww現実で偉ぶってろやwwwwww
みーんなおまえのこと嫌いだろうけどwwwwww
111NAME IS NULL
2018/03/01(木) 21:31:25.75ID:???
>>109
キタ━━━━(゚∀゚)━━━━!!
112NAME IS NULL
2018/03/01(木) 21:31:45.96ID:???
>>109
キタ━━━━(゚∀゚)━━━━!!
113NAME IS NULL
2018/03/01(木) 22:04:21.50ID:???
内部結合/外部結合はかけ算/割り算レベル
それが分からないから難しいと思っちゃうんだろね
114NAME IS NULL
2018/03/01(木) 22:08:38.92ID:???
なんで教えてくれたやつをまたスルーしてんの?
115NAME IS NULL
2018/03/01(木) 22:50:37.36ID:RvibXfFY
>>114
どんだけお礼欲しがりなんだよw
はいはいありがとうございましたwwww
116NAME IS NULL
2018/03/01(木) 22:51:54.37ID:RvibXfFY
ちょっとまて誰だ教えてくれたやつって?
何嘘ついてんだよ騙されたじゃねえか
117NAME IS NULL
2018/03/02(金) 00:15:42.26ID:???
>>115
そういうことじゃないだろw
118NAME IS NULL
2018/03/02(金) 00:19:18.61ID:???
リアルでよほど抑圧されてんだな
ガンバレよ
11960
2018/03/02(金) 20:44:32.05ID:???
>>104
答えになってないが?
あほ?
12060
2018/03/02(金) 20:45:48.81ID:???
>>118
PGSEさんは作業するだけだもんねー
大変だなあwww応援してるよ!頑張ってよ!
121NAME IS NULL
2018/03/02(金) 21:51:10.04ID:oDhTFYq0
>>118
お前が頑張れよw
122NAME IS NULL
2018/03/02(金) 23:06:21.55ID:ThHddFfe
SQL初心者スレ状態
12360
2018/03/02(金) 23:08:56.75ID:???
>>122
SQL初心者スレみたいな質問にもまともに答えられる奴が1人もいないってどうなん?
124NAME IS NULL
2018/03/02(金) 23:14:33.21ID:ThHddFfe
>>123
データベース板は過疎板だから。いるのはインフラ屋ばかりでSQLはよくわからない。
125NAME IS NULL
2018/03/02(金) 23:27:14.54ID:???
回答出てるのにレスが池沼だからスルーしてるだけだろ
12660 ◆YDp73vGOso3d
2018/03/02(金) 23:36:47.57ID:???
なんか俺のふりして頭おかしい人っぽく印象操作してるゴミSEがいるみたいだなトリップ付けとくわ
127NAME IS NULL
2018/03/02(金) 23:38:29.13ID:???
>>126
で、回答はわかったの?
12860 ◆YDp73vGOso3d
2018/03/02(金) 23:40:48.89ID:???
>>127
1つ目の質問はこれでできると思うが
2つ目の質問が答え出てないぞ
129NAME IS NULL
2018/03/03(土) 08:36:46.58ID:???
104答えたの俺だけど60バカみたいで何も考える気が無いみたいなんで
2つ目答えようとおもったけどやめるわ
13060 ◆YDp73vGOso3d
2018/03/03(土) 11:26:10.35ID:???
正直にできませんでしたってかけや
131NAME IS NULL
2018/03/03(土) 12:26:43.72ID:lRXd5Nnq
別にせんでもいいのに5ちゃんでまで出来ない言い訳をしてしまうバカ正直なバカかわゆすw
132129
2018/03/03(土) 14:46:46.78ID:???
教えてくださいっていったらおしえてあげる
13360 ◆YDp73vGOso3d
2018/03/03(土) 16:01:20.17ID:???
お前みたいななんの特徴も個性もないゴミSEが名前つけなくていいからね^ ^
名無しに戻って2度と戻ってくんなよ^ ^
134NAME IS NULL
2018/03/03(土) 17:41:54.12ID:???
1週間もたってこの程度解決できない奴って
うちの会社だったらありえないわ
去年入った新人ですら余裕で解決できるぞ
やっぱ能力無いやつっているんだな
13560 ◆YDp73vGOso3d
2018/03/03(土) 19:37:31.76ID:???
>>134
な!こんな簡単な問題も解けないとか民度低すぎるわここ
あ!俺はもう SQLなんて民度低い言語勉強するのやめたからお前ら頼むな!
136NAME IS NULL
2018/03/03(土) 20:38:19.21ID:???
その能力ない奴に使いっぱにされるSEさん可哀想・・・・・
SEやめよ
137134
2018/03/03(土) 21:38:49.47ID:???
>>135
それぞれの名前、上長と結合したカウントをselect句に書けばいいだけだが
それすらかけないんだろw
添削してやるからかいてみろ
138NAME IS NULL
2018/03/03(土) 22:33:41.88ID:???
このスレのスルー力のなさは民度低すぎと言われても仕方ないレベル
139134
2018/03/04(日) 00:10:24.97ID:???
>>138
御託はいいから書いてみろよw
添削してやるって言ってるだろw
140NAME IS NULL
2018/03/04(日) 00:37:32.72ID:???
懲りずにまた他人を語るやつw
141NAME IS NULL
2018/03/04(日) 00:38:36.36ID:???
ウェレクト臭がするわ
142NAME IS NULL
2018/03/04(日) 00:48:49.97ID:elOR/YZE
ウェレクトまだやっとったんかw
143NAME IS NULL
2018/03/04(日) 00:59:59.63ID:aBRPubRf
俺と他人を混同してるようだな。
144NAME IS NULL
2018/03/04(日) 01:15:14.67ID:elOR/YZE
なにコイツ有名人気取りかwwwww
145NAME IS NULL
2018/03/04(日) 01:24:29.26ID:???
などとウェレクトが申しており
14660改め神 ◆YDp73vGOso3d
2018/03/04(日) 01:32:39.75ID:???
何意味わかんねえ事のたまわってるのお前ら
DB板とかいう糞過疎板とか初めて来たんだがなんだよその恥ずかしいコテ
いいから早く答えだけ書けばいいんだよ
147NAME IS NULL
2018/03/04(日) 10:10:03.20ID:elOR/YZE
>>145
あん?あんま調子に乗るなよウェレクトくん?オコっちゃうよオレ
148NAME IS NULL
2018/03/04(日) 16:57:22.20ID:???
ずぼしウェレクトw
149NAME IS NULL
2018/03/05(月) 14:13:09.19ID:3Wgchkax
データベースのquery limit 75,000って何でしょうか?
ワードプレスを利用していますが、query limit 75,000を超えたとかで表示が制限されてしまいました・・・。

1時間で75000人以上はアクセスできないということでしょうか?
また、今後このようなエラーが起きたいために何かできることはないでしょうか?
不要なプラグインは既に削除しています。

よろしくお願いいたします。
150NAME IS NULL
2018/03/05(月) 17:41:44.50ID:???
>>149
スレチ
WordPressのスレへどうぞ
151149
2018/03/05(月) 19:20:20.57ID:TwTjzndW
いえ、でもmysqlの問題でもあるんですが・・・。
15260改め神 ◆YDp73vGOso3d
2018/03/05(月) 19:27:50.25ID:???
ググれゴミ
今は俺の答え出るまで他の質問受け付けてないから
153NAME IS NULL
2018/03/05(月) 20:09:33.69ID:???
>>151
MySQLの問題でもないから
ホスティング会社に問い合わせてね
154NAME IS NULL
2018/03/05(月) 20:10:09.44ID:???
>>152
ウェレクトは黙ってて
155NAME IS NULL
2018/03/06(火) 05:00:29.05ID:???
>>152
お前、何様?
勝手に仕切んなボケ
156NAME IS NULL
2018/03/06(火) 12:33:46.08ID:Ki/iiA5R
【ゴチ大杉漣(66)】 小森常務゜:(つд⊂):゜「致死量の放射能を放出しました」 【ブルマ鶴ひろみ(57)】
http://2chb.net/r/liveplus/1520303016/l50
15760改め神 ◆YDp73vGOso3d
2018/03/06(火) 20:00:31.31ID:???
うっせえSE如きが意見してんじゃねーよ
はやく答えろやゴミ
ってみんな思ってるからな?wwwそういうふうに思いながら仕事しろよ?wwwwww
158NAME IS NULL
2018/03/07(水) 20:56:18.81ID:7USA4bpQ
そろそろ飽きてきたから俺が答えちゃおうかなwいいのか?お前ら?w
15960改め神 ◆YDp73vGOso3d
2018/03/07(水) 21:49:59.76ID:???
はやく答えろや
160NAME IS NULL
2018/03/08(木) 07:15:45.81ID:???
アホコテはngにしてるからどうぞお好きに
16160改め神 ◆YDp73vGOso3d
2018/03/08(木) 10:26:18.12ID:???
でたー!wwwwww
NGにしてるで勝ち誇ってるやつwwwwww
162NAME IS NULL
2018/03/08(木) 21:47:16.61ID:/+R2cp3T
>>160
ウェレクトは黙っとけまた恥かくぞ
163NAME IS NULL
2018/03/09(金) 00:40:28.63ID:???
>>162
君がウェレクトじゃないのか?
164NAME IS NULL
2018/03/09(金) 16:53:42.16ID:???
・SQLインジェクション対策はシングルクォートを空白に置換すればOK
・テーブルで年月のみを入れる項目は文字列型で定義
この辺を論破できないので悲しい...

シングルクォートなんてデータ入れねーよ m9(^Д^)プギャー
年月のみならサイズを小さくできるよといわれる
165NAME IS NULL
2018/03/09(金) 18:01:49.05ID:???
いろいろヤバイなそれ
16660改め神 ◆YDp73vGOso3d
2018/03/09(金) 18:24:40.67ID:???
>>164
ここ君の日記帳じゃないよ
さようなら
167NAME IS NULL
2018/03/10(土) 12:48:06.89ID:???
年月を文字型にすると
・比較相手によってはキャストが必要
・範囲チェックが働かない
・容量が増える

逆に年月を文字列型にするメリットって何かあるの?
あと速度的なとこも気になるね
168NAME IS NULL
2018/03/14(水) 12:59:09.36ID:E2z4/zZm
>>164
いまどき数バイト削るためにコンピュータの数値型を使うのは時代錯誤。しかもリレーショナルデータベースでは文字として出力するのが優先だから文字表現でデータを格納するのが基本。
169NAME IS NULL
2018/03/14(水) 15:47:30.57ID:???
釣り針がデカすぎ
170NAME IS NULL
2018/03/14(水) 18:50:24.54ID:???
え、え〜〜!?
これは救いようもなくヤバイ
171NAME IS NULL
2018/03/14(水) 19:40:23.59ID:9cJyYZaB
疑心暗鬼すぎる>>169かわゆすw
172NAME IS NULL
2018/03/14(水) 20:12:41.81ID:???
疑心暗鬼? w
17360改め神 ◆YDp73vGOso3d
2018/03/14(水) 20:20:38.93ID:???
気持ち悪い話してないではやく>>60答えろやごみども
174NAME IS NULL
2018/03/14(水) 20:24:27.64ID:9cJyYZaB
多くのゴミの中でも本当にゴミと言えるのは>>172だけやでw
175NAME IS NULL
2018/03/15(木) 00:28:50.67ID:08yLtO65
>>167
int型の項目値を文字列に変換する方がはるかに負荷が大きい。
17660改め神 ◆YDp73vGOso3d
2018/03/15(木) 00:39:41.41ID:???
正直なそんな低レベルなDB設計してる奴がいるとこで働いてるお前がかわいそうだわ
んでそんな話どうでもいいから早く質問答えろな?
177NAME IS NULL
2018/03/15(木) 00:52:07.97ID:???
年月は数字項目にしといたほうがトラブルが少ない。整合性チェックにもなる
文字列にして文字が入ってたりすると日付形式に変換する時エラーになる
178NAME IS NULL
2018/03/15(木) 00:54:30.05ID:08yLtO65
>>167
キャストが必要というのもコンピュータの数値型を使っていても、最終的には文字列に変換する。

年月の同士の計算が膨大にあるのであれば理解できなくないが、日付項目同士の比較は日付型で行う。

コンピータの数値表現で扱ってしまうと、まず日付型に変換し、実在しない年月や、1ヶ月前、1ヶ月後、月末日等の特定に2段階のキャストが必要になる。

現実には存在しない年月を生み出してしまうリスクまでとる必要がない。

何度も言うが年月の単純計算などほぼないうえに、文字列に大小判定は気にせず、コンピータの数値ばかりこだわるのはリレーショナルデータベースを理解していないどころか、コンピータを理解していない。
179NAME IS NULL
2018/03/15(木) 01:04:17.75ID:???
いつもの人ですねー
お薬出しときますねー
18060改め神 ◆YDp73vGOso3d
2018/03/15(木) 01:37:34.58ID:???
>>60の簡単なSQLも書けないアホが何言っても滑稽なだけですよ^ ^
181NAME IS NULL
2018/03/15(木) 04:57:56.45ID:???
>>174
>>170 w
182NAME IS NULL
2018/03/15(木) 17:36:45.04ID:???
一人で勝手にint型や数値型を持ちだしてそれを的外れな長文で否定w
文脈を理解してないどころか、一般常識を理解していない。
183NAME IS NULL
2018/03/15(木) 20:48:02.74ID:S1KKHbYv
バカ必死やねw
184NAME IS NULL
2018/03/17(土) 13:49:54.26ID:tBZQagyi
  ★★★根税制による格差解消は、赤犬を根絶しユダヤ支配を永遠に終わらせる為の決め手である。★★★

▲  この掲示板(万有サロン)に優秀な書き込みをして、総▲額148万円の賞金をゲットしよう!(*^▲^)v
  http://jbbs.livedoor.jp/▲study/3729/ →リンクが不良なら、検索窓に入れる!
185NAME IS NULL
2018/03/18(日) 00:49:00.65ID:???
>>175
>>178
いつもCPU100%にしちゃうから勉強になります!!
186NAME IS NULL
2018/03/18(日) 11:46:44.87ID:a+ovhjNW
それはSQLの書き方がおかしいんだろ
187NAME IS NULL
2018/03/18(日) 15:36:28.47ID:???
ホントに文脈も一般常識も理解してないのな
18860改め神 ◆YDp73vGOso3d
2018/03/18(日) 23:26:43.98ID:???
統計情報も取らないアホ集団で仕事してるのはわかったから
はやく俺の質問答えてや^ ^
189NAME IS NULL
2018/03/20(火) 22:22:54.01ID:Rscf1saE
>>185
CPUは使うものですよ。
190NAME IS NULL
2018/03/20(火) 22:23:50.07ID:Rscf1saE
>>188
統計情報はユーザーが取るものではないぞw
191NAME IS NULL
2018/03/24(土) 13:21:59.28ID:GEutIhi9
訳のわからんツッコミにさすがの神もタジタジの様子w
192NAME IS NULL
2018/03/25(日) 01:04:30.70ID:yjy1y48X
MySQL (InnoDB) で ALTER TABLE をする際の振る舞いとしてテーブル単位のロックではなくインスタンス全体をロックしているような挙動を示しています
innodb_file_per_table を疑ったが ON だったのですが何が問題なんでしょうか
193NAME IS NULL
2018/03/25(日) 01:39:47.58ID:???
>>192
MySQLスレへどうぞ
194NAME IS NULL
2018/03/25(日) 17:11:51.29ID:???
>>192
追記:
原因の切り分けが非常に難しく、 AWS RDS を利用しているからこうなっているのか、
それともこの挙動が発生したインスタンスに大量のデータベース・テーブル(150万テーブル以上)が存在していることが問題なのか、
他に見落としている条件がないかを調査している。
195NAME IS NULL
2018/03/26(月) 12:26:18.51ID:E8QJAuxE
テーブル数150万てwどうしてそうなったw
19660改め神 ◆YDp73vGOso3d
2018/03/26(月) 18:43:16.56ID:???
>>194
MySQLの問題だからねそれ。
あと今質問打ち切ってるよ?

>>195
150万って別に普通だと思うが?アホ?
19760改め神 ◆YDp73vGOso3d
2018/03/26(月) 18:44:41.84ID:???
ああごめんね。テーブル数150万はないわ。
どんな教育受けてきたん?
はいこの話終わり早く答えて
198NAME IS NULL
2018/03/26(月) 21:34:19.88ID:???
>>197
お前は教育受けてないだろ
19960改め神 ◆YDp73vGOso3d
2018/03/26(月) 22:38:34.91ID:???
>>198
そうだね教えを請うたことないわ
いっつも享受する側だわ
スキーマテーブルレコードカラムの違いがわかんないアホがこのスレ使ってんなや!
200NAME IS NULL
2018/03/27(火) 07:18:12.07ID:???
まだ居座ってるんだ
このかわいそうな人
201NAME IS NULL
2018/03/27(火) 07:21:01.46ID:Sf3AYZp2
間違いを指摘された途端にブチ切れ始めた
202NAME IS NULL
2018/03/27(火) 12:28:22.82ID:5YfwV0Ug
「指摘したって言う奴の指摘は大体間違っている」の法則
203NAME IS NULL
2018/03/27(火) 12:34:14.84ID:???
意味不明
20460改め神 ◆YDp73vGOso3d
2018/03/27(火) 18:30:19.18ID:???
>>203
こんな簡単なSQLも作れないの?
仕事辞めた方がいいんじゃない?
205NAME IS NULL
2018/03/27(火) 19:00:54.47ID:???
SQLの事だと思い込んでいる事も意味不明
20660改め神 ◆YDp73vGOso3d
2018/03/28(水) 21:03:37.12ID:???
>>205
きみ本当のあほみたいだから2度とこないでね
207NAME IS NULL
2018/03/28(水) 21:25:27.44ID:???
>>206
150万テーブル作ってろゴミクズ
208NAME IS NULL
2018/03/28(水) 21:37:10.33ID:???
>>206
お前生きてる価値無いから死ね
209NAME IS NULL
2018/03/28(水) 22:42:12.95ID:???
>>207
書き間違えまで揚げ足取るってやべえなここの民度
210NAME IS NULL
2018/03/28(水) 22:45:28.11ID:???
>>196
150万テーブルwww
211NAME IS NULL
2018/03/28(水) 23:27:20.25ID:???
普通そんな所書き間違えるなんてしないよ
212◆YDp73vGOso3d
2018/03/29(木) 00:26:29.50ID:???
>>210
お前あほ?俺に安価つけてんなよゴミSEが
213NAME IS NULL
2018/03/29(木) 01:27:17.73ID:???
読み間違えた挙句にアホ呼ばわりする人間が民度を語るなよ。みっともない奴だな。
214◆YDp73vGOso3d
2018/03/29(木) 01:35:47.13ID:???
>>213
君名前欄も読めないメクラさんかな?
民度どうこうなんて言ってないんだけど?
文体から伝わってくるんだけど加齢臭口臭やばいでしょあなた?
215NAME IS NULL
2018/03/29(木) 03:34:49.63ID:???
>>212
あら「普通」の概念が破綻してる方がまたいらっしゃった
216NAME IS NULL
2018/03/29(木) 12:25:25.63ID:siRTS5gv
あら「普通」の概念が堅固なバカがまたいらっしゃった
217NAME IS NULL
2018/03/29(木) 12:33:58.03ID:???
>>214
ごめんなさい
218NAME IS NULL
2018/03/29(木) 12:34:37.82ID:???
>>216
自己紹介おつ
219NAME IS NULL
2018/04/03(火) 20:44:20.13ID:wbI218I7
select A1,A2 from tableA
select B1 from tableB

これをそのまま流すと結果は2行になりますが、
これをA1,A2,B1と1行でとる方法はないでしょうか
220NAME IS NULL
2018/04/03(火) 21:07:32.04ID:???
書き忘れましたが、どちらも1行しか返さないSQLです
221NAME IS NULL
2018/04/03(火) 21:10:17.03ID:???
>>219
それぞれの実行結果が1行しかないなら

select tableA.A1, tableA.A2, tableB.B1 from tableA, tableB;
222NAME IS NULL
2018/04/03(火) 22:07:12.44ID:???
>>221
なるほど、ありがとうございます
223NAME IS NULL
2018/04/04(水) 08:04:54.29ID:2HlnMqVc
MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?

よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL

MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。
224NAME IS NULL
2018/04/04(水) 13:11:13.69ID:???
>>223
おそらくデータベースに設定している文字セットで不整合があるんだろうと思いますが
MySQLの設定方法に関する質問の場合は、ここで聞くよりも、
MySQL 総合 Part26
http://2chb.net/r/db/1499949595/
で聞いた方が良いかと思います。

MariaDBに関するスレもあります。覗いてみると良いかもしれません。
http://2chb.net/r/db/1360677476/
225NAME IS NULL
2018/04/04(水) 16:32:49.81ID:+pp14tKO
誤爆かもな
226NAME IS NULL
2018/04/04(水) 21:47:48.32ID:???
with句で取得した数列を別のテーブルでその数列と一致するレコードを取得したいんだけどどうすればいいでしょう?
withで別で取得したリスト名Aとし取得結果がBだとすると
select ※ from X
where X.C IN (SELECT B FROM A)
で取得しようとしたんだが上手くいかずいろいろとぐぐってみたけどわからなかったです・・・
227NAME IS NULL
2018/04/04(水) 21:48:51.99ID:tDmvnrOB
DB名も書けないとか
228NAME IS NULL
2018/04/04(水) 22:51:56.44ID:???
withで別で取得したってのが意味わからん
その部分を含めてどうやろうとしたのか書けば答えようもあるが
229NAME IS NULL
2018/04/04(水) 23:31:43.42ID:???
すみません。書き方が悪かったです。
使用しているのは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テーブルに何件存在するかを確認したいです。
23060改め神 ◆YDp73vGOso3d
2018/04/04(水) 23:59:17.52ID:???
参考書でも開けばそんくらいわかんだろゴミ
早くお前ら答えろや
スレチの質問には誘導して俺の質問には答えないって根性捻れまくりだろお前ら
231NAME IS NULL
2018/04/05(木) 01:39:19.17ID:l3AE4+ue
「Xの数列」という説明が他人には理解できない。

Xがひとつの列だとするとなぜグループ化なのかわからない。

さらに再帰クエリにして、別のSELECT文のINリストのSELECT文にしているのも意図がくみにくい。

かなり単純なことを聞いていると予想はできるが、なぜこんなに難しく考えているのか?
232NAME IS NULL
2018/04/05(木) 06:25:28.48ID:???
本当に>>229の通りに書いているならcount(※)がcount(*)の間違いだが
それ以外に致命的な間違いは見当たらない
まあこう書いても同じ意味にはなる
select count(*) from B inner join Z on B.C = Z.X;
233NAME IS NULL
2018/04/05(木) 13:53:35.43ID:???
>>231
再帰クエリーないけど?
234NAME IS NULL
2018/04/05(木) 19:22:56.90ID:l3AE4+ue
再帰のないWITHを再帰クエリと呼ぶなということか。

ただOracleは再帰があってもなくてもただWITHと書いて、再帰のないWITHと言ったりするからそう書いた。

標準SQLではWITH RECURSIVEと書かないといけないが、Oracleはたしかこの構文がない気がする。
235NAME IS NULL
2018/04/05(木) 19:24:12.57ID:l3AE4+ue
他人のミスに厳しいならそう自己紹介してくれ。
236NAME IS NULL
2018/04/05(木) 20:02:25.68ID:???
ではまずご自身からどうぞ
237NAME IS NULL
2018/04/05(木) 20:52:54.79ID:???
やあ、俺
238NAME IS NULL
2018/04/05(木) 21:29:58.31ID:???
>>232
B.CかZ.Xの少なくともどちらかがユニークでないと同じ意味にはならん
239NAME IS NULL
2018/04/06(金) 00:33:07.86ID:GwnuWxH/
このスレはSQL入門スレなのかSQLオタクスレなのか?

よくわからない質問に、エスパー回答をするというIT技術者の間ではあまりないやりとりが多い。
240◆YDp73vGOso3d
2018/04/06(金) 01:28:52.77ID:???
テンプレ見ろゴミ
ここは初心者用スレだよ
なのに俺の質問は基礎的すぎるとかいう謎老人のおかげで誰も答えんのや
まじでゴミSEは右ならえの自我すら持たない穢多非人よ
241NAME IS NULL
2018/04/06(金) 08:24:33.64ID:???
いつまで粘着してんだ、このキチは
242NAME IS NULL
2018/04/06(金) 12:19:44.04ID:1nt8ANDW
>>239
IT技術者の間ではよくわからない質問によくわからない回答をして
お互い納得するのがデフォルトスタンダードですものねw
243NAME IS NULL
2018/04/06(金) 12:43:29.95ID:???
ここはわざと言い間違えるスレか?
244NAME IS NULL
2018/04/06(金) 12:58:57.72ID:GwnuWxH/
まず質問者が無礼。回答者がとりあえず想像で回答。これがこのスレが機能していない理由。
245NAME IS NULL
2018/04/06(金) 13:59:04.00ID:GwnuWxH/
>>240
初心者向けであれば、SQLを回答するのではなく、何をしようとしているのを確認するのが先です。できればいい論をデータベース板で確認するのはおかしいので、プログラム板やプログラマ板で質問すべきです。
246◆YDp73vGOso3d
2018/04/06(金) 20:23:48.23ID:???
>>245
わかったわかったお前の意見とかどうでもいいわ
文体見るだけで中年のごみおっさんってわかるわやばいよ君?
247NAME IS NULL
2018/04/06(金) 20:45:46.08ID:???
匿名の掲示板で誰でも書き込めるんだから
気に入らなければスルーすれば良いだけ
質問者が無礼って、お前に害悪を加えてきたわけじゃあるまいし
248NAME IS NULL
2018/04/06(金) 21:22:42.32ID:+EV0F8Wd
助けてください。
ACCESSのDBなんですが、
tblAは、[id][なまえ][電話番号][性別][入会日]というフィールド構成のマスター名簿
tblBは、[id][入金日][入金額]というフィールド構成です。

このテーブルを元に、ACCESSやEXCELのVBA上で、

[id] [なまえ] idごとの[入金額]の合計 WHERE 昨日=<[入金日] <= 明日

というレコードセットを取得したいです。
tblBの集計に、tblAからもってきたなまえフィールドをくっつけたい、という感じです。
INNER JOINとか、そういうのを駆使して、なんとかひとつのSQL文を作りたいのですが、
うまくいきません。
どなたか、SQL文そのものをご教示ください。
お願いします。
249NAME IS NULL
2018/04/06(金) 21:55:43.69ID:???
>>248
このままだとよくわからん
「誰が」入金したという情報はどこで管理しているの?
250NAME IS NULL
2018/04/06(金) 22:00:07.59ID:+EV0F8Wd
>>249
すみません。idというのは、メンバーidのことです。レコードidではありません。
わかりづらくてすみません。

メンバー(マスターで、idから名前がわかる)による入金の記録がBテーブルです。
それぞれのメンバーが、合計でいくら入金したのか、を集計したいのですが、
Bテーブルにはidしかなく、集計表には名前も欲しいので、Aテーブルから持ってきたいのです。
251◆YDp73vGOso3d
2018/04/06(金) 22:08:41.64ID:???
>>250
君質問する以前の問題だよ?
あと今質問受け付けてないからばいばい
252NAME IS NULL
2018/04/06(金) 22:09:44.34ID:???
>>250
えーと
同じ日に2件以上の入金はないということ?
253NAME IS NULL
2018/04/06(金) 22:12:55.34ID:+EV0F8Wd
>>252
ありえます。
なので、SUM[金額] GROUP BY id としたいです。
254NAME IS NULL
2018/04/06(金) 22:20:07.86ID:???
>>253
そもそもテーブル設計がまずいのでは
同じ人が同じ日に同じ金額を入金したらどうなるの?
主キーは?
255NAME IS NULL
2018/04/06(金) 23:15:05.62ID:+EV0F8Wd
Bテーブルにはオートナンバーのridフィールドがあります。
256NAME IS NULL
2018/04/07(土) 04:28:00.74ID:???
GROUP BY [id],[なまえ]
257NAME IS NULL
2018/04/07(土) 09:47:12.83ID:???
>>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
;
258257
2018/04/07(土) 09:48:19.23ID:???
サブクエリ内にgroup by id書くの忘れた
259NAME IS NULL
2018/04/07(土) 15:34:15.71ID:???
>>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;
260NAME IS NULL
2018/04/07(土) 20:09:01.50ID:???
>>259
ありがとう!
261NAME IS NULL
2018/04/10(火) 10:35:12.39ID:dRsp0g4C
【シオンの議定書は反日】 『マス・レジャーとクイズを盛んに』 『あなたは極めて優秀だから寝返れ』
http://2chb.net/r/liveplus/1523323225/l50
262NAME IS NULL
2018/04/15(日) 00:36:03.26ID:???
>>4 のよくある質問2で、keyに別テーブル?配列?を指定することはできますか。
(key=3など、BDにない項目のカウント結果は当然ゼロになるが、それも結果として欲しい)

1〜12の数値(月)で集計するとか、47都道府県をキーとするとか、
ニーズはありそうなので方法もあるように思うのですが。

DBは、Google Fusion Tablesです。
263NAME IS NULL
2018/04/15(日) 00:56:40.79ID:???
>>262
具体的にテーブルの内容を例示してみて
264NAME IS NULL
2018/04/15(日) 01:11:20.64ID:???
outer joinのことを言いたいんだと思う
265NAME IS NULL
2018/04/15(日) 01:41:28.73ID:???
OUTER JOIN? …慌ててググる…そうそうそれです!

Google Fusion TablesはWHERE句で関数が使えないなどSQLはやや貧弱なのですが、
OUTER JOINはあるようなので(LEFTだけ?)勉強してやってみます。
ありがとうございました。
https://developers.google.com/fusiontables/docs/v2/sql-reference
266◆YDp73vGOso3d
2018/04/15(日) 17:01:53.04ID:Bs6Qpy/T
おいおいおいおいouter joinとかいう初心者以前の質問には答えて
俺の質問には答えんのかい
お前らほんと捻くれてるな
これだからSEとかいうオタク共はいじめたくなるんだよなあ
267NAME IS NULL
2018/04/15(日) 17:33:52.27ID:???
>>58
専門学生の宿題だろこれ?
268NAME IS NULL
2018/04/19(木) 00:19:53.73ID:ACyU9sdk
>>266
答えられんのはプログラマーとかゆうコーダーだろ
SEとゆうのは俺様みたいな有能のことたぜボーイ!
269NAME IS NULL
2018/04/19(木) 01:05:53.36ID:pgNamYVa
>>268
you?
270NAME IS NULL
2018/04/20(金) 20:42:22.38ID:cUph+NAS
>>269
なんや?SE様に何か用か?
271NAME IS NULL
2018/04/28(土) 20:00:00.97ID:???
テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど
この値がどのidなのか毎回自分でテーブル確認してinsertするのが大変で困ってます
リストボックスみたいなので'ゆうちょ'を選んだら(bank_id=)3みたいに支援してくれる機能ってSQLでできませんか?
RDBMSはMySQLでLinuxのターミナル使ってます
272NAME IS NULL
2018/04/28(土) 21:05:32.03ID:???
それはSQLではなくWeb画面等使って選択させれば良いだろう
273NAME IS NULL
2018/04/28(土) 21:36:58.41ID:f64A+t1T
>>271
SQLの話ではないな。
274NAME IS NULL
2018/04/28(土) 22:38:37.03ID:???
ACCESSでも使ってろ
275NAME IS NULL
2018/04/29(日) 03:58:48.45ID:uDICrjO7
>>271
IDを使わず銀行名でやってみてください。

自分が経験しなければ、なぜそうした方がいいのか、わかりませんよ。
276NAME IS NULL
2018/04/29(日) 10:54:53.31ID:???
>テーブル分割してidなどで紐付けるのが基本なのは分かるんですけど

それは分かってるっていうよりメリットデメリット理解しないまま鵜呑みにしてるだけだよね。
どうせ鵜呑みにするなら教科書通りのリレーショナルDB設計から入ればいいのに。
277NAME IS NULL
2018/04/29(日) 11:08:37.04ID:???
更新時のレコード件数を減らしたり情報の集約・一元化がメリットですよね。ざっくりとは理解してるつもりです。
ただターミナルからSQLで複数のレコードを追加するには自力でテーブル確認する必要あるのが使いづらいなと思って
278NAME IS NULL
2018/04/29(日) 11:34:58.17ID:???
select bank_id from m_bank where bank_name = ’ゆうちょ’

こんなサブクェリーを追加SQLに埋め込む
279NAME IS NULL
2018/04/29(日) 12:34:02.47ID:???
>>278
こういうときに副問合せ使うんですね、使いやすそうで凄く良さそう。
早速使ってみます。
ありがとうございます。
280NAME IS NULL
2018/04/29(日) 13:38:14.58ID:uDICrjO7
マスタテーブルではないのか?
281NAME IS NULL
2018/04/29(日) 14:23:08.00ID:???
>複数のレコードを追加するには自力でテーブル確認する必要ある

これの意味が判らん
282NAME IS NULL
2018/04/29(日) 18:36:41.80ID:???
説明下手ですみません。
初心者なのですごく初歩的な質問でした。
取り敢えずサブクエリで解決しましたが一応

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に打ち込む

同じような感じで外部キーの列が増えるとインサートする度に自分で調べる必要があって大変になってきたのでなにかいい方法ないか聞きました。


混乱させてすみません。
283NAME IS NULL
2018/04/29(日) 18:57:21.95ID:???
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付

Bマスタ
名前 社員番号 適用開始日 適用終了日

【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)

を抽出したい場合はどうすればよいでしょうか?
284NAME IS NULL
2018/04/29(日) 19:30:40.63ID:???
学校の宿題みたいな設問だな
285NAME IS NULL
2018/04/29(日) 19:48:09.61ID:i1PXJR4v
>>282
自分でそういうプログラムを作ればいい。
286NAME IS NULL
2018/04/29(日) 19:49:09.41ID:i1PXJR4v
>>284
トランザクションデータをトランと略しているあたりから、どこかの会社だろう。
287NAME IS NULL
2018/04/29(日) 19:49:26.43ID:ccXAu8y/
同姓同名には考慮しなくて良いの?
288NAME IS NULL
2018/04/29(日) 19:51:35.86ID:i1PXJR4v
>>283
外部キーが社員番号ではなくて名前なのはネタだからか?
289NAME IS NULL
2018/04/29(日) 22:10:20.38ID:???
>>282
どのぐらいの頻度でSQL使うかわからんけど、こんなのでもいいんかね
insert into habook(id, money, method_id)
select 200, -1000, method_id from method where method_name='ゆうちょ銀行'
290NAME IS NULL
2018/04/29(日) 22:12:28.42ID:???
>>283
>>58と同じみたいなんだが、いまだにわからないのかw
291NAME IS NULL
2018/04/29(日) 22:15:33.56ID:???
銀行は銀行名の変更とか合併とかあるから
そういった事も考えないといけない
292◆YDp73vGOso3d
2018/04/30(月) 03:17:07.21ID:???
お前らはどうしても俺の質問には答えたくないみたいだな
293NAME IS NULL
2018/04/30(月) 08:36:43.41ID:???
頼み方ってものがあるだろ
ほら言ってみろ
294NAME IS NULL
2018/04/30(月) 10:55:57.85ID:FupcYnE7
コメントが一杯付いてて良かったじゃないか
295NAME IS NULL
2018/04/30(月) 14:55:41.60ID:???
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付

Bマスタ
名前 社員番号 適用開始日 適用終了日

【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)

を抽出したい場合はどうすればよいでしょうか?
296NAME IS NULL
2018/04/30(月) 14:57:09.24ID:???
>>295
同じ名前の社員がいたとき、どうすれば良いの?
297NAME IS NULL
2018/04/30(月) 15:03:04.31ID:???
結婚とか離婚して姓名変わったらどうすんだ
298NAME IS NULL
2018/04/30(月) 17:56:27.86ID:???
もうここしか頼るところがございません。
SQL server7.0が、綺麗にwin10のPCだけつながらなくなりました。
「接続できませんでした。 SQL state'ST100'
SQL server エラー0
[microsoft][ODBC SQL server driver] ログインが時間切れになりました」
と出ます。どうすればいいのでしょうか
299NAME IS NULL
2018/04/30(月) 18:22:54.57ID:???
>>298
20年前の製品とか捨てちまえ
300NAME IS NULL
2018/04/30(月) 18:35:50.58ID:???
>>296
>>297
それぐらい自分で考えろ
301NAME IS NULL
2018/04/30(月) 19:16:11.68ID:L8ngFuqq
>>298
ああこれはログインが時間切れになってるね
ログインが時間切れにならないように注意しなよ
302NAME IS NULL
2018/05/01(火) 08:40:04.60ID:???
>>298

なんでこの板まで来て

Microsoft SQL Server 総合スレ 11 [無断転載禁止]&#169;2ch.net
http://2chb.net/r/db/1464508208/

に行かないの?
303NAME IS NULL
2018/05/04(金) 20:14:40.86ID:???
外部キーって必ず他のテーブルの主キーじゃないとダメなの?
304NAME IS NULL
2018/05/04(金) 21:31:51.25ID:???
主キーでなくてもUNIQUE制約がついていれば大丈夫だと思う
305NAME IS NULL
2018/05/04(金) 22:29:19.11ID:GLAEl09j
>>303
>>304
これ自分も知りたいからageてみるか
306NAME IS NULL
2018/05/05(土) 00:10:26.39ID:T65X27xi
>>303
一意制約の列でもよい。要は重複値を持っている列では外部キー制約に使用できない。
307303
2018/05/05(土) 01:36:42.07ID:dfGZW7dT
>>304
>>306
ありがとうございますm(_ _)m
308NAME IS NULL
2018/05/10(木) 23:54:50.05ID:???
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をインストールしなければいけないのでしょうか?


よろしくお願いします
309NAME IS NULL
2018/05/11(金) 03:50:27.46ID:JrURJydT
MySQLです。数値を計算するSQL文ってあるでしょうか?

例えば、rankingテーブルに「access」と「click」というカラムがあるとします。
accessは×1でclickは×5にして、その合計数値が多い値(降順)で表示

みたいなことがしたいです。
310NAME IS NULL
2018/05/11(金) 05:53:20.74ID:6wqBIw87
>>308
まずはDBを触りましょう
SQLではと書いているということは他ならわかるのでしょうか
RDBでは一般的に
[ユーザーID,ユーザー名,パスワード]
[ユーザーID,データ番号,データ]
のようなテーブルを作成してユーザーIDで結合します
これを正規化といいます

>>309
素直に
order by (ranking.access + ranking.click * 5) desc
でいけるかと
311NAME IS NULL
2018/05/11(金) 17:09:15.29ID:???
SQL初心者です。
連続して1が立っている時間
(行数、データ数)は求められないでしょうか。
1が出てきたタイミングで後どれだけ続くかをその行に書き込みたいです。
312NAME IS NULL
2018/05/11(金) 21:47:33.52ID:???
>>310
いけました!orderに計算するって概念がありませんでした。
とても勉強になりました。ありがとうございます
313NAME IS NULL
2018/05/12(土) 09:16:12.16ID:???
>>311
どういうテーブル、イメージしてるデータの並びを書かないとレスつかないんじゃないか
314NAME IS NULL
2018/05/12(土) 20:19:54.53ID:???
>>313
ありがとうございます。

A B
0 0
0 0
1 3
1 0
1 0
0 0
0 0

AからBを作りたいです。
Bの3は1が3つ続いていることを意味します。
315NAME IS NULL
2018/05/12(土) 21:14:06.97ID:???
>>314
順序も規定せずに 「続いてる」とか言われてもなあ
Excel + VBA とかでやれば?
316NAME IS NULL
2018/05/12(土) 21:22:35.67ID:???
>>314
連番がなければsql では無理
317NAME IS NULL
2018/05/12(土) 21:39:12.17ID:???
>>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で出来るのか?
出来るならどのような方法が有るのか
知りたいです。

よろしくお願いします。
318NAME IS NULL
2018/05/12(土) 22:16:46.98ID:???
>>317
これで
2 1 3
7 1 2
がとれたらいいわけ?
時間っていってたわりにはそういう結果をかいてないが
319NAME IS NULL
2018/05/12(土) 22:19:25.26ID:???
あとDBは何かしりたい
320NAME IS NULL
2018/05/12(土) 22:28:15.77ID:???
最新の(つまりinsertする前の)NoでAが1で、かつ追加するデータのAが0だったら
直前のAが0のデータのNoを見る
例ならNoが9の時に0になったから直前のAが0のデータはNoが6だと。
んで、7,8が連続したものだった
だからNo7のBに2をセット

こんな感じ?
321NAME IS NULL
2018/05/12(土) 23:17:44.19ID:???
>>318
分かりにくく申し訳ありません。
元々時系列のデータだったので
時間という書き方をしていました。
(何個続いたか知りたいのです)

NOとAの項目がある状態でBの項目
を追加したいと思っています。

318様のような結果でも構いません。

>>319
MSのSQL Serverです。申し訳ありませんが詳細なバージョンなどは不明です。

>>320
ありがとうございます。
書かれているようなことが
実現できればと思います。
322NAME IS NULL
2018/05/12(土) 23:18:49.98ID:???
>>317
SQL文でやるならレコードを次々と参照しないといけないから再帰SQL使わないとだめだろうな
あるいはプロシージャでカーソル使う
あるいはプログラムでやる感じになる
323NAME IS NULL
2018/05/13(日) 00:03:02.98ID:???
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;
324NAME IS NULL
2018/05/13(日) 05:37:55.80ID:???
>>322
ありがとうございます。
教えていただいたキーワードをもとに
調べてみます。

>>323
ありがとうございます。
今はPCをさわれる環境にないので月曜日に試してみたいと思います。
325NAME IS NULL
2018/05/13(日) 07:21:58.29ID:???
>>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 ね)
326NAME IS NULL
2018/05/13(日) 09:51:48.44ID:???
>>325
ありがとうございます。
試してみます。
327NAME IS NULL
2018/05/13(日) 11:09:02.63ID:???
再帰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
328NAME IS NULL
2018/05/14(月) 10:07:01.26ID:???
>>325
>>327
ありがとうございます。どちらも思ったような結果が得られました。
>>323
ありがとうございます。
今回は動かせていませんが、MySQLをさわる機会に試してみます。

4月末よりSQLを使わなければいけなくなり、困っていました。
皆さんに教えていただいた方法を理解し自由にSQLが書けるよう頑張ります!
329NAME IS NULL
2018/05/17(木) 11:36:55.43ID:???
教えて下さい。

下記の表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

よろしくお願いします。
330NAME IS NULL
2018/05/17(木) 15:57:54.69ID:???
>KEKKAという行を得たい

????????
331NAME IS NULL
2018/05/17(木) 16:33:50.08ID:???
>>330
わかりにくくてすみません。
KEKKAという項目は元のデータにはなく、この項目を生成したいです。
332NAME IS NULL
2018/05/17(木) 19:41:40.74ID:???
STARTとSTOPは1件ずつしかないのか?

順序はNO順でいいのか?
NOは連番なのか?
333NAME IS NULL
2018/05/17(木) 22:05:10.46ID:???
START、STOPは必ず1レコードあり、複数はない
って事なら、簡単なSQLで処理できそう
334NAME IS NULL
2018/05/17(木) 22:12:42.54ID:???
>>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の行より先に出現します。

よろしくお願いします。
335NAME IS NULL
2018/05/17(木) 22:21:17.05ID:???
>>334 で何をやりたいかはだいたいわかったけど
(たぶん STARTしてからSTOPするまで KEKKAを1にすればよいはず)
行順を保持しつつ状態遷移させるのって普通のSQLでできるのだろうか?
336NAME IS NULL
2018/05/17(木) 22:27:50.57ID:???
START、START、STOP、STOPって並びになったときはどうすんの?
337NAME IS NULL
2018/05/17(木) 22:28:51.14ID:???
334見てなかった、すまん
338NAME IS NULL
2018/05/17(木) 22:51:31.55ID:???
>>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
339NAME IS NULL
2018/05/18(金) 01:30:58.99ID:???
>>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
とかで出来んじゃね
340NAME IS NULL
2018/05/18(金) 10:08:58.76ID:???
ありがとうございます。
皆さんに教えていただいた方法を試していますが、うまく行きそうです。
ありがとうございました。
341NAME IS NULL
2018/05/18(金) 17:13:55.57ID:???
・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件を拾ってこいというクエリですからね
342NAME IS NULL
2018/05/18(金) 21:21:55.34ID:???
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;
343NAME IS NULL
2018/05/20(日) 02:31:03.55ID:???
>>342
できました!ありがとうございます!
344NAME IS NULL
2018/05/29(火) 11:29:58.81ID:???
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)
345344
2018/05/29(火) 11:31:34.61ID:???
間違い
222  2018/04  3000
です
346NAME IS NULL
2018/05/29(火) 12:22:53.17ID:x6Mfbf1/
こういう時に間違える人って
347NAME IS NULL
2018/05/29(火) 12:41:29.95ID:???
おっちょこちょいなんだろうな
> 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')
とかで行けるんじゃね?
348NAME IS NULL
2018/05/29(火) 14:04:09.72ID:???
date_format の所、%Y/%m だな。
2カ所直せば大丈夫だろう
349344
2018/05/29(火) 14:07:06.19ID:???
重ね重ねの間違いお恥ずかしいw
有難うございます
%d を %m にして欲しい結果を得ることが出来ました。感謝
350NAME IS NULL
2018/05/31(木) 20:59:32.14ID:???
毎日の果物の価格を記録するデータベースを作りたいんですがどういうテーブルをつくったらいいですか?とりあえずitemsテーブルに果物の種類とidのカラムを作ります。
毎日の価格はどういうテーブルにしたらいいですか?
351NAME IS NULL
2018/05/31(木) 21:13:08.20ID:???
>>350

DB設計を語るスレ 10 [無断転載禁止]&#169;2ch.net
http://2chb.net/r/db/1495438711/

まぁ叩かれるとは思うが…
352NAME IS NULL
2018/05/31(木) 21:18:17.81ID:???
>>351
スレチでしたかすんません
353NAME IS NULL
2018/05/31(木) 21:20:45.86ID:???
DB設計を語るスレ 10
http://2chb.net/r/db/1495438711/

聞くなら、こちらの方が良いかもしれない
354NAME IS NULL
2018/05/31(木) 21:21:57.55ID:???
被ってしまった、すまん
355NAME IS NULL
2018/05/31(木) 21:27:38.54ID:???
>>354
ありがとうございますそっちで聞いてみます、
356NAME IS NULL
2018/05/31(木) 22:01:13.46ID:???
まあどっちの住人もたいして変わらんからここでも良いとは思うけど
> 毎日の果物の価格を記録するデータベースを作りたいんです
とか意味がわからん
そのデータベースでどう言うことをしたいいのか、とかどういう結果が欲しいのかを書けよ...
357NAME IS NULL
2018/05/31(木) 22:14:37.43ID:trgN2RKZ
またバカがごねとるw
358NAME IS NULL
2018/06/01(金) 05:31:44.28ID:VfzZdde5
クリエ通知ってどうやるの?
359NAME IS NULL
2018/06/06(水) 21:29:03.80ID:???
relatedなカラムにむこうのテーブルにないものをinsertすると勝手に登録してくれますか?
360NAME IS NULL
2018/06/07(木) 14:54:12.56ID:???
しばらく考えてしまったが
やはり意味が分からなかった
誰か解説頼む
361NAME IS NULL
2018/06/07(木) 15:10:39.40ID:???
リレーションで外部キーに存在しないものを挿入したら
どうにかしてくれるのかってことだべ
制約にならんと思うんだが、、、トリガで自分で追加するようにすればいけるかもね
362NAME IS NULL
2018/06/08(金) 03:47:57.75ID:Ywf/F+oU
皆さんがアンケートの答えを格納するテーブルを作るとしたら
未回答は、nullを想定しますか?0を想定しますか?
理由も教えてください!
363NAME IS NULL
2018/06/08(金) 09:49:12.26ID:???
>>362
こちらでどうぞ

http://2chb.net/r/db/1495438711/
364NAME IS NULL
2018/06/10(日) 09:42:21.89ID:???
>>361
on insert cascade か。他のカラムはどうすんだろ
365NAME IS NULL
2018/06/10(日) 10:20:33.83ID:???
null なり default 値なりにするんだろ
366NAME IS NULL
2018/06/10(日) 20:58:20.60ID:???
主キーはどうするんだ
367NAME IS NULL
2018/06/10(日) 21:58:41.22ID:???
>>366
identity とかでいいだろ
てか insert と同じだろ
368NAME IS NULL
2018/06/14(木) 13:13:32.45ID:???
自動採番のあるテーブルにインサートした場合、その番号を知るには別途selectするものですか?
369NAME IS NULL
2018/06/14(木) 16:10:12.12ID:???
そもそも自動採番ってSQL標準じゃない気がするし
DBMSによるんじゃね
370NAME IS NULL
2018/06/14(木) 18:37:24.82ID:???
>>368
普通は採番された番号を取得する機能が提供されてる
でないと単純なログみたいにその番号以外の部分には重複を許す列しかないと検索しようがないから
371NAME IS NULL
2018/06/15(金) 10:36:36.02ID:???
>>368 です。
自分の使うデータベースで探したらありました。
自動採番ってあるの普通だと思ってたので勉強になりました。
372NAME IS NULL
2018/06/17(日) 00:34:30.36ID:DF4YrmFv
こういう常時、一人しか使っていないと思っているひとは、なんなんだろうな。
373NAME IS NULL
2018/06/17(日) 00:58:11.39ID:YrBEhWbQ
こういう常時、で読点打つキチガイはバカなんだろ、うな。
374NAME IS NULL
2018/06/17(日) 11:52:51.97ID:???
バカだからイミフなんですね
375NAME IS NULL
2018/06/19(火) 19:16:06.54ID:???
n+1問題ってなんやねん

パフォーマンス低下したら何がいけないの?
376NAME IS NULL
2018/06/19(火) 19:17:03.49ID:???
何回もデータ分だけ引くの何がいけないの?
ハードが優秀なら別にいいんじゃないないの?
377NAME IS NULL
2018/06/19(火) 23:22:26.54ID:NrZ3i0Js
それでええんやで
378NAME IS NULL
2018/06/24(日) 19:08:35.72ID:???
助けてください。自分の力量だと解決できず

データ
日付,オーダ番号,個人名.エラー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です。

よろしくお願いいたします。
379NAME IS NULL
2018/06/24(日) 21:18:41.09ID:???
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 個人名
380NAME IS NULL
2018/06/25(月) 19:53:25.00ID:???
よろしくお願いします。
381NAME IS NULL
2018/06/25(月) 21:07:08.21ID:???
こちらこそよろしくお願いします。
382NAME IS NULL
2018/06/25(月) 22:01:22.79ID:???
>>379
ありがとうございます!できました!!!
どうしてこんなクエリが思いつくんですか。すげぇですね!
383NAME IS NULL
2018/06/26(火) 16:30:55.58ID:???
質問です。
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

みたいな事がやりたいのですが、クエリはエラーになってしまいます。
384383
2018/06/26(火) 16:58:48.22ID:???
FROM C WHERE Bid = t1.id) t3
の部分で、「t1はここから参照できない」みたいなエラーです。
385383
2018/06/26(火) 17:50:23.15ID:???
自己解決しました
(SELECT B.id, COUNT(col1) AS nullでない数 FROM C GROUP BY B.id) t3
として、WHERE句を取ればいいだけでした

無駄な検索時間は増えてしまうと思いますが・・・
386NAME IS NULL
2018/06/27(水) 01:56:23.14ID:???
>>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;
387NAME IS NULL
2018/06/27(水) 02:05:38.77ID:???
訂正 最後から2行目

× C.c is not NULL
○ C.col is not NULL
388NAME IS NULL
2018/06/27(水) 08:42:50.79ID:???
>>383
BCを先にjoinしてカウント。その結果とAをjoin
389NAME IS NULL
2018/06/27(水) 11:12:53.09ID:???
お願いします。
質問文を入力すると403 Forbiddenとなるのですが、なぜでしょう?
こういう文章は入力できるのに・・・
390NAME IS NULL
2018/06/27(水) 11:16:55.56ID:???
再度質問を投稿してみます。

CREATE TABLE TB(
MM VARCHAR(81) DEFAULT ’NOTHING’ NOT NULL)

なのですが、DEFAULTで'NOTHING'が設定されていてNULLにならないと思うのですが
文末にNOT NULL制御を掛けているのはなぜなのでしょうか?
391NAME IS NULL
2018/06/27(水) 12:49:39.15ID:???
>>390
> NULLにならないと思うのですが
NULLは後からでも設定できるだろ
392NAME IS NULL
2018/06/28(木) 05:17:45.28ID:???
>>390
insertでカラムにnull指定すれば出来るからでは
393NAME IS NULL
2018/06/28(木) 09:25:57.73ID:???
>>391
>>392
ありがとうございました!言われると恥ずかしいくらい簡単なことだったのですね。先生方、ありがとうございました。
394NAME IS NULL
2018/07/02(月) 08:04:38.26ID:NPOvlBFE
1時間に1回だけ引けるガチャを実装したいんだけどどうすればいいですか?
一応、ユーザがいつガチャを引いたかを記録するテーブルを作って(不正が分かるように必須)
そこから検索かけて該当するのがあれば残り時間を返すみたいな実装を考えてます

・MariaDB 10
・user_id, time
・残り時間(引ける時はいらない)
395NAME IS NULL
2018/07/02(月) 09:11:16.24ID:???
>>394
DB設計を語るスレ 10 [無断転載禁止]&#169;2ch.net
http://2chb.net/r/db/1495438711/
396NAME IS NULL
2018/07/14(土) 15:21:18.46ID:wB+JUIy4
条件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通り書く他に、スマートに書く方法無いの?
397NAME IS NULL
2018/07/14(土) 15:48:00.68ID:???
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
398NAME IS NULL
2018/07/14(土) 16:33:57.42ID:???
なるほど、CASE式を使うのか。 サンQ

ってか質問のころ、11通りを結ぶのはANDじゃなくてORの間違いだったな。
399NAME IS NULL
2018/07/16(月) 18:50:59.75ID:XzzcYhc4
>>398
複数のselect文を書いてunion allの方が意図がわかりやすいうえに、条件を変えるときも変更時のリスクも低い。
400NAME IS NULL
2018/07/16(月) 19:13:40.21ID:???
>>399
ちょっと具体的に書いてみ

まともな頭持ってたら書いてる途中で顔真っ赤になると思うが…
401NAME IS NULL
2018/07/16(月) 19:16:01.66ID:???
>>399
条件ちゃんと読んでないのかもしれんが、複数条件つなぐのはorだぞ
ちょっとunionで書いてみてくれよ
402NAME IS NULL
2018/07/16(月) 20:50:23.35ID:???
単純に、orでつないでる式を一つにしたsql文をunionすれば良いと思うのだが
403NAME IS NULL
2018/07/16(月) 21:32:24.07ID:???
>>402
それのどこが「スマート」なんだ?
404NAME IS NULL
2018/07/16(月) 21:39:54.23ID:???
質問者自身にしろ、CASE使った回答にしろ、
SELECT条件で9個以上の判定をしていますが、
UNION使って列挙した場合、それぞれのSELECTが
独立してテーブルをスキャンする事になるので
仮に上手く書けたとしても効率が悪いって気がします
405NAME IS NULL
2018/07/16(月) 22:51:06.23ID:5Oge9TUh
>>404
それは素人の考え方です。先の例ではSQLの見た目はシンプルそうに見えますが、実際の処理コストは高いと思われます。
406NAME IS NULL
2018/07/16(月) 22:53:57.62ID:5Oge9TUh
それなりにデータベースに詳しくてもいまだにSQLはこう書くと内部でこう処理されると主張する方がいますが、それはリレーショナルデータベースの根本から否定する主張です。SQLは処理方法を指定しない非構造化言語です。
407NAME IS NULL
2018/07/16(月) 23:01:38.78ID:5Oge9TUh
>>404
リレーショナルデータベースはそんなにお馬鹿ではありません。SQLの発行回数を問題視したり、SELECT句が難度も出てきたり、見た目だけでコストが高い、性能が悪いと言われて仕事でもかなりの支障をきたしますのでそういった発言は控えてください。

まずは実行計画と実際にどのように処理されたかSQLをトレースして己の知識を高めてから偉そうなことを言ってください。
408NAME IS NULL
2018/07/16(月) 23:03:33.07ID:???
後の例を提示してもらった上で性能なり効率なりを評価してみましょう
409NAME IS NULL
2018/07/16(月) 23:07:17.64ID:5Oge9TUh
>>408
すぐに回答を欲しがるいつものあなたですが、ここは教育スレッドではありません。

ちなみにさきほどの非構造化とは非構造化データのことではなく、構造化定義のない言語という意味です。
410NAME IS NULL
2018/07/16(月) 23:12:29.73ID:???
教えてもらうスレではなく、質疑応答スレです。

>402 名前:NAME IS NULL[sage] 投稿日:2018/07/16(月) 20:50:23.35 ID:???
>単純に、orでつないでる式を一つにしたsql文をunionすれば良いと思うのだが

この人がSQL書いて提示するのを待っているところですが
411NAME IS NULL
2018/07/16(月) 23:18:34.32ID:5Oge9TUh
>>397 の良くない点を挙げましょう。

SELECTが一度しか出てきませんが、WHERE句の条件を見れば、普通のプログラマはループのネストとわかるはずです。

一番の問題はそこではなく、仕様の変更に弱く保守性が低いところです。

複数のSELECT文のUNION ALLは結果セットを最後に単純に繋ぐだけで、それぞれのSELECT文が独立していますので仕様の変更が全体に影響しません。

ただし本当のところはオプティマイザの判断ですので、必ずこうなるわけではありません。
412NAME IS NULL
2018/07/16(月) 23:27:47.58ID:???
評価は後の例が出てきてからで良いでしょう?
413NAME IS NULL
2018/07/16(月) 23:29:52.01ID:5Oge9TUh
>>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です。簡単でしたね。
414NAME IS NULL
2018/07/16(月) 23:38:47.97ID:5Oge9TUh
このスレでは集合演算子がないことにしている回答ばかりです。おそらく集合演算子が使いこなせないのでしょう。

もっとシンプルに考えてください。プログラマとは思えません。

SQLを組み立てるときに頭の中でWHERE句内でどうにかしなければいけないと思い込んでいませんか?

常にSELECT文がひとつでSELECT句内でSELECT文を使う回答やWHERE句の服問い合わせでどうにかしようとする回答も多いですね。

特定の人物が回答しているのがよくわかります。その場しのぎの小手先のSQLほど迷惑なものはありません。
415NAME IS NULL
2018/07/16(月) 23:38:56.00ID:???
条件パターンを例に従って具体的に書いてみてくれませんか?
そうすれば実際に性能評価ができそうですし
416NAME IS NULL
2018/07/16(月) 23:43:50.42ID:5Oge9TUh
>>415
なぜ11種類の条件違いのWHERE句違いのSELECT文が理解できないのですか?

SELECTの結果を足し算、くっつければすればいい話ですので、あなたがUNION ALLを理解できないだけです。

SQLの入門書の絵でも見て勉強してください。
417NAME IS NULL
2018/07/16(月) 23:45:50.92ID:???
この人NGにした方が良さそうですね?
418NAME IS NULL
2018/07/16(月) 23:52:58.66ID:5Oge9TUh
UNION ALLでなくてもSELECTがひとつでないといけないルールがあるなら、WHERE句に10個の条件がすべて真、9個の条件がすべて真の条件をOR条件でつないでもかまいません。
419NAME IS NULL
2018/07/16(月) 23:58:36.32ID:5Oge9TUh
条件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 条件 」部分はいりません。

質問者はスマートではないと言っていますが、本人がスマートではないと見た目だけで思っているだけで、まったく悪くはありません。
420NAME IS NULL
2018/07/17(火) 05:22:06.92ID:???
>>413
おれなら11個も同一テーブルからのunion allとか書いてたらアホかと思うけどな
whereで11個or条件書く方がマシだわ
どっちにしても、9個以上が8個以上とか7個以上とかになったらどうするんだろうね

ああ、たんに最近union覚えて使いたいだけか

理解できてないのはお前のunionに対する実行効率だよ

まあ>>397がループのネストとか俺には意味不明だから、俺を遙かに超越した理解の持ち主なのかもしれんが
421NAME IS NULL
2018/07/17(火) 06:35:01.38ID:???
環境はそれぞれだったら、いろんな方法を試したらいいんじゃない?
で、目的に一番合うもの選べば。
422NAME IS NULL
2018/07/17(火) 07:11:11.28ID:???
効率云々の前にunion allとかにしたら重複行の扱いで結果異なるし
>>417が正解かと
423NAME IS NULL
2018/07/17(火) 11:41:13.48ID:???
まあちゃんとnot条件書けばいちおうunionでもunion allでも同じになるんじゃね
unknownになるような条件書かなきゃな
424NAME IS NULL
2018/07/17(火) 19:05:25.28ID:???
>403
どっちがスマートかと言えば、unionで繋げた方が"sql文"としてはスマートかな
425NAME IS NULL
2018/07/17(火) 20:31:21.01ID:???
現実社会じゃクイズ解いてるわけじゃないんだから、アプリ側でやっちゃうだけ
426NAME IS NULL
2018/07/17(火) 20:40:16.91ID:???
>>425
この例で
アプリ側でどんなクエリ発行してどんなロジックでチェックするのか教えてくれ
427NAME IS NULL
2018/07/17(火) 21:16:08.13ID:???
>>424
だからSQL書いてみろって
書いてる間に顔真っ赤になるだろ w
428NAME IS NULL
2018/07/17(火) 21:20:42.11ID:???
お前は読めるのか?
429NAME IS NULL
2018/07/17(火) 22:10:19.21ID:???
unionおじさんの次の一手は誰も言ってない要件を持ち出す、かな
430NAME IS NULL
2018/07/17(火) 22:47:07.54ID:adSOPTjX
UNIONとUNION ALLはまったく別物だ。
431NAME IS NULL
2018/07/17(火) 22:50:39.33ID:adSOPTjX
>>422
だから質問者のWHERE句での条件でいいのに。
なんでSQLを直すことになったらすぐにWHERE句全体が崩壊する方法を勧めるひとがいるの?
432NAME IS NULL
2018/07/17(火) 22:57:06.79ID:adSOPTjX
>>422
確かにUNION ALLでは同じレコードが返ってくることには気づかなかった。
433NAME IS NULL
2018/07/17(火) 23:05:43.48ID:adSOPTjX
質問者が静的SQLにこだわっている理由も気になる。10個の条件のうち9個が真という条件が激しく変化するのなら、動的SQLでSELECT文を組み立てた方が、てっとり早い。

こういう条件の場合は動的にSQLを組み立てるのが普通で、静的SQLにこだわる理由がみつからない。

こういう検索機能を動的SQLではなく、静的SQLにしようとすると、例の仕様変更に耐えられないSQLを使用しなくてはいけないなる。
434NAME IS NULL
2018/07/17(火) 23:26:06.21ID:???
>>433
静的/動的は関係ないでしょ?
まあ動的に生成するなら>>396でもそんなに面倒じゃないけど>>397でなんの問題もないしな
ちな>>399は論外
435NAME IS NULL
2018/07/17(火) 23:31:51.56ID:???
素朴な疑問だけど、なぜみんなUNIONを嫌うの?
436NAME IS NULL
2018/07/18(水) 00:03:15.34ID:???
適切な使い方なら良いんだが、これは違うだろう
437NAME IS NULL
2018/07/18(水) 02:54:15.10ID:???
この例で最悪でもテーブルスキャン1回で済ます実行計画吐くならまあunion allでもいいんじゃね
結果行数が多くなるならunionはダメだろうけど
438NAME IS NULL
2018/07/18(水) 08:36:07.89ID:???
誰か最初のUNION(ALL)の手前までででいいからSQL書いてくれ
439NAME IS NULL
2018/07/18(水) 12:04:56.31ID:???
言うに事欠いて1回のスキャンで済むunionとか…
440NAME IS NULL
2018/07/19(木) 15:29:12.57ID:ql5n9nVD
【3.11津波は自民由来!? 安倍逮捕秒読みか!?】 ロシア国防省『日本は地震を偽装した核実験を止めよ』
http://2chb.net/r/liveplus/1531966541/l50



2018年、テレビが隠している大ニュース!
441NAME IS NULL
2018/07/20(金) 00:47:16.08ID:qGWP8ju3
ここのキチガイは実行計画もみたことがないからな。文字数が少ないSQLがスマートと言い張る。
なんでプログラマなのに
442NAME IS NULL
2018/07/20(金) 12:58:13.55ID:???
a
443NAME IS NULL
2018/07/20(金) 21:39:10.73ID:???
実行計画という用語を最近覚えたノロマ w
444NAME IS NULL
2018/07/20(金) 23:08:59.22ID:GJRr/f3G
おまえの事やんけ
445NAME IS NULL
2018/07/20(金) 23:40:11.94ID:???
なにか気に触ったのか? w
446NAME IS NULL
2018/07/21(土) 07:43:39.15ID:5x2HyI6i
おまえ何時も他人の顔色うかがってばかりやな
447NAME IS NULL
2018/07/21(土) 08:27:53.48ID:???
ノロマは何をやっても駄目だな w
448NAME IS NULL
2018/07/21(土) 12:27:57.38ID:5x2HyI6i
おまえの事やんけ
449NAME IS NULL
2018/07/21(土) 13:27:35.31ID:???
実行計画とか考慮したら、unionはないわw
450NAME IS NULL
2018/07/21(土) 15:38:38.03ID:???
>>448
>>444
いつものバカループ w
451NAME IS NULL
2018/07/21(土) 18:42:01.35ID:OaX/dGdR
>>449
実行計画がなんなのか分かってますか?

多少の知ったかぶりはかまいませんが、少しは謙虚にわからないことはわからないと言うようにしましょう。
452NAME IS NULL
2018/07/21(土) 18:46:09.10ID:???
その実行計画をやってみたいから、早くUnion使ったSQLをここに晒してくれ
453NAME IS NULL
2018/07/21(土) 18:48:49.51ID:???
unionの1回目のselectで、キャッシュに乗る
454NAME IS NULL
2018/07/21(土) 18:50:04.62ID:???
それぞれのselectが異なるのに?
455NAME IS NULL
2018/07/21(土) 18:55:37.55ID:???
バッファキャッシュ
456NAME IS NULL
2018/07/21(土) 19:22:15.63ID:???
キャッシュに乗るかどうかは実行計画とは直接は無関係だがな
キャッシュにのったからって不要なテーブルスキャンが許容できるわけではない
457NAME IS NULL
2018/07/21(土) 20:00:11.00ID:???
でっかいテーブルだとキャッシュに収まるのは無理
458NAME IS NULL
2018/07/21(土) 20:17:41.08ID:???
条件によってはインデックスしかアクセスしない可能性もあるしな
459NAME IS NULL
2018/07/21(土) 21:13:40.08ID:???
不要なテーブルスキャン
460NAME IS NULL
2018/07/21(土) 21:14:00.83ID:HTGK0eq2
>>451はアホやけどおまえらはその足下にも及ばんアホなんやで?
知らんかったやろ?
461NAME IS NULL
2018/07/22(日) 02:39:53.39ID:ODcS1lTE
>>460
実行計画ではなくコストだったと間違いを認めなさい。
462NAME IS NULL
2018/07/22(日) 11:27:50.93ID:zTS56Hn0
>>461
おまえが一番アホやなw
463NAME IS NULL
2018/07/22(日) 19:38:32.24ID:???
条件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);
464NAME IS NULL
2018/07/22(日) 19:48:47.06ID:???
case when
https://ideone.com/ceErb8

union
https://ideone.com/9388vP
465NAME IS NULL
2018/07/22(日) 20:05:59.94ID:???
unionにだけorder byあるとか
やるならちゃんとやって

まあunionはたいがいの場合でソートするんだが
unionの押しの人はunion allって言ってなかったっけ?

どうせならインデックスの有無も
466NAME IS NULL
2018/07/22(日) 20:43:15.80ID:???
case whenはそのままid順になるけど、unionはならなかった
union all使えば重複の除外が発生するし、変わらないんじゃない?
index付けてもunion内のsql実行に影響するだけで、
マージする性能には多分影響しない

続きは各自で
467NAME IS NULL
2018/07/22(日) 21:05:02.26ID:???
>>466
ただのunion はdistinctで重複除去、除去しないのがall指定
この例でunion allだと重複行がでるはずだぞ

caseはID順(おそらく主キーか物理格納順)でテーブル舐めてるからそのままID順だな
unionで順番変わるってことは、重複除去の方法がソート系じゃない可能性が高い
まあなんにしても、order by書かないと順番は不定ってのが原則なので
両方に書くか両方に書かないか合わせないと

indexは、unionの各whereには効くだろうけど、caseにはうまく効かないんじゃないかと
まあそれで実行性能がひっくり返るとしても、unionで書こうとは思わんが
468NAME IS NULL
2018/07/22(日) 22:25:29.43ID:???
>>464
ごめん9は間違いで8以上だったSQL直してくれる?
469NAME IS NULL
2018/07/23(月) 07:46:29.52ID:???
sql自体でなくて申し訳ないが,前の例で、10億レコードで,テーブルが列ストアで保持されているとした場合、whereでー発フィルタリングするのと、unionするのとどっちが効率的なのだろう?
条件が適用されるカラムのメンバー数にもよりそうな気もするが、どんなもんなんでしょうか
470NAME IS NULL
2018/07/24(火) 19:21:58.65ID:yAzT+3qO
やってみればいいのに。見た目がシンプルなのと処理の重さは反比例する。
471NAME IS NULL
2018/07/24(火) 21:25:13.19ID:???
見た目で決まるほど今のオプティマイザはアホじゃないし
472NAME IS NULL
2018/07/27(金) 12:11:49.90ID:???
質問です。

select a + b +c -d as 計算結果
where 計算結果 > 0

とすると行が表示されません。where句を外すと、
計算結果は0より大きい値でちゃんと出てきます。

where a + b +c -d > 0 

と書き換えると表示されたのですが、
where句でselectの as 別名 は使えないのでしょうか?
473NAME IS NULL
2018/07/27(金) 13:33:09.67ID:???
一部つかえるDBMSもあるようだが原則使えない
474NAME IS NULL
2018/07/27(金) 18:03:08.40ID:???
普通はselect句でつけた別名を使えるのはorder by句だけだな
475472
2018/07/27(金) 18:21:36.74ID:???
そうだったんですね
できそうなイメージだったんですが
ありがとうございます
476NAME IS NULL
2018/07/27(金) 22:18:42.27ID:???
いい加減使えるようにしろよとは思う
477NAME IS NULL
2018/07/27(金) 22:54:00.11ID:???
select a + b +c -d as 計算結果
having 計算結果 > 0
478NAME IS NULL
2018/07/28(土) 13:12:09.25ID:tm98Iqt0
>>475
よく考えてくれ。WHERE句が先に評価され、そのあとにSELECT句の選択リクトが評価される。

いったんSELECTした結果に対して、絞り込みのWHERE句つきSELECTを再度するのを基本としてしまうと、SELECT文は常にフルテーブルスキャンをして、その結果を一時的に保管して、保管した結果に対してさらに検索することになる。
479NAME IS NULL
2018/07/28(土) 13:13:33.29ID:tm98Iqt0
>>471
だから見た目をシンプルにするのは意味がないと言っているのだが?
480NAME IS NULL
2018/07/28(土) 13:36:47.39ID:???
>>478
なんでそんな難しいことを考えるんだよ…
> select a + b +c -d as 計算結果
> where 計算結果 > 0
ってあったら
select a + b +c - d as 計算結果
where a + b +c - d > 0
って展開すれば良いだけだろ
481NAME IS NULL
2018/07/28(土) 14:05:45.09ID:???
>>479
>見た目がシンプルなのと処理の重さは反比例する
反比例ってどういうことだ?
基本的にはシンプルなSQLほどオプティマイザの裁量が広がって有利なんだが
482NAME IS NULL
2018/07/28(土) 15:08:24.77ID:???
>>478
この場合はどっちにしても全行計算してから絞り込むから大差ないような・・・
483NAME IS NULL
2018/07/28(土) 15:12:20.21ID:???
>>478
ああ一時テーブルのメモリと、捜査が2度手間になるのか
whereが先だったのか
どっかのサイトにselect結果をwhereで絞り込むって書いてたけど
484NAME IS NULL
2018/07/29(日) 09:18:12.72ID:???
ちょっと前のunionの話だけど
処理効率や保守性はおいといて、10個の条件のうち9個を満たすものをとるのにunion使ってどうやるの?
485NAME IS NULL
2018/07/29(日) 09:28:13.30ID:???
それを書いた本人の真意はわからんけど、

(1番目以外の9個を満たすクエリ)
union
(2番目以外の9個を満たすクエリ)
union
:
でできるはず。
486NAME IS NULL
2018/07/29(日) 09:43:51.54ID:???
>>485
それselectごとに条件9個ずつ書くの?
487NAME IS NULL
2018/07/29(日) 09:46:11.97ID:???
ごめん、保守性はおいといてって言ったの自分だね
たしかにそのやり方ならできるか
488NAME IS NULL
2018/07/29(日) 09:52:42.06ID:???
自分なら union 化して
where x.cond > 条件 group by id having count(*) > 件数
を副問合せにする
489NAME IS NULL
2018/07/29(日) 10:21:47.78ID:???
>>485
unionだけだと元は異なるレコードでも結果が同じだったら1レコードにされちゃう
かと言ってunion allだと複数の条件にヒットするレコードが複数出ちゃうよ
490NAME IS NULL
2018/07/29(日) 10:52:46.82ID:???
>unionだけだと元は異なるレコードでも結果が同じだったら1レコードにされちゃう

主キーが存在しないテーブルならともかく、適切なselectリストにすりゃいいだけ。

>かと言ってunion allだと複数の条件にヒットするレコードが複数出ちゃうよ

(1番目を満たさずそれ以外の9個を満たすクエリ)でおk。
491NAME IS NULL
2018/07/29(日) 14:29:08.48ID:???
なんでいまさら話をループさせてるんだ
492NAME IS NULL
2018/07/29(日) 19:49:38.36ID:0RlqY4hk
>>491
ここに常にいるキチガイ
493NAME IS NULL
2018/08/21(火) 16:31:56.98ID:???
(プライマリではない) authorがaaaとbbbの最新のレコードをそれぞれ1件ずつ取得したいのですが
どのようにしたらいいでしょうか? 最新かどうかは updated_at で判定できます

SELECT * FROM news WHERE author IN ('aaa', 'bbb')
494NAME IS NULL
2018/08/21(火) 17:41:25.74ID:???
>>493
もう少し詳しく書いて欲しい
テーブル定義と、updated_atでどうやって判定するのかなど
495NAME IS NULL
2018/08/21(火) 18:04:34.79ID:???
>>3じゃないのか?
496NAME IS NULL
2018/08/21(火) 21:30:01.28ID:KIn4MzQg
MySQLでREPLACE関数を使って複数行を置換するにはどうすればいいのでしょうか?

例えば「body」というカラムがあるとして以下の値が登録されているとします。
あいうえお
かきくけこ
さしすせそ

これをREPLACEして「さしすせそ」のみ残したい時、

UPDATE news SET body=REPLACE(body,"あいうえお\r\nかきくけこ\r\n","")

としたのですが、置換できません。
497NAME IS NULL
2018/08/21(火) 21:57:14.63ID:???
>>496
出来ると思うんだが、出来ないとしたら
bodyの文字列中改行コードが、
replace関数で指定したものと違っているのかも知れない。
498NAME IS NULL
2018/08/22(水) 01:37:20.21ID:???
>>497
\nにしても駄目でした。一行だけだと置換できるんですけどね・・・
499NAME IS NULL
2018/08/22(水) 01:59:39.45ID:???
>>498
select hex(body) from table名
とやって、
改行部分を16進数で見てみるとか
500NAME IS NULL
2018/08/22(水) 03:03:57.79ID:???
>>494-495
遅くなりました
>>3 のをいろいろ弄ってみて実現できました
よく見ず質問してしまいすいません。
ありがとうございましたm(_ _)m
501NAME IS NULL
2018/08/28(火) 06:20:52.88ID:FcSigLis

板復帰(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!
502NAME IS NULL
2018/08/30(木) 23:59:48.61ID:???
すいません。DB2でフラッシュバッククエリのコマンドを実行したいのですが、
ググってもOracleのコマンドしか出てきません。
どなたかご教授お願いします。
503NAME IS NULL
2018/08/31(金) 05:07:54.46ID:???
>>502
IBM DB2 総合スレ2
http://2chb.net/r/db/1166153254/
504NAME IS NULL
2018/08/31(金) 14:35:48.08ID:???
そっちのスレは過疎ってますし、そもそも回答になってませんが・・・
505NAME IS NULL
2018/08/31(金) 14:57:35.99ID:???
ここは特定のDBMLの操作方法を質疑するスレじゃないので
506NAME IS NULL
2018/08/31(金) 18:08:53.87ID:???
DB2にフラッシュバッククエリなんかないでしょ
ぐぐるとOracleのLogMinerみたいな機能ですら
db2ReadLog APIを使って自分で実装しろと出てくる
507NAME IS NULL
2018/08/31(金) 22:40:03.31ID:???
アクセスでの開発なのですが
氏名,エラー内容.エラー回数
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回目

みたいにしても重たいのです
どなたか助けてください
508NAME IS NULL
2018/09/01(土) 16:24:39.15ID:???
>>507
エラー回数は最大2ではなくNなわけ?
かりにNだった場合SELECT句はどうするつもり?
509NAME IS NULL
2018/09/01(土) 18:48:49.07ID:???
エラー回数は有限で3回までです。
accessがtempテーブルも使えず、実体テーブルにselect into しても
それだけなのに、2万件で1時間近くかかってしまっています。
助けてください。。。今日そのことばかり考えながら家事をしていました。つらい
510NAME IS NULL
2018/09/01(土) 19:17:06.19ID:he6NSwN/
抽出クエリ自体を実テーブルにして氏名にインデック貼って

SELECT
氏名,
Max(IIf(エラー回数 = 1,エラー内容,Null)) as 1回目,
Max(IIf(エラー回数 = 2,エラー内容,Null)) as 2回目,
Max(IIf(エラー回数 = 3,エラー内容,Null)) as 3回目
from 抽出クエリ結果
group by 氏名
order by 氏名

とかかな
511NAME IS NULL
2018/09/01(土) 19:31:19.34ID:???
抽出クエリってやつは実テーブルじゃなくて何かの条件で抽出した状態のビューを言ってるわけ?
それとDBがアクセスってだけでSQL自体は外部ツール(C#とか)から実行するの?
512NAME IS NULL
2018/09/01(土) 19:32:05.22ID:???
適切なスレが見当たらないんで、ここで聞くんだけど
sqlから、ER図を生成する方法ってある?
できればoracleで。
イメージ的には、プログラミングで言うと
ソースコードからクラス図を生成するイメージ
513NAME IS NULL
2018/09/01(土) 19:35:46.49ID:???
>>510
ありがとうございます。
実テーブルに入れるというところで30分以上かかってしまい。
select だけだと1分程度で抜けるのが、insert selectでも select insertでも
30分かかってしまって、その後にクエリ流すのに時間が掛かってしまっています。

>>511
from 句の中に書いたサブクエリになります。
アクセスに対して、エクセルのVBA側から呼び出しをかけています。
514NAME IS NULL
2018/09/01(土) 19:39:12.73ID:he6NSwN/
>>512
SQLってDDL分ってこと?
実態テーブルからER作成するのは
有償ツールはいくつかあるけど
とりあえずA5とかで試して見たら?
https://a5m2.mmatsubara.com/help/ER/
FKとか指定してないとさすが無理だけど
515NAME IS NULL
2018/09/01(土) 19:59:08.40ID:???
>>514
DDLではなく、普通のselect分です。
DBにつながる環境で、FKとかはDBから拾ってきてほしい想定です。
実テーブルから、ER図ではなく、
実テーブルと、select分から、ER図を作ってほしい
516NAME IS NULL
2018/09/01(土) 19:59:37.04ID:???
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ビューで動いた奴
517NAME IS NULL
2018/09/01(土) 20:00:42.02ID:???
エラー内容ってカラムが実は1つのテーブルから複数もってくるけどはしょられたら破綻するけどね
518NAME IS NULL
2018/09/01(土) 20:13:28.57ID:???
>>516
これはデータ件数が多いと時間かかりそう
レコード1件ごとカラムのサブクエリが実行されるだろう
519NAME IS NULL
2018/09/01(土) 20:30:03.52ID:???
>>518
おれもそうおもったんだよね
抽出テーブルがサブクエリだとなおさらだな

2万件っていってるのは元データが2万なのか、
氏名で出力する行が2万件なのか(2万×最大3列=6万)なのかで結果がかわるけど、
どっちなんだろな
520NAME IS NULL
2018/09/01(土) 20:58:07.07ID:???
>>516
ありがとうございます。今一番早く出来たのがその形で、それで1時間掛かっています。

抽出対象が2万件。
そのそれぞれに最大3列、エラーが発生し得る状態です。

サブクエリで抽出している下記のデータは、30万件ほどから抽出していて
氏名,エラー内容.エラー回数
A,ダメポ,1
A,無理ぽ,2
B,もうだめ,1
C,むり,1
抽出もとは最終的に100万件ほどまで増えます。

30万件から抜くクエリは1分程度なので、×3でいけると思っていたら1時間掛かるようになってしまい。
521NAME IS NULL
2018/09/01(土) 22:02:50.69ID:???
>>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して何もせずにループだけする
522NAME IS NULL
2018/09/01(土) 22:05:12.33ID:4FUN7IZm
いまなんの話題?3行で
523NAME IS NULL
2018/09/01(土) 22:53:54.26ID:???
s
q
l
524NAME IS NULL
2018/09/01(土) 23:00:11.61ID:???
>>521
状況をきちんと伝えられていなくて申し訳ないです。

30万行の元データ→エラー回数抽出サブクエリ(@ 件数は2万件程度抽出)→エラー回数を列別変換(A)
という流れです。

@は1分程度で1クエリは抽出完了、Aは1時間掛かってしまっています
当初>>510のように作っていましたが、処理を見直し>>516のようなクエリに書き換えています。
@は分析クエリのように演算で回数を出しています。
525NAME IS NULL
2018/09/02(日) 03:03:08.10ID:???
>>524

>>510が正解じゃない?
インデックス効かせるには。
書き込み時間がかかるかもしれないけど。

最終結果の使い方わかんないけど
VBAとかで2万件結果セットループで変数持ちとかじゃだめか。
526NAME IS NULL
2018/09/02(日) 07:52:34.77ID:???
>>524
> @は1分程度で1クエリは抽出完了
@の結果をアプリ側で整形するってのはできないの?
SQLは行列変換得意じゃないし
527NAME IS NULL
2018/09/02(日) 09:56:31.15ID:???
>>525-526
他のDB情報と最終的に結合して出力するためできればクエリでやりたいと思っていました。
ただ、どうしても時間が掛かるならVBA側で実装するのもありですね。

もう少し性能測定して、改善の見込みが無かったらVBAに乗り換えてみます。
諸々失礼しました。
528NAME IS NULL
2018/09/02(日) 17:58:27.97ID:???
>>515 って、無理ですかね。
529NAME IS NULL
2018/09/02(日) 18:52:28.60ID:???
実テーブルから定義を引ければ十分だと思うけど、なぜselect文が必要で
>>514じゃ何が足りないのか、質問の意図が誰も理解できないんだと思う。
530NAME IS NULL
2018/09/02(日) 22:22:42.98ID:???
>>514 に書かれてるようにFKないんじゃね?
join の結合条件見ろと
531NAME IS NULL
2018/09/03(月) 03:08:13.74ID:xugX4t13
>>496
なんでreplace関数を使わなきゃいけないのか?

where句の条件が あいうえお、かきくけこ で SET句の値が さしすせそ でいいだろ。
532NAME IS NULL
2018/09/03(月) 23:51:22.93ID:???
>>531
さしすせそは不定で指定できないとか。
最初の2行はヘッダーとか特定できるなにかなんじゃないかな。

>>496
ちなみにxampp5.6.12でテストしたら>>496のクエリでできたよ。

命令送ってる側とかで勝手に改行コード省かれちゃってるとか?

サーバーでログとってみたら?
533NAME IS NULL
2018/09/04(火) 13:40:14.68ID:Md9f/krD
>>532
MySQLと質問者は書いているのに、なんでXAMPPという何をどう使っているのかわからないくくりで答えているのか?
534NAME IS NULL
2018/09/04(火) 13:45:29.38ID:Md9f/krD
改行コードを含む文字列の置換を言っているのか。単に改行コードがSQLの改行コードとみなされるような環境で発行してねえだろうなw
535NAME IS NULL
2018/09/04(火) 20:40:30.85ID:???
質問者もMySQLとしか書いてないので環境がよくわかんないから
とりあえずMySQL使ってればなんでもいいかとおもって。
536NAME IS NULL
2018/09/15(土) 02:10:48.09ID:???
個人からの申請で、登録、変更、削除を受け付けます。
その時、変更だけしか申請していない人を抽出するSQLはどう書いたらいいですか。

変更と登録、変更と削除など、他の申請を出した人は除いて変更だけの人を抽出したいです。
537NAME IS NULL
2018/09/15(土) 02:23:19.42ID:???
>>536
そのDBシステムで、
受け付けた登録、変更、削除をどう扱っているか次第
538NAME IS NULL
2018/09/15(土) 12:40:37.04ID:???
>>536
そのテーブルのカラム名すらも書けないんならSQLいじるの止めたほうが良い
539NAME IS NULL
2018/09/15(土) 13:28:08.11ID:???
>>536
個人Id | 申請
------+-----
001 | '登録'
002 | '登録'
001 | '変更'
002 | '削除'
003 | '変更'
で003だけ欲しくてSQL-Server使ってるとエスパー
select 個人Id from テーブル where 申請 = N'変更'
except
select 個人Id from テーブル where 申請 <> N'変更'
540NAME IS NULL
2018/09/15(土) 17:44:40.73ID:RSsWpwqw
監査の話かと思った
541NAME IS NULL
2018/09/15(土) 18:18:49.96ID:dWsaBm9G
>>539
「SQL Server」を「SQL-Server」と書きたい理由を教えてくれ。
542NAME IS NULL
2018/09/15(土) 20:31:26.68ID:Cd4+ZhgT
【ちびまる子、乳ガン】 モー娘がヒキ逃げなら  <急に基準変更して逃走>  トー電はベク逃げかな
http://2chb.net/r/liveplus/1536979182/l50


関東の子供が、東電にベク逃げされて、棺桶が売れてる!
543NAME IS NULL
2018/09/15(土) 20:41:56.63ID:???
>>541
単なる好みだけどそれが何か?
544NAME IS NULL
2018/09/16(日) 06:31:37.33ID:znPzt7LE
製品名は変換する目的は何か?
545NAME IS NULL
2018/09/16(日) 08:31:26.77ID:???
お前みたいな日本語怪しいやつをあぶり出すため
546NAME IS NULL
2018/09/18(火) 15:27:23.99ID:dZAMkAe5
固有名詞を改変したら駄目だろう
547NAME IS NULL
2018/09/18(火) 23:19:39.80ID:EwCoq+cp
ええやろw
548NAME IS NULL
2018/09/19(水) 01:25:54.61ID:???
商標権を侵害してるな
549NAME IS NULL
2018/09/19(水) 11:22:26.10ID:SAO4z521
半角スペース恐怖症なんだろうな。
550NAME IS NULL
2018/09/19(水) 19:30:55.56ID:???
誰でも間違いはある
気にするな
551NAME IS NULL
2018/09/19(水) 21:03:38.93ID:f2yuv0SC
製品名を正しく書けないやつはたいてい危険人物。だいたいよくわかっていない。
552NAME IS NULL
2018/09/19(水) 23:26:57.94ID:UE0WOPkY
なんやこの病的すぎるバカw
553NAME IS NULL
2018/09/20(木) 08:02:36.86ID:???
内容に突っ込めないから製品名に突っ込むしかないんだろ
どうでもええわ
554NAME IS NULL
2018/09/21(金) 14:45:01.05ID:wlRN+aGs
お客相手に間違えなくて良かったじゃないか
555NAME IS NULL
2018/09/21(金) 15:39:47.79ID:???
ところで、IDが出てたり出てなかったりするのは何故?
556NAME IS NULL
2018/09/21(金) 21:51:00.56ID:???
>>554
そんなもんを気にしてるお客なんてお前の脳内にしかいないけどなww
557NAME IS NULL
2018/09/21(金) 21:52:53.93ID:???
>>555
sageかどうかでしょ
そもそもsageてない奴のレスは見る価値ないし
558NAME IS NULL
2018/09/21(金) 22:45:10.80ID:LJZuek3J
責任をとりたくない奴は、IDを隠すってこと
559NAME IS NULL
2018/09/21(金) 23:13:57.63ID:???
責任? w
560NAME IS NULL
2018/09/21(金) 23:43:14.92ID:J7Fz2JlS
図星に脊髄反射しとる奴、おる?
561NAME IS NULL
2018/09/22(土) 07:06:16.16ID:???
図星に脊髄反射しとる奴 ⇒ >>558
562NAME IS NULL
2018/09/22(土) 13:24:41.08ID:/G0Wh7Kz
>>557
いまどき上げ下げかw
563NAME IS NULL
2018/09/22(土) 19:23:47.16ID:???
sageるのって荒らしに見つからんようにとかそんな理由だったっけ?
今だと勢い順か新しい順、あるいはスレ検索して見るからもう完全に意味ないよな、わざわざ荒らすやつも激減してるし
ましてこんな過疎版じゃ気にするだけ無駄
564NAME IS NULL
2018/09/22(土) 20:12:24.86ID:???
質問スレだと、質問者は必ずageてって板もある
ID出た方が成りすましを防げるからやり取りで
混乱しなくて良いと言う側面もある
565NAME IS NULL
2018/09/23(日) 10:30:22.73ID:???
質問スレはそんなルールあったね
sageるとID出ないのはDB板の仕様か
技術的な話をするんだから一律IDつけたほうが勝手がいいと思うけどなあ
専ブラがデフォルトsageになってていちいち削除すんのもめんどいし
566NAME IS NULL
2018/09/29(土) 20:35:17.15ID:W8T9QA3v
質問するのでIDありで・・・
リレーショナルデータベース=JOINで複数のテーブルをまたいでクエリを投げられる

という意味?
567NAME IS NULL
2018/09/29(土) 20:51:07.76ID:???
リレーションってのは要はテーブルだ。
リレーションでできているデータベースだからリレーショナルデータベース。
568NAME IS NULL
2018/09/29(土) 21:24:57.55ID:W8T9QA3v
レスありがとう。
リレーショナルではないデータベースというのは、テーブルでは無いデータベースが想像つかないな・・・。
二次元的なものではなく、テキストに羅列されているだけという感じだろうか。
昔pc-98で桐ver2とか名前だけは知っていたけど、あの頃はすでにテーブルという概念があったのかしら?
569NAME IS NULL
2018/09/29(土) 21:34:54.80ID:9EBEb433
すごい会話だなw
570NAME IS NULL
2018/09/29(土) 21:36:14.75ID:9EBEb433
>>568
自作自演?
571NAME IS NULL
2018/09/29(土) 21:38:54.14ID:???
>>568
桐もDBASEもリレーショナルデータベースだな
テーブルであるならそうかといえば、ちょっと違う

複数のテーブルを関係性で紐付けが出来るなら
リレーショナルデータベースと呼んで良いと思う

Excelの表はテーブルだけど誰もそうは呼ばないしな
572NAME IS NULL
2018/09/29(土) 22:03:17.34ID:???
情報処理試験とかデータベースの勉強をすれば初めの方で説明されているはずだけど、
リレーショナルの前には階層型やネットワーク型といったデータベースの形式があった。

ついでに言えば、リレーショナルデータベースには「複数のテーブル」などという要件はない。
複数のテーブルはその直積である1テーブルと等価なんで。
573NAME IS NULL
2018/09/29(土) 23:12:42.69ID:9EBEb433
なんか変な素人が出てきたなw
574NAME IS NULL
2018/09/29(土) 23:27:01.69ID:???
普通はRDBMSと言えばリレーショナルデータモデルを表現できるだけでなく
ACID特性を備えるのが必要条件とされる
最近流行りのNoSQLなんかはリレーショナルデータモデルを表現するものではない上に
ACID特性のいずれかを満たさないのが普通だったりする
575NAME IS NULL
2018/09/29(土) 23:29:52.65ID:9EBEb433
NoSQLが最近ものだと?

タイムマシンで過去から来た人間の書き込み?
576574
2018/09/30(日) 00:54:24.60ID:???
しまった
自ら正解を出すことはできず文句しか言わない人に絡まれてしまった
577NAME IS NULL
2018/09/30(日) 01:17:21.17ID:???
NGにすると吉
578NAME IS NULL
2018/09/30(日) 09:28:56.36ID:???
おまえらが知る前から俺は使ってるんだ( ・`ー・´) +
579NAME IS NULL
2018/09/30(日) 14:41:59.34ID:???
>>574
RDBとDBMSの区別がつかないなら、ややこしくなるだけだから黙っとけな
580NAME IS NULL
2018/09/30(日) 22:46:54.70ID:???
プライマリキーをフォーリンキーにすることはできますか?
581NAME IS NULL
2018/10/01(月) 00:24:20.26ID:???
できるが変な設計だなとは思う
582NAME IS NULL
2018/10/01(月) 12:38:28.99ID:???
>>581
時系列データのテーブルが2つあって
時間をフォーリンキーにしたいんですけどおかしいですか?
583NAME IS NULL
2018/10/01(月) 12:51:24.62ID:Q6K7qC3N
>>580
単に1対1のテーブルだからおかしくはない。
584NAME IS NULL
2018/10/10(水) 11:28:56.03ID:???
インデックスが使われるSQL文の書き方というのは、例えば出庫データに
商品コード順+出荷日順+伝票番号順というインデックスを作っておいて
SELECT * FROM 出庫データ WHERE 商品コード='A01' ORDER BY 商品コード, 出荷日, 伝票番号
みたいにするとレスポンスが速くなるということでしょうか?
585NAME IS NULL
2018/10/10(水) 21:59:19.97ID:G1VCUlYl
>>584
プラス記号の意味がよくわからんが
CREATE INDEX(商品コード,出荷日,伝票番号)
という複合主キーを作成すると
例示のSQLは速くなるだろうが
ただしインデックスの順序と異なる
ORDER BY 出荷日,商品コード
などと場合は効かない
586NAME IS NULL
2018/10/11(木) 11:55:45.37ID:???
>>585
ありがとうございます
587NAME IS NULL
2018/10/11(木) 23:22:18.86ID:LDSiJwGe
>>584
忠告しておくが、インデックスが使われるSQLを書くのではなくて、問い合わせの内容とインデックスが必要かどうかを考えてSQLを書く。

SQLがこうだから、このSQLはこのインデックスが使われるとSQLだけでは言いきれない。
588NAME IS NULL
2018/10/11(木) 23:32:44.06ID:ppvirY+z
>>586
複合主キーじゃないわ複合インデックスね

>>587の言うように
実際に効くかどうかは実行計画で決まるので
インデックスを使ったかどうかは
実際の実行計画を取得しないとわからない
オプティマイザが意図したインデックスを使ってくれない場合
ヒントで特定インデックス使用を強制することもDBMSによっては可能
589NAME IS NULL
2018/10/13(土) 19:43:23.58ID:???
SQL質疑応答スレ 18問目 	->画像>2枚
590NAME IS NULL
2018/10/14(日) 17:09:16.28ID:EhhxMLoo
常にサクラのサイトが応援している ノーザンコペルニクス
http://2chb.net/r/blog/1538500447/
591NAME IS NULL
2018/10/14(日) 20:22:51.35ID:???
 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正國民投票法』、でググってみてください。
(へいわ)は、勝ち取るものです。拡散も含め、お願い致します。
592NAME IS NULL
2018/11/01(木) 06:26:01.46ID:imTVWlJr
質問です。
以下のようなテーブルがあったとします。
id|name
------
0|aaa
1|bbb
2|ccc

aaa,bbb,ddd,eeeを呼び出し側から与えて、nameにない項目(dddとeee)を取得したいです。
こういう場合どのように書けばよいでしょうか。
擬似的にaaa,bbb,ddd,eeeの項目をテーブルのように扱えればできそうですが、やり方がわかりません。
SQLiteを使っていますが、汎用的な書き方でできればしたいです。
よろしくおねがいします。
593NAME IS NULL
2018/11/01(木) 09:10:57.14ID:???
>>592
case when thenとかは?
594NAME IS NULL
2018/11/01(木) 11:56:15.87ID:???
汎用的には、テーブルを作ってしまうのが良いと思う
595NAME IS NULL
2018/11/01(木) 12:45:48.88ID:pgw6fBBH
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句が機能しません。どうすれば機能しますか?
596NAME IS NULL
2018/11/01(木) 13:00:22.93ID:???
'mname' の囲みいらない
597NAME IS NULL
2018/11/01(木) 14:17:52.92ID:imTVWlJr
意見ありがとうございました。
汎用的なのは諦めて、SQLiteでは以下で疑似的なテーブルができるようなので、これをもとにSQLを考えていこうと思います。
WITH t(name) AS (SELECT * FROM (VALUES ("aaa"), ("bbb"), ("ddd"))) SELECT * FROM "t";
598NAME IS NULL
2018/11/01(木) 19:59:14.73ID:vMwdzdp/
>>595
行頭に,を書く悪習はいいかげんヤメロ
599NAME IS NULL
2018/11/01(木) 21:02:02.93ID:???
行頭に,を書くとどういう問題があるんだ?
600NAME IS NULL
2018/11/01(木) 21:32:48.31ID:vMwdzdp/
>>599
ヴィジュアル的に認識しにくい
601NAME IS NULL
2018/11/01(木) 21:50:22.90ID:???
まさかそれだけ?
602NAME IS NULL
2018/11/02(金) 09:06:50.55ID:???
>>599
見た目にブサイク
(個人の感想です)
603NAME IS NULL
2018/11/02(金) 09:48:07.02ID:???
膨大なカラム数があって、スクリプトで処理しているときには都合が良いかもしれないが、
手作業で編集する分にはどっちでもいい気がする
604NAME IS NULL
2018/11/02(金) 12:32:46.28ID:c/Fx/3hC
コードは読むもんだと教わらんかったんかおまえら?
ヴィジュアル問題の大切さがいまいちわかっとらんな
605NAME IS NULL
2018/11/02(金) 13:13:36.22ID:DS+sU5kd
前カンマの方が打ち忘れが減るので
自分はこちらのヴィジュアルが合っているらしい
606NAME IS NULL
2018/11/02(金) 19:10:39.71ID:ckbyV4Q5
それヴィジュアルちゃうやんw
607NAME IS NULL
2018/11/02(金) 19:39:46.15ID:???
前にカンマの方がコメントアウトする時に楽
608NAME IS NULL
2018/11/02(金) 22:38:08.71ID:ckbyV4Q5
だからヴィジュアルちゃうやんそれ
しかもどっちゃでも変わらんしw
609NAME IS NULL
2018/11/02(金) 22:53:44.45ID:???
カンマの忘れとか、余分なカンマとか、割とよくやるw
610NAME IS NULL
2018/11/03(土) 03:58:33.81ID:Pv5mB3Rz
最近JSONとか末尾カンマ無視するのあるよね
あれ導入されれば後ろでもいいんだけどな
前の方が行カット&ペーストで入れ替えやすい
611NAME IS NULL
2018/11/03(土) 09:51:12.69ID:JBJEgXB4
前カンマの方が綺麗だと思うけどなあ
カンマと列名の間にタブなりスペースなり入れてカンマの位置を揃えるの
テキストエディタで矩形選択を使ってごりごり編集するのに便利なのだ
612NAME IS NULL
2018/11/03(土) 10:58:19.38ID:???
人の好きずきの問題をここで語られても
613NAME IS NULL
2018/11/03(土) 11:34:40.41ID:???
caseの件
614NAME IS NULL
2018/11/04(日) 12:09:42.60ID:???
書式整形ソフト使って好きな形で読め。
--のコメントさえなければSQLは改行なし
で書けるんだから読むやつが好きに整形しろ。
ここで個人の好みの書式の話しされると
うざい!!
615NAME IS NULL
2018/11/04(日) 12:23:08.21ID:???
ちょっと難しい問題を出してみて
そうしたら、多分静かになるから
616NAME IS NULL
2018/11/11(日) 17:44:06.06ID:DVzqXgBV
そもそもカンマがいらなかったんだよな。

英文っぽくしたためにカンマ区切りにしてしまった。

列名の区切りは半角スペースか改行でよかった。
617NAME IS NULL
2018/11/23(金) 19:38:48.29ID:NImj8hV3
質問させてください。
使っているのはSQLite(Python)です。

あるテーブルに、たとえば性別、血液型、職業というカラムがあって、
それぞれ、男、A、会社員、などと、データが入っているとします。
これら3つのカラムの中身について、テーブル内にある組み合わせの
パターンをすべて抽出したいのですが、sqlでどのように書けば効率がよいでしょうか?

抽出後、(男、A、会社員)は何名、(女、A、会社員)は何名、、、と
集計することが目的です。テーブルにより起こる組み合わせが様々なので、
都度調べる必要があります。

単純にFor文で1行ずつ調べて、過去にない組み合わせであれば外部のリストに
追加する形だと、非効率な気がしています。
良い方法があればお教えください。
618617
2018/11/23(金) 19:43:01.73ID:???
ぐぐっていたら、下記を見つけました。

https://www.dbonline.jp/sqlite/select/index9.html

DISTINCT を使えばできそうです。
ありがとうございました。
619NAME IS NULL
2018/11/23(金) 20:05:35.29ID:???
>>617
こうじゃないか

select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;
620NAME IS NULL
2018/11/24(土) 03:57:01.05ID:???
効率悪いし、何名か?が取れないと思う
621NAME IS NULL
2018/11/24(土) 03:58:33.86ID:???
distinctについてね
622617
2018/11/24(土) 12:35:17.12ID:???
>>619

ありがとうございます。
助かりました。
623NAME IS NULL
2018/11/24(土) 16:31:58.75ID:Pyo9iAE3
再び質問です。
教えてもらった

select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`;

で得られる'人数’を同じテーブル内の別カラムに保存したいと思い、
カラムは事前に作成しておいて、

update 'テーブル' set '人数のカラム' =
(select `性別`,`血液型`,`職業`, count(*) as `人数`
from `テーブル`
group by`性別`,`血液型`,`職業`)

としてみたのですが、group byの最後のグループのcountの結果が
全部の行に上書きされてしまいます。

各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。

(目的は、その人(各行)の所属するグループの人数を個別に保存することです。)

よろしくお願いします
624NAME IS NULL
2018/11/24(土) 17:14:07.61ID:???
>>623
> 各行毎に所属するグループの人数を記録するにはどう書けばよいでしょうか。
> (目的は、その人(各行)の所属するグループの人数を個別に保存することです。)
そんな設計やめなよ…
レコードに追加/削除/更新する度にその人数も更新しないとだめだし
毎回求めてもよほどでかい表でない限りは問題にならないだろ
625NAME IS NULL
2018/11/24(土) 17:28:12.86ID:???
>>623
使用意図はわからんが、どうしても一時的にテーブルに保存したきゃUPDATEじゃなくて、DELETE→INSERTでよくね?
オイラならテーブル変数使うけど
626NAME IS NULL
2018/11/24(土) 17:32:36.45ID:???
>>624

コメントありがとうございます。
実はモデルをすり替えて質問していまして、
データを書き換えての繰り返し計算に使いたいのです。

その後、order by でなく、select以下のテーブルをtable as Tなどとしてwhere句で’テーブル’とTの要素が等しい時に限定したら一応できました

何故かブロックされたのでスマホから
627NAME IS NULL
2018/11/24(土) 17:49:44.47ID:Pyo9iAE3
>>625
使用意図は、エクセルの表計算のように、
左のカラムにデータがあって、それを元に
右の方のカラムに途中計算を書いていって、
最後に得られた結果の誤差が減るように
また最初の方から計算を繰り返すような感じです。

1巡の計算が大きすぎて記録を残したいのですが、ご指摘の通り、記録が不要なところはテーブル変数がよさそうです
勉強してみます
628NAME IS NULL
2018/11/24(土) 17:50:56.49ID:???
オレ多分頭悪いんだろう
>>626 で何を言っているのかよく分からない

愚直に>>623の要求通りのものを書くとすれば
`テーブル`に`人数`カラムを追加したとして
update `テーブル` t1 set
`人数` = (
select `人数` from (
select `性別`,`血液型`,`職業`, count(*) as `人数` from `テーブル`
group by`性別`,`血液型`,`職業`
) t2
where
t1.`性別` = t2.`性別` and
t1.`血液型`= t2.`血液型` and
t1.`職業` = t2.`職業`
);

でも、こんなこと実際にはしないし、
もっと良い方法が必ずあるはずだし
見直した方がいい
629NAME IS NULL
2018/11/24(土) 18:02:53.98ID:Pyo9iAE3
>>628

626が意味不明で申し訳ないです。
書かれておられるように自分もwhereで
比較しました。

計算は各行に対してするのですが、
それが所属するグループの平均等の計算値も
途中計算で何度もつかうのです
それで、各行にそれを入れておきたいのです

なんだか変な事をやってるみたいで恐れ入ります
630NAME IS NULL
2018/11/24(土) 18:07:07.78ID:???
結局何をしたいのかさっぱり理解できないけどわざわざ違うモデルで答えさせるとか失礼な事するやつだからスルーしとくわ
631NAME IS NULL
2018/11/24(土) 18:18:02.74ID:???
質問をシンプルにしたくてモデルを
変えましたが、失礼と思われたようで
済みません
632NAME IS NULL
2018/11/24(土) 18:26:04.19ID:???
わざわざスルーするって宣言してる奴なんだからスルーでいいよ
633NAME IS NULL
2018/11/24(土) 21:20:38.92ID:???
合計値も平均値も割と簡単に計算出来ますし
それをテーブルに入れた方が良いのか
それともDBを見ているミドルの方で計算させた方が良いのか
全体の仕組みと性能で総合的に考えた方が良いかもしれません
634NAME IS NULL
2018/11/25(日) 01:43:22.84ID:+jUq2Ssi
http://altohumano.com/gt-r%e3%80%80%E8%B2%B7%E5%8F%96/
635NAME IS NULL
2018/11/26(月) 21:45:52.63ID:???
mysql,mariadbでmyisamが非推奨になったのはなぜですか?
innodbではbeginやcommitが使えるそうですが、メモ的なデータをinsertするぐらいなのですが、
それでもinnodbを使った方がいいのでしょうか?
636NAME IS NULL
2018/11/26(月) 22:42:16.59ID:???
そういうのは各RDBのスレがあるんだから、そこで聞けよ
637NAME IS NULL
2018/11/26(月) 23:01:09.03ID:???
>>635
こちらで聞いてみたら

MySQL SQL質問応答スレ
http://2chb.net/r/db/1478776715/
638NAME IS NULL
2018/11/27(火) 03:05:52.60ID:???
専用スレがあったのですね、誘導ありがとうございます。
639NAME IS NULL
2018/11/28(水) 16:28:54.70ID:ZtGMc1/U
【勝谷誠彦(57)死去】 人口が毎年20万人も減るほど被曝して応援させ、さらに70歳まで働いて応援
http://2chb.net/r/liveplus/1543371270/l50
640NAME IS NULL
2018/11/29(木) 10:10:36.91ID:???
以下のようなデータがあった場合、
name date rate
AAA 11/1 2000
BBB 11/1 900
CCC 11/1 500
DDD 11/1 700
AAA 11/2 2000
BBB 11/2 1200
CCC 11/2 500
DDD 11/2 700
AAA 11/3 2000
BBB 11/3 500
CCC 11/3 1500
DDD 11/3 700

最新のrateが1000未満だけを抽出するにはどうすればよいでしょうか?
DDD 11/3 700
BBB 11/3 500
641NAME IS NULL
2018/11/29(木) 11:07:44.82ID:???
>>640 こうかな?
select name, MIN(date), rate
from hoge
where rate < 1000
group by name, date, rate
642641
2018/11/29(木) 11:26:02.69ID:???
違った、こうか?
select a.name, a.date, a.rate
from hoge as a,
(select name, MAX(date) from hoge where rate < 1000 group by name, date) as b
where a.name = b.name and a.date=b.date;
643NAME IS NULL
2018/11/29(木) 13:04:58.18ID:???
SELECT * FROM a WHERE (name,date) IN (SELECT name,MAX(date) FROM a GROUP BY name) AND rate<1000
644NAME IS NULL
2018/11/29(木) 13:09:17.80ID:???
>>642
レスありがとうございます。
試したのですが、fromのselectでMAX(date)以外のも全て列挙されてしまいます。
DDD 2018/11/01 00:00:00
BBB 2018/11/01 00:00:00
CCC 2018/11/01 00:00:00
DDD 2018/11/02 00:00:00
CCC 2018/11/02 00:00:00
DDD 2018/11/03 00:00:00
BBB 2018/11/03 00:00:00
ちなみに使用DBはpostgresqlです。
645NAME IS NULL
2018/11/29(木) 13:14:19.05ID:???
>>643
おお!できました!!
ありがとうございます!
整理して理解します。
646NAME IS NULL
2018/11/29(木) 16:31:32.41ID:???
こういうときに色々意地悪な条件をついつい考えてしまう
最新日って言う場合、1件だけになるのか、
それとも同一日は全部該当にするのか
結果表示に時刻まで出てきていると悩んでしまう
その後の処理で何を使いたいかにもよるんだろうけど
647NAME IS NULL
2018/11/29(木) 23:50:24.51ID:0rvo1ya5
>>646
ここで質問してくるやつはいつも仕様などあまり考えていない。
648NAME IS NULL
2018/12/03(月) 19:05:02.42ID:???
2つの文字列カラムがあり、一方がもう片方の文字列から始まるものだけを抽出したい場合どうすればいいですか?
str1 str2
ABC ABCDEF
DEF aiu
GHI GHIxxx
JKL akasa
の場合、
ABC ABCDEF
GHI GHIxxx
649NAME IS NULL
2018/12/03(月) 20:36:59.12ID:???
>>648
str1の長さがstr2より短いことがわかってるなら
where left(str2, len(str1)) = str1
でいいかと
650NAME IS NULL
2018/12/03(月) 22:05:33.10ID:???
ためしてないけど、
where (str1 like str2+'%') or (str2 like str1 + '%')とかでどうだろう
651NAME IS NULL
2018/12/03(月) 22:51:42.17ID:???
>>648
んじゃ他ので
WHERE PATINDEX(str1 + '%', str2) = 1
652NAME IS NULL
2018/12/04(火) 10:41:43.68ID:???
>>649>>650>>651
お三方、ありがとうございました。
ばたばたしてて遅くなりましたが、確認できました。
653NAME IS NULL
2018/12/04(火) 11:20:56.24ID:???
>>650-651
str1とかstr2に'%'含んでても大丈夫だっけ?
654NAME IS NULL
2018/12/04(火) 11:59:27.62ID:KJK6oDpE
大丈夫。ただ+が使えるのはMS系だな。
後は使えるやり方に読み換えて
655NAME IS NULL
2018/12/09(日) 16:50:28.29ID:???
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 | マグロ
656NAME IS NULL
2018/12/09(日) 18:37:50.56ID:???
1,2,3をuionして4とjoinすればいいんだろうけど,何んでこんな設計?
657NAME IS NULL
2018/12/09(日) 18:58:36.79ID:???
欲しい結果がよくわからん

4に1〜3をJOINするだけじゃダメなのか?
658NAME IS NULL
2018/12/11(火) 21:37:14.11ID:???
この板誰も人いないけど、他にデータベースの話題扱う場所あるの?
659NAME IS NULL
2018/12/12(水) 07:07:27.08ID:???
ここはSQLの板だから
DBは別にあるだろ
660NAME IS NULL
2018/12/14(金) 13:53:33.51ID:???
スレはSQLだが、ここはデータベース板
661NAME IS NULL
2018/12/17(月) 17:59:53.76ID:???
Oracle 12cでのSQLに関する質問です。

2つのDATE型のカラムの差をhh:mm:ssで出力したいです。


開始日が2018/12/13 7:00:00
終了日が2018/12/17 17:30:30
だとして、この2つの差(経過時間)の出力結果は
106:30:30
と出したいのですが、出来るだけ簡単に計算して出す方法ありますでしょうか?
(時・分・秒でそれぞれ分解して掛け算して計算する方法がネット上にありましたが、もう少しシンプルにできないか模索しています。)
良い御知恵がありましたらご教示お願い致します。
662NAME IS NULL
2018/12/17(月) 18:56:46.00ID:???
質問です。
製品のメジャーバージョン、マイナーバージョンという2列があり、
メジャーバージョンが最大の中から、
マイナーバージョンも最大の行を取り出すにはどうしたらいいでしょうか?

postgresql9です。
663NAME IS NULL
2018/12/17(月) 19:37:22.24ID:???
>>662
postgresql9手元で動かせません。MariaDBです
テーブル名はproductと仮定しました

select * from product
where (major_ver,minor_ver) in (
select major_ver,max(minor_ver)
from (
select major_ver,minor_ver
from product
where major_ver = (select max(major_ver) from product )
) as t
);
664NAME IS NULL
2018/12/18(火) 00:22:00.75ID:???
>>663
なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか
ありがとうございます。
665NAME IS NULL
2018/12/18(火) 01:53:40.53ID:???
window関数使うともっと綺麗に書ける気がする

俺はwindow関数苦手だから書けないが
666NAME IS NULL
2018/12/18(火) 23:18:20.88ID:d1jtTCeB
>>661
あんたはDATE型が文字列だとでも思っているのか?
667NAME IS NULL
2018/12/27(木) 14:42:38.04ID:???
a. 顧客テーブル(顧客コード, 顧客名)
b. 商品テーブル(商品コード, 商品名)
c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数)

売上日, 顧客名, 商品名, 売上数

このように結果が表示されるSQL文を教えてください
668NAME IS NULL
2018/12/27(木) 15:25:29.94ID:???
何か基本のキって感じ
これが書けないとヤバいと思う
669NAME IS NULL
2018/12/27(木) 15:29:31.60ID:???
こういうのって内部と外部とどっちで繋ぐのがよろしいの?
それとも、JOINではなくWHERE内でキーを繋いであげればいいの??
670NAME IS NULL
2018/12/27(木) 19:19:36.61ID:???
joinを使いなされ
671NAME IS NULL
2018/12/27(木) 19:28:59.29ID:???
まだ書かれていない要求仕様があるんじゃない?
読み取れる範囲だとどっちでも良いように思う
672NAME IS NULL
2018/12/28(金) 01:38:09.32ID:???
>>667
select 売上日, 顧客名, 商品名, 売上数
from 売上テーブル
inner join 顧客テーブル on 顧客テーブル.顧客コード=売上テーブル.顧客コード
inner join 商品テーブル on 商品テーブル.商品コード=売上テーブル.商品コード

>>669
FROMに複数テーブル書いてwhereに結合条件書くのは今は推奨されない
内部か外部かは、商品テーブルにない商品売ってたり顧客テーブルにない顧客に売ってたりしない限りどちらでも同じ結果
どっちでもいいなら普通は内部結合にするんじゃね
673NAME IS NULL
2018/12/28(金) 08:19:26.48ID:???
>>672
ありがとうございます
メモしておきます
674NAME IS NULL
2018/12/28(金) 16:26:23.93ID:???
外部キーがあればinnerなければleft joinかな
675NAME IS NULL
2018/12/28(金) 22:03:16.91ID:???
このなかで一番美人なのって真ん中だよね?深キョンレベルだと思うのだが
ちなみに向かって右は目も鼻も整形してるって本人が公言してるけどそれ抜きにして誰が一番美人だと思う?
http://bigsta.net/media/1933567086757747003_3564907098
676NAME IS NULL
2018/12/28(金) 23:11:45.98ID:???
>>675
ブラクラ
677NAME IS NULL
2018/12/29(土) 10:58:20.71ID:???
>>672
そうなのか、勉強になったわー。
講習受けたときはJOINで教わったのに、実際にWHEREで書かれたの使ってる人たちがいて何でだろうと不思議だったんだけど、
歴史的な表記ぶれみたいなもんなんだな。
商品登録がない商品を売ってる可能性とかも全然思いつかなかった。
678NAME IS NULL
2018/12/29(土) 11:00:50.31ID:???
>>674
外部キー無いけど繋ぐって、どんなシチュエーション??
679NAME IS NULL
2018/12/29(土) 19:17:07.38ID:/5Z8+3Hw
>>677
結合条件をFROM句にしたのは標準SQL。ただ構文が長ったらしいのは失敗だった。
680NAME IS NULL
2018/12/29(土) 19:20:03.23ID:/5Z8+3Hw
>>672
推奨されない?

そんな嘘を書くな。

製品によって結合条件の構文の一部が非推奨になっただけ。
681NAME IS NULL
2018/12/29(土) 19:21:06.30ID:/5Z8+3Hw
>>677
上の世代からするとなんでFROM句に書きたがるのか疑問なんだよ。
682NAME IS NULL
2018/12/30(日) 09:09:04.13ID:???
どのテーブルにも脳死したかのように
createdとupdatedっていうtimestampなカラムがあるんですが普通なんですか?

都道府県テーブル
id 県名  作成日 更新日
1 北海道 2018略 2018略
2 岩手県 2018略 2018略

こんな具合に定数のような項目にもあります
683NAME IS NULL
2018/12/30(日) 10:10:04.61ID:???
>>681
結合の条件なのか検索の条件なのかが分かりやすいからだろ
684NAME IS NULL
2018/12/30(日) 10:21:46.45ID:???
Whereに結合条件書くと順番が制御できないから外部結合で結果が不定になることがあるってのがあったな
685NAME IS NULL
2018/12/30(日) 10:43:00.11ID:???
>>682
テーブル設計の基本ルールとして定めていることは特に珍しくはないと思う
本当に必要か?という議論をすることは可能だが
どっちに転んでも誰も得をしないので誰も言い出さない
686NAME IS NULL
2018/12/30(日) 11:02:25.62ID:BcIhhlay
>>682
マスタこそあった方がええで
687NAME IS NULL
2018/12/30(日) 11:30:39.57ID:???
普通かどうかよりも、テーブル設計書を見た方が良いかと
688NAME IS NULL
2018/12/31(月) 19:48:45.16ID:ZGRDdftU
みなさん、UFOはもう見られましたか? 世界教師マYトレーヤは、大暴落のあと出てこられます。
http://2chb.net/r/liveplus/1546223584/l50
689NAME IS NULL
2019/01/04(金) 14:56:54.45ID:/aoZaVbi
>>683
それを言い出すとWHERE句が不要になる。絞り込み条件もFROM句に書けるし、若い人間で知識がないとひとつのテーブルでレコードを絞り込んで結合させた方がいいなどと言い出して、全部FROM句に行ってしまう。
690NAME IS NULL
2019/01/04(金) 14:57:46.66ID:/aoZaVbi
>>684
根本的にSQLをわかっていない。SQLの書き方で処理が決まるわけではない。
691NAME IS NULL
2019/01/04(金) 15:01:34.82ID:/aoZaVbi
>>682
自分がシステムのテスト、運用・保守をしていたらわかるよ。複数人でテストをし始めたら、誰がいつ作ったのか、誰がいつ更新したのかわからなくなり、チーム作業が成立しない。
692NAME IS NULL
2019/01/04(金) 15:15:54.95ID:???
>>690
>SQLの書き方で処理が決まるわけではない
から、そのときの実行計画次第で結果か変わるって話だけど?
意味わかってレスしてる?
693NAME IS NULL
2019/01/04(金) 16:00:36.58ID:???
where句に結合条件を書こうとすると外部結合のとき困るよな
Oracleは(+)を使ってwhere句で外部結合が今でもできるけど推奨してない
SQL Serverでも似たような演算子が昔あったけどもうサポートされてない
694NAME IS NULL
2019/01/04(金) 16:24:03.25ID:???
from句は、集合を作る処理で、where句とselect句で選択範囲を決定しているんだろ?
695NAME IS NULL
2019/01/04(金) 16:47:25.40ID:/aoZaVbi
>>692
製品は人間の感覚を意識して実装されているが、SQLの仕様ではない。
696NAME IS NULL
2019/01/04(金) 16:52:31.34ID:???
>>694
RDBの教科書的に言えば直積(from)→選択(where)→射影(select)だな。
697NAME IS NULL
2019/01/04(金) 19:11:32.12ID:???
>>695
SQLの仕様的に不定な結果を除去できないから推奨しないって話をしてたんだけど

製品ってなに?SQLが人間の感覚を意識して実装されてるって?
3値論理とか、不定な結果とかが感覚的なのかよ。常人とは違う感覚もってるらしいな
698NAME IS NULL
2019/01/05(土) 00:09:10.98ID:apNAc+7p
言うことはわかるが、具体的にどの製品のデフォルト設定を想定しているのか?

外部結合の構文は、どの製品も標準SQLの構文にも対応するが、個々の製品の独自拡張もまた進んでいる。

あなたの言うことで気になるのが、実行計画によって結果がかわるという点で、そんなポンコツ製品は使わない方がいい。
699NAME IS NULL
2019/01/05(土) 00:13:44.83ID:???
議論するときはID表示にするかトリップ付けてくれよ
誰が何を言っているか追いかけられない
700NAME IS NULL
2019/01/05(土) 05:00:54.33ID:???
>>698
製品がポンコツなんじゃなくて、SQLのあいまいさの問題
まあ俺もかなり信じられなかったからな
実例もどっかで見たんだが見当たらん

AとBを外部結合したものにCを外部結合するのと、
BとCを外部結合したものにAを外部結合するのとでは結果が変わる
whereでの外部結合ではこの違いを表現できん、てな話だったはず

from A,B,Cと書くと、感覚的には前者で処理されると思い込むが
事項計画次第で後者で処理されることもあり得るって話だったはず
701NAME IS NULL
2019/01/05(土) 08:11:08.17ID:???
>>700
OUTER JOINが導入される前の外部結合は製品毎の独自拡張なんだから
そこにあいまいさがあるならその製品の問題になるでしょ。
それともOUTER JOINにまだ曖昧さが残っているということ?
702NAME IS NULL
2019/01/05(土) 20:01:36.96ID:???
>>701
だからwhereでの結合は推奨しないって話じゃないのか
703NAME IS NULL
2019/01/05(土) 20:54:38.32ID:???
「だから」ってのはどこに係ってるの?
>>684が言っているように結果が不定になるというのはどの製品のことかって話なんだけど。
704NAME IS NULL
2019/01/06(日) 11:15:47.69ID:LccedoWX
>>700
外部結合の条件が書かれていない。結合条件が異なるから結果が変わるのを実行計画の違いだと思っているのか?
705NAME IS NULL
2019/01/06(日) 15:33:10.43ID:???
>>703
たしかオラクルだったはず
今探しても見当たらん。結構トリッキーなSQLではあった気がするんだが
原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが

>>704
まったく同じSQLで結果が変わる事があるから不定って言うんだけど

まあ俺はwhereで結合する事はそれ以来やめたからもうどうでもいいや
実例だせない時点で説得力低そうだしな
706NAME IS NULL
2019/01/06(日) 16:02:53.03ID:???
Oracleなら、解釈があいまいになりそうな記述は最初から弾かれたと思うが。

>原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが

原理的もなにも、SQL標準のfromとwhereだけではそもそも外部結合を表現することはできないんで
各製品が独自に拡張していたわけ。そこに問題があるなら当然その製品の問題。
ってのは上で何度も指摘されているんだが。
707NAME IS NULL
2019/01/10(木) 02:55:12.86ID:OduNBQgg
ヒカキンの年収が10億超え!?明石家さんま・坂上忍も驚愕の総資産とは??
https://logtube.jp/variety/28439
【衝撃】ヒカキンの年収・月収を暴露!広告収入が15億円超え!?
https://nicotubers.com/yutuber/hikakin-nensyu-gessyu/
HIKAKIN(ヒカキン)の年収が14億円!?トップYouTuberになるまでの道のりは?
https://youtuberhyouron.com/hikakinnensyu/
ヒカキンの月収は1億円!読唇術でダウンタウンなうの坂上忍を検証!
https://mitarashi-highland.com/blog/fun/hikakin
なぜか観てしまう!!サバイバル系youtuberまとめ
http://tokyohitori.hatenablog.com/entry/2016/10/01/102830
あのPewDiePieがついに、初心YouTuber向けに「視聴回数」「チャンネル登録者数」を増やすコツを公開!
http://naototube.com/2017/08/14/for-new-youtubers/
27歳で年収8億円 女性ユーチューバー「リリー・シン」の生き方
https://headlines.yahoo.co.jp/article?a=20170802-00017174-forbes-bus_all
1年で何十億円も稼ぐ高収入ユーチューバー世界ランキングトップ10
https://gigazine.net/news/20151016-highest-paid-youtuber-2015/
おもちゃのレビューで年間12億円! 今、話題のYouTuberは6歳の男の子
https://www.businessinsider.jp/post-108355
彼女はいかにして750万人のファンがいるYouTubeスターとなったのか?
https://www.businessinsider.jp/post-242
1億円稼ぐ9歳のYouTuberがすごすぎる……アメリカで話題のEvanTubeHD
https://weekly.ascii.jp/elem/000/000/305/305548/
世界で最も稼ぐユーチューバー、2連覇の首位は年収17億円
https://forbesjapan.com/articles/detail/14474
708NAME IS NULL
2019/01/19(土) 18:04:53.48ID:???
>>33
これって標準SQLだとどうなる?
709NAME IS NULL
2019/01/19(土) 19:14:46.35ID:???
>>708
>>35で[KEY]を"KEY"にすれば標準SQLになると思う
IDが予約語のDBもあると思うが標準では予約語じゃない
710NAME IS NULL
2019/01/19(土) 19:31:39.91ID:???
>>709
サンキュー、やってみます!
711NAME IS NULL
2019/01/19(土) 19:44:11.08ID:???
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"
712NAME IS NULL
2019/01/19(土) 23:44:19.87ID:???
>>711

MAX(KEY)とWHEREが巧妙ですね
713NAME IS NULL
2019/01/19(土) 23:58:53.77ID:???
>>711
検証してみたんですが、
TableBに(8,2,3,'b_key3')を追加し、検索KEY=3にした時、
一番若いKEY=1を持って来れてません
714NAME IS NULL
2019/01/20(日) 02:34:11.35ID:???

2より若いじゃ無くて2が無ければ一番若いKEYなのかな
KEY=3,4,5の場合3になる?
715NAME IS NULL
2019/01/20(日) 02:37:14.35ID:???
なんかSQL貼り付けようとすると書き込みに失敗する
何故だ
716NAME IS NULL
2019/01/20(日) 03:14:45.59ID:???
連投スマン
何度か試したけど直接SQL書くとエラーになるっぽい
https://ideone.com/UrWptx
717NAME IS NULL
2019/01/20(日) 08:31:23.78ID:???
>>33みたいに場合分けを含むようなのは素直にunion allでやる方が見通しが良かったりする。
記述は冗長かもだけど。
718NAME IS NULL
2019/01/23(水) 06:30:51.69ID:???
>>715
SQLインジェクションって知ってる?
719NAME IS NULL
2019/01/23(水) 08:44:06.11ID:???
>>718
最初、>>716の16行目以降のSELECT文を書き込もうとしたら失敗したのよ
>>711だと書き込み成功してるのに何故だろうか?
どの部分が問題になっているか知ってる?
720NAME IS NULL
2019/01/24(木) 23:55:34.12ID:???
チェックは途中のクラウドで行っているようです
SQLの特定のキーワードに反応しているみたい
引っかかるときもあれば引っかからないときもある
その辺の基準はよく分からないです
チェックする検査項目が変わるのかもしれない
721NAME IS NULL
2019/01/25(金) 19:17:24.19ID:???
>>720
ありがとう

書いてみてエラーになったら外部サイトに貼るしかないか
722NAME IS NULL
2019/01/25(金) 20:20:44.91ID:???
手間だけど、それが一番良いと思う
後は全角文字に置換して貼り付けるくらい
汚くはなるけど、説明と合わせて書きたい時は
こうすると良いかな
723NAME IS NULL
2019/01/30(水) 21:50:00.13ID:faG5je+8
初めて質問させていただきます
SQLからPostgresへのデータ移行をC#使ってプログラム作ってます
csv吐き出しで移行させたいんですが、ダブル型のカラムのデータが.000や10.600という形で入ってるのですがどうにか0にする・余計な0を無くすことが出来るのでしょうか?
またそういう事が吐き出しの際指定出来るのでしょうか?
吐き出しはbcpでフォーマットを読ませてます
724NAME IS NULL
2019/01/30(水) 22:08:09.72ID:???
FORMAT()関数とか言うのがあるんじゃねぇの?よく知らんけど
725NAME IS NULL
2019/01/31(木) 14:53:40.26ID:kxiPGIi/
>>723
SQL ServerのことをSQL

CSVファイルのデータをわざわざC#でインポートプログラムを作ってインポート

エクスポートや出力にあたる言葉が「吐き出し」

初心者なのかクソ経験者なのか?
726NAME IS NULL
2019/01/31(木) 20:03:35.35ID:???
>>725
自己解決しました
申し訳ない急ぎだったのでそういう書き方になってしまった
C#は移行という一貫性のあるプログラムです
SQL serverからPostgresへの移行と書いてあるように
目的の為の柔軟性もあるという意味合いで情報を付加しただけに過ぎないです
727NAME IS NULL
2019/01/31(木) 21:14:34.97ID:kxiPGIi/
文字でデータを移行するのに数値型のデータをどう表現するのか指定を行っていない時点で初心者。
728NAME IS NULL
2019/01/31(木) 21:18:44.70ID:???
>>726
どういう風に解決したのか書いておいて
729NAME IS NULL
2019/02/01(金) 06:34:24.99ID:???
>>727
吐き出しはbcpでフォーマットを読ませてます
>>728
問題は別にありました
思いっきりbcp時にNULL文字の空白が…と警告が書いてあるのにも関わらずNULLIFでRTRIM関数を使用していないことが原因でした
ちなみに.000は0には出来ませんでしたがコンバートで代用しました
730NAME IS NULL
2019/02/01(金) 09:44:22.12ID:???
根本的にアプローチ方法が違う様な気がする
山に登るのも好き好きだから
逆立ちして登りたい人もいるだろうし
731NAME IS NULL
2019/02/01(金) 10:08:47.52ID:???
>>729
こういう事かな
https://www.ilovex.co.jp/Division/SRD/archives/2008/01/sqlserverbcpnul.html
732NAME IS NULL
2019/02/01(金) 11:48:19.88ID:???
SQLパズルって本どうなの?実務で役に立つ?
733NAME IS NULL
2019/02/01(金) 13:04:50.72ID:???
>>731
正にその通りでございます。
734NAME IS NULL
2019/02/01(金) 13:43:15.56ID:LPFd6PpO
今度はbcpの使い方を知らなかったということか。何もかもダメだな。
735NAME IS NULL
2019/02/01(金) 14:28:44.76ID:???
bcpの使い方ってよりbcpの相互関係に気付けなかっただけだろ
736NAME IS NULL
2019/02/01(金) 22:32:32.28ID:???
>>659
マジかよ
737NAME IS NULL
2019/02/10(日) 12:16:31.44ID:???
auto incrementって指定しなくても勝手に連番いれてくれないの?
738NAME IS NULL
2019/02/10(日) 12:45:17.83ID:???
多義的質問で回答が難しい
739NAME IS NULL
2019/02/10(日) 12:47:26.67ID:???
autoincrementのカラムを何も指定しないでinsertしても入らないのですか?
740NAME IS NULL
2019/02/10(日) 13:20:09.88ID:???
それは無理だろう
作成時に指定した制約の範囲で値は入る
741NAME IS NULL
2019/02/10(日) 13:42:14.39ID:???
じゃあ空のテーブルに1から連番のidを入れたいときどうしますか?
742NAME IS NULL
2019/02/10(日) 14:00:53.96ID:???
取得時に連番を振れば良いので、そもそもの要求が正しくないと考えるべきだな
743NAME IS NULL
2019/02/10(日) 14:19:10.05ID:???
>>737
RDBMSによって挙動が違うのでは
744NAME IS NULL
2019/02/10(日) 15:01:33.42ID:???
>>742
取得時?自分で連番を入れろってこと?
>>743
postgresqlです
745NAME IS NULL
2019/02/10(日) 15:05:49.46ID:???
データベースってどういう仕組みなの?一つのテーブルにファイルどれくらい使ってるの?
746NAME IS NULL
2019/02/10(日) 16:06:02.48ID:???
>>744
これは読んだ?
http://www.postgresqltutorial.com/postgresql-serial/
747NAME IS NULL
2019/02/10(日) 17:54:40.38ID:RVblbfO4
>>741
必ず連番でないといけないか、まずはそこを考えた方がいい。
748NAME IS NULL
2019/02/10(日) 18:22:16.70ID:6fMC7oP8
>>744
同時実行時にどうやって連番が振れるのか考えた方がいい。

ユーザーがよく連番にしてくれというが、データそのものが連番を持っている必要はない場合が多い。

シーケンスを使うと歯抜けになるが、歯抜けで何か問題がどうか聞け。

どうしてもやりたければ、番号を管理するテーブルを用意して、一瞬、テーブルをロックして最大値を求めてレコードを追加したり更新したりすることで実現する。

レコードが削除されたときは番号を降り直すのかどうかも事前に聞け。

ユーザーは単に表示されている件数とデータの番号が一致していたら、わかりやすい程度のことしか言っていない。
749NAME IS NULL
2019/02/10(日) 18:46:54.82ID:???
>>745
環境とか設定による
750NAME IS NULL
2019/02/10(日) 20:11:17.09ID:???
>>746
これが何なのか読んでもわからんすw
というかORM使ってるのでこの型使えるのだろうか
>>747
>>748
確かに連番である必要は無いです
適当に被らない番号を振ってもらえれば良いんだけどそういう句はあります?
751NAME IS NULL
2019/02/10(日) 23:07:57.76ID:???
>>750
どういうやり方で最初の空のテーブルを作成してますか?
752NAME IS NULL
2019/02/11(月) 04:27:17.82ID:XERbxblT
>>750
シーケンスを作って、シーケンスから新しい番号を取る。

製品によって異なるから「PostgreSQL シーケンス NEXTVAL」のキーワードでくぐって勉強して。
753NAME IS NULL
2019/02/11(月) 23:07:27.20ID:I14UVxY+
>>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かりませんでした
754NAME IS NULL
2019/02/11(月) 23:12:13.51ID:XERbxblT
だめだこりゃ
755NAME IS NULL
2019/02/11(月) 23:43:33.61ID:???
>>752
質問をいくつか

idを連番にして一意にしたいって事ですか?

dateをプライマリキーにしていますが、
このテーブルデータのデータを一意に特定したいときに
dateを指定するって事ですか?
756NAME IS NULL
2019/02/12(火) 13:36:18.57ID:eWsZ2mFu
>>755
dateとは?
757NAME IS NULL
2019/02/12(火) 17:33:47.98ID:???
date DATE NOT NULL,
PRIMARY KEY (date)
758NAME IS NULL
2019/02/12(火) 19:40:53.09ID:???
>>746の回答で終わってる話だし、自分で調べる気がないようだから
これ以上構わないほうが良いぞ
759NAME IS NULL
2019/02/12(火) 21:40:34.30ID:hyYi05zW
>>755
date で一意にしたいです

>>758
つまりカラムの型をSEREALにすれば良いんですね PRYMALY KEYにしか使えないんですね
760NAME IS NULL
2019/02/13(水) 00:29:25.04ID:???
何をしたいのかがよく分からないけれど
率直に言うと、テーブル定義を見ただけで、これは酷いと思った
ここで質問するにしても基本が出来ていないと
質疑そのものが成り立たないと思う
一つ一つ教えてやれるほど暇な人はここにはいないと思うので
まず自力でテーブル設計の基本から学び直した方が良いだろう
761NAME IS NULL
2019/02/13(水) 01:28:24.13ID:bwrqc7Ol
う〜ん厳しいっすね、
達人に学ぶDB設計指南書
という本を読んで出直してきます
ありがとうございました。
762NAME IS NULL
2019/02/13(水) 11:26:56.25ID:???
教えてください。
12c ってWindows10Homeには対応していないのでしょうか?
インストールしようとすると、最初の段階でフリーズしてそのままなんですが。。。
それとも自分のやり方が間違っているのか?
763NAME IS NULL
2019/02/13(水) 12:26:16.60ID:???
> それとも自分のやり方が間違っているのか?
Yes.

Oracleに聞け
764NAME IS NULL
2019/02/13(水) 16:28:18.68ID:RDoKqAmg
>>762
Windows 10 Homeには対応していません。Windows 10 HomeはIT技術者が使うようなものではありません。
765NAME IS NULL
2019/02/13(水) 19:12:25.52ID:???
Windows10でも64ビット版なら対応してるみたいだな
766NAME IS NULL
2019/02/13(水) 23:53:03.82ID:???
おいおい、そもそも12cってなんだ?
767NAME IS NULL
2019/02/14(木) 00:13:36.28ID:???
>>762
Win10Home x64 に Oracle12c 入れてるよ
Release2 だと言うように途中で止まったけど Release1 は最後まで行った
768NAME IS NULL
2019/02/14(木) 00:51:18.49ID:rVmZaTkp
動くのとサポートしているかどうかは別問題。
769NAME IS NULL
2019/02/14(木) 00:52:15.11ID:rVmZaTkp
こういう勝手な組み合わせで使って文句をサポートに言ってくる会社は必ずある。
770NAME IS NULL
2019/02/14(木) 00:53:47.16ID:rVmZaTkp
>>766
視力検査で「みぎ」と言えば視力1.2と判断される。
771NAME IS NULL
2019/02/14(木) 16:39:28.33ID:EccPVtMv
【バイトテロ】 くら寿司「法的措置とる」 奴隷DQN「法律が金持ちだけを守るから、テロに訴える!」
http://2chb.net/r/liveplus/1550110870/l50
772NAME IS NULL
2019/02/15(金) 18:52:16.64ID:BQV0WL9f
基本情報の古い過去問のデータベースが解けません。解説してください。
平成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行の場合、真となるようでした。
よろしくおねがいします。
773NAME IS NULL
2019/02/15(金) 19:58:39.46ID:slwoR7Dy
>>772
ALLは真偽値を返すのではなく、副問い合わせの結果すべてに当てはまるかどうかの条件構文。
774NAME IS NULL
2019/02/15(金) 20:05:16.74ID:slwoR7Dy
>>772
結果リストがゼロ件の場合は、FALSEでもNULLでもTRUEでもないため、条件そのものがない扱いになる。
775NAME IS NULL
2019/02/15(金) 20:11:56.83ID:slwoR7Dy
正確には結果が返らないため、どの年齢もTRUEになってすべてのレコードが対象になる。
776NAME IS NULL
2019/02/15(金) 20:14:08.31ID:slwoR7Dy
SELECT文の結果の対象レコードが存在しない状態はNULLではない。
777NAME IS NULL
2019/02/15(金) 21:29:59.00ID:???
>>772
ALLはその副問い合わせが空のときはTrueと決まってるから
イマイチ直感的ではないけど、そう決まってるからしょうがない

条件そのものが無い扱いになったりするわけじゃない
ALL条件はTrue/Falseを返す(この場合はTrue なぜならそう決まっているから)
778772
2019/02/18(月) 09:17:02.02ID:Vl1v2yYD
皆さんありがとうございました。よく分かりました!
779NAME IS NULL
2019/02/22(金) 21:56:20.09ID:???
MySQLの使い方に悩んでる。
WebアプリケーションでToDoリスト作るとして
ToDoリストのデータとして5つのテーブルが必要です。
Aさん、Bさん、Cさんがそれぞれ保存し、各自、自分が登録したToDoのみが見れます。
このような場合、SQLサーバでは、Aさん用データベース、Bさん用DB、Cさん用DBを作成する。
という使い方は変ですか?
780NAME IS NULL
2019/02/22(金) 21:58:20.75ID:???
>>779
補足、使用人数は例では3人ですが、100人以上の可能性あり
781NAME IS NULL
2019/02/22(金) 22:38:20.63ID:???
ひとつのテーブルで行ごとにアクセス権を設定できるDBMSもあるにはあるけど
(MySQLでできるかどうかは知らん)
アプリケーション側で制御するのが普通
ユーザーごとにテーブルを分けるのは普通じゃない
782NAME IS NULL
2019/02/22(金) 23:41:46.14ID:???
MySQLでもユーザー毎にdatabaseを割り当ててアクセス権を設定すれば出来ないことはないが
そこまでする必要があるのって、ユーザーにテーブル作成や削除までやらせたいときくらいじゃないか?
783NAME IS NULL
2019/02/23(土) 07:25:16.90ID:???
ありがとうございます。>>779です。
SQLに対してDBを作ったり、テーブルを作ったりするのはToDoアプリ側で、ユーザーはToDoアプリの操作のみです。
アプリの保存データをSQLで管理したいという話なのですが、
こういうときは、データベースごとに分けるのが普通ではないというなら、普通はどんな方法で管理するのでしょうか?
@ 一つのDB内に、Aさんのテーブル5つ。Bさんのテーブル5つ作る 。(テーブルが増えていく)
A 一つのDB内に5つのテーブルがありその中でAさんのレコード、Bさんのレコードを作っていく。(レコードが増えていく)
B 名前をつけて保存で、新しいDBを作りその中に5つのテーブルを作る。(DBが増えていく)
784NAME IS NULL
2019/02/23(土) 07:52:54.75ID:???
人が増減するのに合わせてDBやテーブルを増減するのってその管理がまた
大変だろ…。これ言うとここで鬼門の削除フラグが〜になってしまうけどw
785NAME IS NULL
2019/02/23(土) 08:14:15.37ID:???
昔、IBMが作ったシステムの設計見たらビューで権限のあるレコードだけ表示できるようにしていた。
そんなんでパフォーマンスが出るのかと思ったけど、結構大規模なDWHでもそこそこの速度が出ていた。
もしかしたらIBMのチューニング力のなせる業だったのかもしれないが。
786NAME IS NULL
2019/02/23(土) 08:21:42.86ID:???
>>784 ありがとうございます。ということは、ユーザーの操作により、DBやテーブルの作成はあまりしない方が良いということですね。
アプリ起動時に、DBが無ければ作成したかったんですがそれもやめた方がいいのか?事前に作成しておくのが普通?

>>785 なるほど、ビューを使えば個人毎のテーブルとして扱えるって事ですね。

SQL文は理解したんですが、全体的な使い方がイマイチでして、こういう時に役に立つ書籍が何かあれば教えて下さい…
使い方なんて人それぞれっていうのは分かってるんですが。
787NAME IS NULL
2019/02/23(土) 08:41:19.07ID:???
DBMSのことをSQLとか言う奴の相手するなよ…
788NAME IS NULL
2019/02/23(土) 13:28:01.08ID:???
>>786
>事前に作成しておくのが普通?
普通は動的にテーブル作ったりしない

>アプリ起動時に、DBが無ければ作成
WEBアプリだよな
アプリってクライアント側かサーバ側かどっちのことを言ってるんだよ
普通クライアントが直接DB弄ることなんかないだろ


つか設計スレいけ
789NAME IS NULL
2019/02/23(土) 20:49:34.96ID:bVMedebm
>>786
ひとりずつ分けて管理するというのは紙媒体の考え方だから、素人がそういう設計を思いつくのは理解できる。

ただし、リレーショナルデータベースの世界では、かなりおかしな発想。

操作できるのが自分のデータのみであれば、自分のデータかどうかどうして区別できないと思うのか?

権限という概念がどうしてあるのか、勉強した方がいい。
790NAME IS NULL
2019/02/24(日) 09:44:27.01ID:???
>>688
>>689
ありがとうございます!
もう少し考えて勉強します。
791NAME IS NULL
2019/02/24(日) 15:29:30.62ID:???
>>681
横だけど上の世代はWHERE句に結合を書いてたの?
792NAME IS NULL
2019/02/24(日) 15:40:30.55ID:???
いわゆる結合条件のことだろう。
θ結合は直積から選択するのと等価なんでSQL89まではそういう風に表現してた。
793NAME IS NULL
2019/02/24(日) 16:01:11.52ID:???
Oracleに限って言えばシステム内部で組み込まれてるビューは
今でもWHERE句の結合だけじゃないかと思えるレベル
794NAME IS NULL
2019/02/24(日) 18:37:09.51ID:SaGWUbss
>>791
ちゃんと製品のマニュアルを見たことがあるのか?

SQLの歴史上、結合条件はWHERE句に書き、FROM句には書けなかった。
795NAME IS NULL
2019/02/24(日) 18:58:58.79ID:???
>>794
マニュアルなんてあるんだ
見たことないよ
796NAME IS NULL
2019/02/24(日) 18:59:22.90ID:???
>>794
JOINしか知らねーもん
797NAME IS NULL
2019/02/24(日) 19:00:52.96ID:???
>>794
勉強んなるわ
でもFROMに書けるんだから今はWHERE句に書く必要もうないってことだよね?
798NAME IS NULL
2019/02/24(日) 19:03:50.83ID:???
最初に現場でoracleを習って
そこでは(+)が多用されていた
その後外部結合というのを習ったけど
join句、いまだに使い方慣れなくて困る
799NAME IS NULL
2019/02/24(日) 19:06:24.07ID:???
へぇー
じゃあぶっちゃけ今はJOINから入っちゃった方が無駄がないのかな?
800NAME IS NULL
2019/02/24(日) 20:40:22.59ID:???
初心者はまずJOINだけを覚えた方が良いと思う
801NAME IS NULL
2019/02/24(日) 20:53:54.58ID:???
>>800
おけ
802NAME IS NULL
2019/03/10(日) 11:15:16.36ID:Q3ybtzHt
社員テーブルに以下の5カラムがあります。すべてnot nullカラム。
社員id(主キー)、氏名、所属部署、入社年度、生年月日
社員idはランダムで採番されます。

このとき、
所属部署ごとに以下を満たす1人の氏名と生年月日を抽出するとき、
どのようなSQLが考えられますか?
・入社年度が最も過去
・それが複数人居る場合は、その中で社員idが最大の社員

お力添えよろしくお願い致します。
803NAME IS NULL
2019/03/10(日) 11:25:40.65ID:???
FROM 社員テーブル T1
WHERE NOT EXISTS (
SELECT * FROM 社員テーブル T2
WHERE T2.所属部署 = T1.所属部署
AND (
T2.入社年度 < T1.入社年度
OR T2.入社年度 = T1.入社年度 AND T2.id > T1.id
))
804NAME IS NULL
2019/03/10(日) 11:59:03.32ID:???
>>803
www
805802
2019/03/10(日) 12:06:30.08ID:Q3ybtzHt
803さんのはまだ試してないですが、
group byとhavingで2回絞るのは無理ですかね?
806NAME IS NULL
2019/03/10(日) 13:00:21.03ID:???
>>802
つかってるDBMSかけ

SELECT * FROM(
SELECT
ROW_NUMBER() OVER( PARTITION BY 所属部署 ORDER BY 入社年度,社員id DESC) as 順位,
*
FROM 社員テーブル
) t
where t.順位=1


ウィンドウ関数使えないようなら、サブクエリ3段とかで出来そうだが
807802
2019/03/10(日) 13:27:49.35ID:???
>>806
ありがとうございます、勉強になりました。
SQL serverです。
808NAME IS NULL
2019/03/10(日) 13:47:03.15ID:???
MySQLで

select max(`社員id`),`氏名`,`所属部署`,`入社年度`,`生年月日`
from `社員テーブル`
where (`所属部署`,`入社年度`) in
(select `所属部署`,min(`入社年度`) from `社員テーブル`
group by `所属部署`)
group by `所属部署`;
809NAME IS NULL
2019/03/10(日) 16:06:47.18ID:???
>>806
Row_Number wwwwwwwwwwww
810NAME IS NULL
2019/03/10(日) 16:08:11.04ID:???
>>806
そういう使いもんならないの教えんのやめ
811NAME IS NULL
2019/03/10(日) 21:01:07.81ID:g5zHpNPp
これから仕事で必要になるためSQL勉強しています。
皆さんはどうやって勉強していますか?

現在SQLBoltってサイトで勉強しています。
覚えが遅いためなかなか覚えられません。
一応ExcelのVBAはできます。
勉強法がわからないのでAccess VBA Standardの資格で勉強した方がいいでしょうか?
812NAME IS NULL
2019/03/10(日) 21:45:35.27ID:???
プログラム言語と違って、何か適当な例題があるわけじゃないし、
割と実践的に体で覚える感じでした
SQLを使用するソフトによって多少、あるいは大きく違ったりするので
SQLをどういう所で使いたいか、ソフトに何を使うかを見極めて学習すると
効果的かも知れません
それから、SQL言語はVBAとは異なるものです
813NAME IS NULL
2019/03/10(日) 21:51:09.47ID:???
>>811
今どんなことやってるん?
814NAME IS NULL
2019/03/10(日) 21:52:55.29ID:???
>>812
使いものになるまでの所要期間だいたいどれくらい?
815NAME IS NULL
2019/03/10(日) 21:59:42.65ID:???
命がけで取り組めば半年もあればなんとかなります
816NAME IS NULL
2019/03/10(日) 22:06:53.55ID:???
>>815
すみません横から失礼いたします。
業務上必要に迫られ勉強することになりました。
環境は会社で用意されてますが前任者が居なくなってしまう為、ゼロから始めて1ヶ月半でモノにしろと言われています。
命がけで半年ですか…胃が痛くなってきました。
1ヶ月半など無茶苦茶な要求と言えそうですね(泣)
ちなみにエンジニアさんですか?当方非エンジニアです。
817NAME IS NULL
2019/03/10(日) 22:10:58.93ID:???
複雑さの程度にもよりますから
簡単なものでしたら、1か月も掛からずに習得は出来るでしょう
担当する業務の内容次第です
818NAME IS NULL
2019/03/10(日) 22:19:54.37ID:???
>>817
レスありがとうございます。
段階にもよりますね。
予定されているものを見たところサブクエリ5〜7つ、最後で結合するという説明でした。
かなり長くこんなの書けるのだろうかと気が遠のきました。
テーブルの挿入などはなさそうです。
819NAME IS NULL
2019/03/10(日) 23:06:33.52ID:g5zHpNPp
>>812
私はあまり覚えがよいほうじゃないので、業務が始まる前に
勉強して基本的な知識をつける予定でしたが、
やはり実務をこなして体で覚えるほうが早いのですね。
レスありがとうございます。

>>813
レスありがとうございます。
ゲーム会社で簡単なデバック作業をしています。

SQL覚えるのに半年もかかるのですね。
皆様色々教えてくれてありがとうございます。
820NAME IS NULL
2019/03/10(日) 23:10:57.13ID:???
>>819
818です。横から質問奪ってたいへん失礼しました。
ちょうど同じような境遇でしたもので。
思ったよりもSQLを身につけるのは時間がかかりそうで覚悟せねばと思いました。
お互い頑張りましょう。
821NAME IS NULL
2019/03/10(日) 23:31:28.45ID:g5zHpNPp
>>820
いえいえ失礼なんて、とんでもないです。
私もSQLを覚えるのがこんなに時間がかかるとは思いませんでした。
大変だと思いますが、お互い頑張りましょう。
822NAME IS NULL
2019/03/10(日) 23:50:17.33ID:???
>>811
仕事で必要になるならその仕事で使うDBMS使えばいいと思うが
大抵のDBMSは無償版提供してるし
823NAME IS NULL
2019/03/11(月) 00:01:23.59ID:???
このスレの先頭、>>3-10辺りをすらすらと書けるようになれば
大体の業務はこなせるんじゃないかな?w
824NAME IS NULL
2019/03/11(月) 00:03:27.75ID:???
分からなくなったらここで聞いてみると良いですが、
その際に、ソフトに何を使っているかを書いて欲しいです
ソフトによって使えたり使えなかったりするものがあります
825802
2019/03/11(月) 01:04:25.55ID:D8ZFjyx6
Sybase ASEだとOLAP関数サポートなく、
806さんのムリでした

一番エレガントだと思ったのに
826NAME IS NULL
2019/03/11(月) 03:02:21.27ID:???
初心者の質問続きとなっているようですみませんがお願いします
「SQLの基本構文を書くことができる」というとどういった範囲になりますか?
827802
2019/03/11(月) 03:57:23.23ID:wSBvFW/D
>>803
望んだ結果が出ました。
ありがとうございました。

社員テーブルに該当するものが複数テーブルから構成されたサブクエリだとかなり重くなりました。
828NAME IS NULL
2019/03/11(月) 11:49:18.57ID:???
Select文のasに( )を使いたいのですが、どうかけばいいでか?
829NAME IS NULL
2019/03/11(月) 12:26:03.33ID:???
ダブルクォートで括るのが普通だが
角括弧やバッククォートを使うDBMSもある
830NAME IS NULL
2019/03/11(月) 13:16:00.18ID:???
>>828
そういったあんた個人のわがままが通ったとして、
で、ユーザー(つまり結果)に優位性があるのか?
831NAME IS NULL
2019/03/11(月) 13:27:39.34ID:???
>>829
レスありがとうございます。
使ってるのはpostgresqlてすが、" ではダメみたいです。

>>830
As 時間 としていたところ、ユーザーから 時間(分) と表示して欲しいとの要望かありました。
()は特殊な文字てあることは理解していますが、何らかの策があるのではと質問したのですが。あまりに非常識なようでしたら諦めます。
832NAME IS NULL
2019/03/11(月) 14:38:08.55ID:???
postgresなら"でいいはず
なんらかのプログラミング言語を介して使っているなら
そのプログラミング言語に対して"をエスケープしなければならない
833NAME IS NULL
2019/03/11(月) 15:02:14.67ID:???
>>832
すみません、アホなことしてました。
時間"("分")" って…
"時間(分)"でokでした。
834NAME IS NULL
2019/03/12(火) 15:55:28.54ID:wb2Tlo5B
まもなく日本から世界経済が崩壊し、世界教師マYトレーヤとUFOが出てくる。
それからベーシックインカムがはじまるので、20年間ヒキコモリの人でも死にはしない。
むしろ、心配するなら被曝のほう。

【メルトダウンA級戦犯】 『非常用発電機』安倍が放置  『非常用空冷回路』小泉が撤去  死刑求刑
http://2chb.net/r/liveplus/1552357792/l50
835NAME IS NULL
2019/03/20(水) 08:25:55.58ID:???
ロジックどこまでSQLにするのが正解?
836NAME IS NULL
2019/03/20(水) 08:52:06.23ID:IPQHQif1
>>835
できるだけSQLには詰め込まない。
837NAME IS NULL
2019/03/23(土) 10:38:46.25ID:???
何個までテーブル結合する?
838NAME IS NULL
2019/03/23(土) 10:48:20.01ID:???
>>837
必要なだけ
経験としては10個ぐらいまでやったことある
839NAME IS NULL
2019/04/06(土) 16:59:18.80ID:???
テーブル
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です。
840NAME IS NULL
2019/04/06(土) 18:34:14.74ID:zJrZyIQq
>>839
Excelでやれば?
841NAME IS NULL
2019/04/06(土) 18:34:35.19ID:???
select
No1,
((case No2
when A then 10000
when B then 100
when C then 1
end)
+(case No3 ……)
+……)
from テーブル
842NAME IS NULL
2019/04/06(土) 20:48:36.77ID:???
>>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
843NAME IS NULL
2019/04/06(土) 22:02:53.39ID:???
>>840
>>841
>>842
レスありがとうございます。

>>841
ちょっと理解できませんでした。

>>842
やはり、UNION ALL使うぐらいしかないんですね。
少し調べて全く同じものまではたどり着けました。
NOが200ぐらいあるのですが、テーブルの設計自体を見直したほうがよさそうですね。
844NAME IS NULL
2019/04/06(土) 23:57:44.63ID:zJrZyIQq
>>843
そもそもその表で管理しようとしているところが天才
845NAME IS NULL
2019/04/07(日) 00:52:44.96ID:???
>>839
これはPostgreSQLだけどoracleにもUNNESTはあったように思う
無かったらスマン
https://rextester.com/VNEZX24470
846NAME IS NULL
2019/04/07(日) 11:10:36.22ID:???
>>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
847NAME IS NULL
2019/04/07(日) 12:44:56.58ID:???
>>846
> 毎日のレコード数が凄いことになっちゃうなーって。
どんなシステムかわからんけど今時そこら辺のPCでも100万レコード程度は普通に扱えるしOracleでそこそこのサーバー入れてりゃ1億件程度でも破綻しないよ
848NAME IS NULL
2019/04/07(日) 14:24:50.93ID:???
>>847
1次元配列だと200万レコード/日ぐらいが想定されるので、少し厳しいのかなと感じています。
集計前・集計後のどちらもが必要なので、各々のテーブルを作るのが良さそうですかね。
849NAME IS NULL
2019/04/07(日) 14:33:05.24ID:???
項目にsumA、sumB、sumCを追加しておいて
レコード挿入時に集計しておけば良いのではないか?
850NAME IS NULL
2019/04/07(日) 14:35:19.43ID:???
要件後出しかぁ
851NAME IS NULL
2019/04/07(日) 14:49:06.95ID:???
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 テーブル
852NAME IS NULL
2019/04/07(日) 19:59:58.82ID:XK0411W4
20年前のPCの感覚で考えているんだろうな。しかも巨大Excel風がお好みらしいから無視が一番。
853NAME IS NULL
2019/04/07(日) 20:08:22.18ID:???
糞メーカー製品のせいでテーブル変えられないって訳でもなく、自分でそういう設計にしてるならしょうがないね
854NAME IS NULL
2019/04/07(日) 20:31:56.17ID:???
decodeとかOracleしか使えないのよりcase when
で記述していったほうがよくね
855NAME IS NULL
2019/04/07(日) 21:47:20.06ID:mpDpVIK/
いじめはどこの町にもあるが島本町は特に酷い
「大阪府三島郡島本町のいじめはいじめられた本人が悪い 」なんて
公言する町は他に無い
856NAME IS NULL
2019/04/07(日) 22:22:31.97ID:???
Oracle 12 なら VARRAY とかでもいいかも
ただ操作する関数は貧弱なのでストアド必須になると思うが
857NAME IS NULL
2019/04/07(日) 23:49:47.59ID:+nydsyOL
>>856
知識がないのになんで無理やり書き込むの?
858NAME IS NULL
2019/04/08(月) 02:31:15.60ID:n+bY9Kjk
Postgres11を使用しています。

3700万行程のテーブルの中途半端な位置に行を追加したいのですが、
通し番号の昇順を維持するにはどうすればよいでしょうか?

こんな構造です。
----------------------------------
主キー | 本文(最大3MB程度)) | 通し番号
----------------------------------

今はこうなっているとします。
--------------------
0001 | あいうえお | 0001
0003 | さしすせそ | 0002
0004 | たちつてと | 0003
--------------------

ここに、1行追加して、以下のように変更したいです。
--------------------
0001 | あいうえお | 0001
0002 | かきくけこ | 0002
0003 | さしすせそ | 0003
0004 | たちつてと | 0004
--------------------
859NAME IS NULL
2019/04/08(月) 03:17:37.68ID:???
>>858
この穴埋め問題はよく話題になるんだけど、やりたいなら最初からそう設計して採番しないとキレイにできないんだよ。後からやるならアプリ側で調整したほうがうまくいく。主キーならとくに。
860NAME IS NULL
2019/04/08(月) 03:24:20.28ID:kcf+7C4K
>>858
UPDATE テーブル
SET 通し番号=通し番号+1
WHERE 通し番号 > 2
とかではなくて?
861NAME IS NULL
2019/04/08(月) 05:05:10.99ID:???
>>858
update テーブル t1
set 通し番号 = (select Rank
from (select 主キー,
Row_Number() over(order by 主キー) as Rank
from テーブル) t2
where t1.主キー = t2.主キー);
862NAME IS NULL
2019/04/08(月) 05:05:33.79ID:???
>>857
煽りたいだけのバカは黙ってて
863NAME IS NULL
2019/04/08(月) 22:21:43.69ID:???
主キーには空きがある前提なのか?
その例だと通し番号要らんように見えるぞ
864NAME IS NULL
2019/04/16(火) 07:28:34.74ID:???
超初心者の質問で申し訳ないですが

SQLで
顧客情報、順路表から計算して
申請書を作る
医療関係のデータベースは作れますか?
865NAME IS NULL
2019/04/16(火) 07:47:16.31ID:???
>>864
要件が不足しています
計算とは?

2つ表から単に申請書に必要なデータを抜いてくるだけなら当然つくれます
866NAME IS NULL
2019/04/16(火) 12:29:02.43ID:???
>>865
すいません

もう少し詳しく書くと

■顧客情報
A受けている治療内容 (〇〇円)
■順路表
B患者を何回いった(〇〇回)
C前の患者との距離(〇〇km)
■申請書
A、B、Cの数字を元に
四則計算して
それぞれの箇所に数字を入力
して申請書を作成
できるデータベースです
867NAME IS NULL
2019/04/16(火) 12:29:36.88ID:???
>>865
あと
順路表を前月と同じ内容を
翌月にコピーできますか?

※4/1(月曜) Z→E→F
4/2(火曜) L→E→M
なら
5/6(月曜)) Z→E→F
5/7(火曜)L→E→M
868NAME IS NULL
2019/04/16(火) 12:30:58.01ID:???
>>865
現在はEXCELでやっていて
重すぎるので何か手はないか
と考えているところです
869NAME IS NULL
2019/04/16(火) 14:26:35.70ID:???
SQLでできるかというより
これは医療向けアプリじゃないの?
ACCESSで作れますかという話かね
索引とか使えば検索を早くできるからたぶんマシにはなるしデータの複製もできる

発想を跳躍させて
Z、E、Fとか未定義で最短経路問題なのかすら怪しいけど
経路ならグラフデータベースとかある
870NAME IS NULL
2019/04/16(火) 22:05:17.16ID:???
>>869
返信ありがとうございます

Eさんの4月分の申請書を作成するときは
4/1はZ→Eの最短距離
4/2はL→Eの最短距離
で計算します

※Excelでは最短距離だけのシートがあり
Z→Eとすると4/1は最短距離だけのシート
から情報を抜き出しZ→Eの最短距離で計算します

Accessで作れますか?
調べたら
Excelと同じOfficeですし
SQLもあるそうですね
それと
検索機能とかでスピードアップ期待
データの複製はしやすそうですね
871NAME IS NULL
2019/04/18(木) 12:50:12.86ID:???
現状のスタイルを頑なに守るよりも、市販のパッケージに業務形態を合わせたほうが幸せになれると思う。
872NAME IS NULL
2019/04/19(金) 03:51:41.96ID:YxPtsFlc
SELECT key, 名前, 住所, 電話番号
FROM usertable
WHERE (key = (SELECT MAX(key) AS EXPR1 FROM usertable usertable_1))

このSQLは何をしているのでしょうか?
特に、EXPR1が分からないのと、FROM後に、DBには存在しないusertable_1というテーブルが指定されているのが理解出来ません。
873NAME IS NULL
2019/04/19(金) 05:43:22.57ID:???
>>872
EXPR1はMAX(key)の項目名、
usertable_1はusertableの一時的な名前
と名前を付けているだけです

このSQLの場合は特に名前を付ける意味はありません
874NAME IS NULL
2019/04/19(金) 12:05:23.81ID:9Q8CShQD
>>872
無駄なテーブル別名、カラム別名があり、さらに無駄な括弧がある。

こうなった経緯は読み取れない。
875NAME IS NULL
2019/04/19(金) 12:29:57.43ID:???
項目別名はけっこうasつけるひと多いな
テーブル別名にはみんなつけないけど
876NAME IS NULL
2019/04/19(金) 12:30:53.73ID:???
テーブル別名にAsあったっけ?
877NAME IS NULL
2019/04/19(金) 12:40:53.05ID:???
>>871
ならない
他業界しかやってないやつに
現場の気持ちはわからない

どんなソフトよりも
自分のExcelが一番
今後さらに良くするための質問
878NAME IS NULL
2019/04/19(金) 19:23:24.52ID:???
SQL標準では昔から列別名もテーブル別名もASをつけて良いのだが
なぜかOracleでは昔からテーブル別名にASをつけられない
879NAME IS NULL
2019/04/20(土) 00:53:28.87ID:5u+C7Ddr
>>878
それは誤り。Oracle Databaseでは特定のバージョンだけASを使用できないものがあった。
880NAME IS NULL
2019/04/20(土) 01:22:03.12ID:???
どのバージョンなら使えるのかひとつでいいので例を挙げてくれ
少なくとも最新版18cでは使えない
https://docs.oracle.com/cd/E96517_01/sqlrf/SELECT.html
881NAME IS NULL
2019/04/22(月) 16:40:13.06ID:???
ExcelのクエリはASで別名付けても無視するのが残念
882NAME IS NULL
2019/04/22(月) 16:48:58.86ID:HR8wVegr
>>881
ExcelのSQL操作はおまけ機能みたいだからなあ。特定の文字が使えなかったりとタチが悪い。
883881
2019/04/25(木) 16:05:43.06ID:???
すまん。現行バージョンでは反映されてた。
884NAME IS NULL
2019/04/27(土) 16:07:30.36ID:Nn9s9qmX
>>883
現行バージョンとは何?
885NAME IS NULL
2019/04/27(土) 16:08:45.89ID:???
ORACLEの現行つったら18c
886NAME IS NULL
2019/04/27(土) 16:44:04.96ID:???
Excelの話じゃないのか?
887NAME IS NULL
2019/04/27(土) 16:48:39.97ID:???
国語の勉強しましょう
888NAME IS NULL
2019/04/27(土) 19:08:41.10ID:???
そもそもデータベースが何かを理解してないな
表計算ソフトとは別物
計算や出力が必要ならプログラム書く必要がある
889NAME IS NULL
2019/05/01(水) 12:23:44.69ID:???
ウェブのニュースを集めてとにかくデータベースに放り込み必要なものを取り出すことをしていたのですが
先日からこのようなエラーが出てデータを取り出した結果が取れなくなりました
データが取れることもありますがたまにうまく行くといった感じです

エラー:[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サーバーのエラーログにエラーは見当たらずいろいろやりましたが困っています
解決方法を教えてください
890889
2019/05/01(水) 12:28:19.61ID:d1NFaXkw
クエリを飛ばして30秒ほどでエラーが返ってきます
エラーコードで検索してnet_read_timeoutをいじったり
/*+ MAX_EXECUTION_TIME(1000) */を入れてみたのですが結果は変わりません
データベースの行数は680421です
よろしくお願いします
891NAME IS NULL
2019/05/01(水) 13:18:41.91ID:???
時間かかり過ぎじゃね?
892NAME IS NULL
2019/05/01(水) 14:19:22.78ID:d1NFaXkw
ありがとうございます。どうすればいいですか
クエリを変えるか、データベースの設定をいじるか調べてみましたがわかりません
893NAME IS NULL
2019/05/01(水) 14:31:16.72ID:???
>>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サーバーのことでもないぜ
894NAME IS NULL
2019/05/01(水) 16:50:09.80ID:???
sqlの元号対応
895NAME IS NULL
2019/05/01(水) 17:02:32.49ID:???
>893
sql晒してみれば?
ココ、sqlスレだし
896NAME IS NULL
2019/05/01(水) 18:29:17.59ID:???
ありがとうございます。SQLは以下です。範囲を短くしても長くしても前述のエラーが出ます
SELECT * FROM table1 where input_time BETWEEN '2019-05-01 00:00:00' AND '2019-05-01 00:10:00';
897NAME IS NULL
2019/05/01(水) 21:29:38.34ID:???
データ件数はどの位?
インデックス張ってる?
898NAME IS NULL
2019/05/01(水) 21:33:54.17ID:???
>>896
input_timeにインデックス張ってる?
899NAME IS NULL
2019/05/01(水) 22:50:57.93ID:???
>>897
ありがとうございます!データの件数は68万です。
input_time日インデックス張ってみます
900NAME IS NULL
2019/05/01(水) 23:01:11.18ID:???
60万件もあるとインデックス張らないと辛いな
901NAME IS NULL
2019/05/02(木) 00:01:47.31ID:BaexBhmV
MySQL 総合 Part26 [無断転載禁止]&#169;2ch.net
http://2chb.net/r/db/1499949595/
902NAME IS NULL
2019/05/02(木) 00:02:17.46ID:BaexBhmV
>>899
そのカラムは文字列なのか?
903NAME IS NULL
2019/05/02(木) 00:45:37.72ID:???
>>902
いえ、DATETIME型になります
904NAME IS NULL
2019/05/02(木) 01:00:55.56ID:BaexBhmV
>>889 これが元の話だけど、問題の切り分けが全然できてない。

「SQLサーバー」とは何?
905NAME IS NULL
2019/05/02(木) 01:02:07.02ID:???
単純すぎて固有のチューニングの域だな
906NAME IS NULL
2019/05/02(木) 01:15:36.90ID:???
>>904
SQL Serverじゃないの?違うの?
907NAME IS NULL
2019/05/02(木) 01:18:40.54ID:???
文脈から読み取る限り、違うだろう
908NAME IS NULL
2019/05/02(木) 01:40:31.43ID:???
>エラー:[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サーバーと言ったんだと思う
909NAME IS NULL
2019/05/02(木) 05:47:14.56ID:???
www
910NAME IS NULL
2019/05/02(木) 07:14:45.95ID:???
まあよくわかってない人がデータベースとSQLをごっちゃにしちゃうとかはありがち
>>893がちゃんとログをコピペしてる所はほめていいと思う
911NAME IS NULL
2019/05/02(木) 14:21:28.68ID:???
昨日はありがとうございました。>>908はその通りです
インデックスを張ると今度は要求された名前、または序数に対応する項目がコレクションに見つかりません
のエラーが出るようになったのでインデックスをちゃんと張る所からやってみようと思います
ひとまずありがとうございました
912NAME IS NULL
2019/05/07(火) 09:43:18.75ID:???
>>888
Excelからデータベースに対してSQL文を投げて、結果をワークシートに取り込むまでの機能の話だろ。
かなり初期からある機能だぞ。
913NAME IS NULL
2019/05/07(火) 12:20:36.84ID:???
ガチ文盲なのか?
914NAME IS NULL
2019/05/08(水) 19:21:59.39ID:???
>>912 大丈夫?
915NAME IS NULL
2019/05/09(木) 00:47:12.61ID:nm/UmqA+
UPDATE のときのテーブル名に正規表現またはワイルドカードを使う方法を教えてください。
例えば、table_a_001〜table_a_100が合った場合に、「table_a」が含まれるテーブルだけ一括でupdateしたいです。

イメージ的にはこんな感じに
UPDATE `table_a_*` SET `type`='hoge'

宜しくおねがいします。
916NAME IS NULL
2019/05/09(木) 07:00:19.60ID:???
>>915
ないです
917NAME IS NULL
2019/05/09(木) 12:31:24.79ID:???
>>915
> 例えば、table_a_001〜table_a_100が合った場合
その時点でおかしいから設計を見直せ
どうしてもしょうがない場合はテキトーなスクリプト言語でSQLを生成して流せ
918NAME IS NULL
2019/05/10(金) 01:11:58.08ID:???
金と技術力がないと運用にツケがまわるよくある悪例だね
919NAME IS NULL
2019/05/10(金) 01:22:33.62ID:???
テーブル名の001〜100に意味があるなら、その値を項目に追加して
全部を一つのテーブルにまとめてしまえばどうかな?
920NAME IS NULL
2019/05/10(金) 02:07:24.57ID:6hPhptIK
001〜100は例えで書いたんですけど、実際は日付なんです(_20190510)みたいな
その日付ごとにけっこう大きなデータがあるので日付で分けてるんですが、SQL文だけでtable_aのみを絞るのはやっぱり無理なんでしょうか?
おっしゃるとおりで設計が間違ってるんでしょうけど
921NAME IS NULL
2019/05/10(金) 03:38:04.08ID:???
日付をテーブル名にするようなデータベースで
その後に更新が必要になるって何かが変だと思う
922NAME IS NULL
2019/05/10(金) 06:59:51.73ID:???
>>920
ストアドプロシージャで動的sqlでも使わない限り無理です
923NAME IS NULL
2019/05/10(金) 08:16:54.30ID:???
性能的な問題でやっているんならパーティショニングが使えないか検討するところだね。
924NAME IS NULL
2019/05/10(金) 11:04:09.21ID:???
なんたるExcel脳
925NAME IS NULL
2019/05/10(金) 11:37:38.49ID:???
量が多いからテーブルを分けるというのが、わからんな。
処理速度の問題だとしたら、インデックス付けてないとかw
926NAME IS NULL
2019/05/10(金) 23:42:57.25ID:kyiAxM67
>>920
ひとつのUPDATE文で済ませたいという点からして、トランザクションの概念がないのがわかる。
927NAME IS NULL
2019/05/10(金) 23:47:34.60ID:kyiAxM67
>>920
データ量が多いという認識がそのものが間違っている。

本当にデータ量が多いシステムを担当しているのなら、こんなところで質問してこない。
928NAME IS NULL
2019/05/11(土) 11:49:51.10ID:???
質問者をあれこれ詮索するの、感じ悪い
提案までにしとこうよ
929NAME IS NULL
2019/05/11(土) 12:26:05.61ID:???
自分からはなんの提案もなく優等生ぶるのも同類な
930NAME IS NULL
2019/05/12(日) 01:08:28.68ID:DtTEN3xu
このスレッドそのものが、ずっと初心者スレになっているから仕方ない。

シェルスクリプトのスレッドでも一発コマンドでできないかと、しつこく質問してるやつがいる。

プログラマがプログラムを作っているのに、なぜかひとつの文に収めないといけない思想信条があるようだ。

こういうのは無視するしかない。
931NAME IS NULL
2019/05/12(日) 20:39:12.43ID:???
ワンライナーは個人の趣味であって必ずしもソレに付き合わされる必要はないな
932NAME IS NULL
2019/05/16(木) 06:37:31.47ID:R+LnK41M
PHP&MySQLの環境です。

ユーザーID
ポイント
を項目にしたテーブルがあるとします。
ユーザー間で破綻なく自由に任意のポイントを送受信するにはどのようなコードを作成すればよろしいでしょうか?

また、DBサーバが複数ある場合で、同様にDBサーバ越しでも同様のことをしようとするとどのようなコードになりますでしょうか?

秒間数千、数万の処理を行いたいです。
ご教授お願いいたします。
933NAME IS NULL
2019/05/16(木) 06:46:54.10ID:???
なぜこの程度の知識しかない奴がこんな作業をさせられるのだろうか
934NAME IS NULL
2019/05/16(木) 08:00:38.37ID:???
PHPしか書けないような聞き方っぽいのに
XAトランザクションで秒間数万ね
人をすり潰していたITバブル期みたいなブラックだね

http://q.hatena.ne.jp/1217036141
935NAME IS NULL
2019/05/16(木) 09:48:29.80ID:???
超初心者ですすいません
likeとisと=の使い分けが分かりません
inの前はlike、nullの前はis、データ型が数字だと=であってますか?
936NAME IS NULL
2019/05/16(木) 10:01:34.38ID:???
なんか1つもあってないような気がするな

"is null" と "is not null"は単語じゃなく文でワンセット
文字の比較でも =
in の前は like ... え?
937NAME IS NULL
2019/05/16(木) 10:19:46.11ID:???
すいませんありがとうございます
比較の時に、=を使ったりlikeを使ったりが、使い分けがわからないのです
isが出てくるのは、isnullとisnotnullだけですか?
938NAME IS NULL
2019/05/16(木) 10:24:16.07ID:???
一体、何を読んだらわからなくなるんだよ
https://www.atmarkit.co.jp/ait/articles/1201/13/news140.html
939NAME IS NULL
2019/05/16(木) 10:52:01.67ID:???
超初心者なら、慣用句みたいに暗記した方が良いかもよ
940NAME IS NULL
2019/05/16(木) 12:12:40.30ID:???
like……文字列の部分一致検索につかう
=……完全一致検索
is……null比較の構文の一部

nullの扱いはシステムによりけりなのでシステムごとに調べること
941NAME IS NULL
2019/05/16(木) 13:50:42.07ID:???
なるほど、ありがとうございます
ここの方々はエンジニアですか?
自分はマーケティングの担当で自分で使えた方が便利ということで覚えようとしてます
セレクト文しか使わないのですが、色々な条件で、いつ誰が何を買ったとか抽出したく、サブクエリがうまく使えるようになるのが目標です
またアドバイスいただいてもいいですか
942NAME IS NULL
2019/05/16(木) 17:34:30.51ID:???
SQLの書き方なら、ここで聞いて良いですよ

そういう質問を、みんな待ってますから
943NAME IS NULL
2019/05/16(木) 20:13:56.53ID:???
SQL書かなくてもデータ分析できるツールあるからそれ使う方が良いんじゃない
944NAME IS NULL
2019/05/16(木) 20:50:40.01ID:i55lMdWZ
ここにかぎらず不思議なのは5chのスレッドは探せるのに、SQLを解説しているWebサイトや、そのへんに転がっている書籍は視界に入らない人間がいるところ。
945NAME IS NULL
2019/05/17(金) 07:28:38.58ID:???
>>944
> SQLを解説しているWebサイトや、そのへんに転がっている書籍
そう言うのは能動的に探さないと駄目だから
エスパー機能付きのWebサイトとか書籍があればいいんだけどw
946NAME IS NULL
2019/05/17(金) 08:49:53.26ID:nkjAvs1S
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='山田';
947NAME IS NULL
2019/05/17(金) 15:00:48.66ID:???
Publisher.Name って名字しか入ってないの?
948NAME IS NULL
2019/05/17(金) 17:22:15.76ID:???
>>946
Publisherには'山田'ってデータがないんじゃない?
よけいなことだろうけど、
Publisherって言うと出版社のことだと思う
著者ならAuthorにしたいところ
949NAME IS NULL
2019/05/17(金) 19:02:58.57ID:???
>>946
連結する場合select でアスタリスク使わない方がいい
連結側に同じフィールド名があるとエラーになるのでasで別名にしないといけない
950NAME IS NULL
2019/05/17(金) 19:41:17.83ID:???
>>946
SQLは問題ないみたいだから
Publisher.Nameに山田があるか確認するために
まずそのSQLのWHERE句をはずしてどういうデータがあるかを見たほうがよいのでは?
951NAME IS NULL
2019/05/17(金) 20:49:08.09ID:???
>>946
テーブル定義 (CREATE TABLE文) を見たいな
952NAME IS NULL
2019/05/19(日) 15:25:35.49ID:H3ZBKVvV
946です、みなさんありがとうございます
SQLはあってるんですね、よかったです

模範解答は>>949さんが書いてくださってるように、asでテーブルすべてに別名をつけています
テーブル名を指定するときは、別の名前を付けた方がいいんですね
これからやってみます
 
またよろしくお願いします
953NAME IS NULL
2019/05/21(火) 10:14:27.63ID:???
microsoft sql server 2008

テーブル同士を結合するとき、char型の項目とvarchar型の項目とで
結合するときはconvertで型を合わせる必要があるでしょうか?

この項目はマスタテーブルの主キーなのですが、
伝票テーブルに外部キーとしても存在します。
伝票側の項目には必ずしも値が入るとは限らず、空白も存在します。
そのためマスタテーブル側をchar型に、伝票テーブル側をvarchar型にし、
それぞれで外部結合します。
954NAME IS NULL
2019/05/21(火) 19:45:40.67ID:???
https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/data-type-conversion-database-engine
955NAME IS NULL
2019/05/21(火) 23:46:08.20ID:???
そもそもなぜ型を合わせないのか
値がないなら、空白じゃなくてNULL入れろよ

まあ世の中にはNULLと空白を区別できない欠陥DBもあるけどなw
956NAME IS NULL
2019/05/22(水) 01:00:05.54ID:???
主キーにする項目に、値が入らないとか、調布市議
957NAME IS NULL
2019/05/22(水) 03:07:53.51ID:???
キーにしてるから空白
958NAME IS NULL
2019/05/22(水) 06:11:10.78ID:???
NULLと空白を区別できない欠陥DBなんかあるかな
長さゼロの文字列とNULLを区別できない欠陥DBなら知ってるけど
959NAME IS NULL
2019/05/22(水) 06:20:15.84ID:???
空白と空文字列を区別できない欠陥PGなのでは?
960NAME IS NULL
2019/05/22(水) 09:43:26.07ID:???
NULL不許可にしてるんでしょ
NULL撲滅委員会とかあるし
961NAME IS NULL
2019/05/22(水) 17:19:04.11ID:3DWUiXWo
>>958
長さがゼロの文字列だったら、それはNULL値。これが本来のデータベースの定義。
962NAME IS NULL
2019/05/22(水) 18:12:49.17ID:???
長さ0の文字列と=で比較しても良いのかな?
963NAME IS NULL
2019/05/22(水) 19:07:48.33ID:???
長さゼロの文字列とNULLを区別しないのは
Oracle Databaseの有名な欠陥であり
それはOracle社自身も認識していてマニュアルにも書いてある

https://docs.oracle.com/cd/E96517_01/sqlrf/Nulls.html
> Oracle Databaseは現在、長さが0(ゼロ)の文字値を
> NULLとして処理します。ただし、将来のリリースでは
> この処理が変更される場合があるため、空の文字列を
> nullと同じように処理しないことをお薦めします。
964NAME IS NULL
2019/05/22(水) 19:59:58.76ID:???
脱Oracle
それがbest
965NAME IS NULL
2019/05/22(水) 20:47:13.37ID:???
>>963
> ただし、将来のリリースでは
> この処理が変更される場合があるため
まあ、どう見ても無理だろw
966NAME IS NULL
2019/05/22(水) 21:09:06.79ID:???
かなり昔からそういってるからなぁ
そのうちVarchar3型つくるんじゃって話もある
967NAME IS NULL
2019/05/22(水) 21:20:32.64ID:???
Oracleを選ぶメリットがなにもない
968NAME IS NULL
2019/05/22(水) 21:36:21.32ID:???
欠陥であることは分かってるんだけれども
直しちゃうと既存のアプリケーションに甚大な影響が出るんで
直すに直せないんですよー
という気持ちがありありと分かるマニュアルだねえ
969NAME IS NULL
2019/05/22(水) 23:55:25.37ID:???
つーか null と空文字列を同一視するというのは極めて常識的な挙動であって
標準SQLの方が時代遅れと言えるのでは

ここはもう標準を変更してnullも空文字列も、ついでに空白だけのカラムもすべて同一視するようにすべき
null は is で比較するとかいう無意味な制限も廃止して全て = の比較に統一すべき

とするのはどう?
970NAME IS NULL
2019/05/23(木) 00:07:35.60ID:???
こんなところでそんなアホ丸出しの提案して
何かが変わると本気で思っているのか
971NAME IS NULL
2019/05/23(木) 00:26:13.46ID:???
釣りなんだろうな
972NAME IS NULL
2019/05/23(木) 00:45:42.35ID:b4XWIHfq
空文字列とNULLが混在して混乱を招いているシステムは多い。
973NAME IS NULL
2019/05/23(木) 00:54:30.57ID:???
空の文字列とNullを同一視するのが常識とかないと思うんだが
データベースしか触らんやつはそういう常識なの?
974NAME IS NULL
2019/05/23(木) 01:02:33.57ID:???
Oracle社員?が荒らしてるだけ
975NAME IS NULL
2019/05/23(木) 01:05:22.79ID:???
ホントOracleはシステム開発者にとってマイナスなことしかしないよね
976NAME IS NULL
2019/05/23(木) 01:20:10.41ID:???
特定のDBしか触らない奴だとそれが常識だと考えるかも
その場合は、そいつには触らない方が良いと思う
977NAME IS NULL
2019/05/23(木) 01:26:06.81ID:???
ぬるい質問ばかりで暴れたくなった
相手はどのDBでもよかった
978NAME IS NULL
2019/05/23(木) 02:16:05.50ID:???
>>973
例えばC言語で空文字列とnullが同じと言ったらそりゃ変なんだが
抽象度が高いSQLで区別する意味は全くないと思うんだよね
むしろ区別することが当然と考えること自体が何か洗脳されてるという気がするわけ
まあ釣りではあるのだが
979NAME IS NULL
2019/05/23(木) 02:52:16.93ID:TvO7l/JJ
全項目NOT NULLにして集計処理の手間を減らすことはあるな
CSV/TSVを外部テーブルで使うとNULLが使えないことがほとんどよね

外部結合して片側NULLで引っ掛けるのはよく使うから
NULLの概念自体はあってほしいけど
980NAME IS NULL
2019/05/23(木) 08:31:33.80ID:???
nullと空文字列が区別できなくて良いってやつは、nullが値ではないって概念が理解出来ないんだろうな
981NAME IS NULL
2019/05/23(木) 09:17:24.81ID:???
後釣り宣言だっさ
982NAME IS NULL
2019/05/23(木) 10:57:17.75ID:???
>>980
その概念に実用性はあるのか?
それで何か便利なことがあった?
むしろ不便であって弊害しかないオナニー概念だと思うのだが

いや >>970 の言う通り、ここで言っても仕方ないことは分かってるけどね
たまには王様は裸だと言って見たくなる
983NAME IS NULL
2019/05/23(木) 12:25:42.68ID:???
あえて釣られてやるけど、例えば未入力と空文字の入力を区別したいとか普通にあるだろ
984NAME IS NULL
2019/05/23(木) 12:41:39.82ID:???
>>983
あるか? そんなの
空文字の入力は未入力でいいんでわ
985NAME IS NULL
2019/05/23(木) 12:42:22.93ID:???
未入力よりも未設定ってことでは
986NAME IS NULL
2019/05/23(木) 13:19:01.66ID:???
>>985
空文字の入力を未設定と区別する必要があるのかね
それを区別しようとすることでシステムは複雑になり間違いも多くなる
987NAME IS NULL
2019/05/23(木) 13:58:31.76ID:???
セルの値としてはどうかわからないが,テーブル結合後の名テ―ブルの行の属性値としては有りだと思う
988NAME IS NULL
2019/05/23(木) 14:19:42.47ID:???
>>987
そうかねぇ
むしろ使い分けする運用こそ危うい気がするのだが
989NAME IS NULL
2019/05/23(木) 18:02:19.51ID:???
整数値カラムでouter joinしたとき
存在しない行の整数値カラムの値は
何になるのでしょうか?
990NAME IS NULL
2019/05/23(木) 20:00:04.84ID:RM6eL1FJ
>>988
バカが使えばどんな道具も危ないからな
991NAME IS NULL
2019/05/23(木) 20:46:13.41ID:???
次スレ

SQL質疑応答スレ 19問目
http://mevius.2ch.net/test/read.cgi/db/1558610740/
992NAME IS NULL
2019/05/23(木) 20:48:14.21ID:???
間違えた

SQL質疑応答スレ 19問目
http://2chb.net/r/db/1558610740/
993NAME IS NULL
2019/05/23(木) 23:29:13.76ID:???
>>992

乙です
994NAME IS NULL
2019/05/23(木) 23:30:17.28ID:???
どうしてオラクルは、ああいう苦しいコメント出しているの?
995NAME IS NULL
2019/05/24(金) 07:31:48.91ID:???
「sqlなら曖昧でよくね?」っていうけど
連携するプログラム側が困るんよね。それじゃぁ

運用担当がデータ見るだけに使うなら
テキトーでも許されるのかもしれんけど
996NAME IS NULL
2019/05/24(金) 13:54:52.91ID:???
NULLとかnilとかNoneについては、「値ではない」という説明の仕方より、「あくまでも値だけど、約束事として、(概念的に)値なしと呼びうる状況(の一部)に対応する値として利用できる特殊な値」という説明の仕方の方が誤解を招きにくいんじゃないか。
たとえば、空の配列の長さが0、Noneが1個入った配列の長さが1という言語で「Noneは値ではない」という説明はしづらい気がする。

結局、(概念的に)値なしと呼びうる状況のうち、どれにNULL/nil/Noneを対応させて、どれに空文字列・空配列を対応させるか(undefinedがある言語についてはそれも)というマッピングを整理しておくべきという話かなと思うが。
997NAME IS NULL
2019/05/24(金) 17:17:05.16ID:???
値とは何んなのか?
998NAME IS NULL
2019/05/24(金) 18:24:26.05ID:???
頭ぱっぱらぱーのウチの運用が言いそう
999NAME IS NULL
2019/05/24(金) 18:49:43.18ID:???
999
1000NAME IS NULL
2019/05/24(金) 19:56:41.22ID:???
1000
-curl
lud20250126073411ca
このスレへの固定リンク: http://5chb.net/r/db/1515071542/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | >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