X



トップページDB@2ch掲示板
1002コメント294KB
SQL初心者質問スレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。
0161NAME IS NULL
垢版 |
2016/10/31(月) 06:20:51.45ID:tmLBVYkg
SQLserber?serberって何?
0162NAME IS NULL
垢版 |
2016/10/31(月) 07:34:39.53ID:???
>>161
こんな簡単な間違いもくみ取れないバカは黙ってろw
0163NAME IS NULL
垢版 |
2016/10/31(月) 13:41:48.42ID:???
その環境での開発経験が必須スキルって面接なら不合格になるべき状況だし、
そうじゃないなら環境作ることができて、足し算するだけのストアドつくれりゃあとはどうとでもなると思うよ。
0164154
垢版 |
2016/11/04(金) 10:04:18.05ID:hFXlISxO
>>160
ありがとうございます。
ありのままのスキルをお話ししてきました。

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

本日結果が出るのでお世話になったお礼に結果はご報告させていただきます。
0165NAME IS NULL
垢版 |
2016/11/07(月) 18:39:43.62ID:???
サブクエリを使う場合、サブクエリも範囲を絞ることで結果扱うデータ量が減って計算時間が短くなりますが、コードの可読性が悪くなります。
なにか良いアイデアはありませんか?
0166NAME IS NULL
垢版 |
2016/11/07(月) 19:12:51.29ID:???
サブクエリを使わない
0168NAME IS NULL
垢版 |
2016/11/07(月) 22:59:55.73ID:GjWHsT4m
サブクエリエオ使ったぐらいで「コードの可読性が悪くなります。」なんてウスラバカはそしたらここに書き込む低能
0169NAME IS NULL
垢版 |
2016/11/07(月) 23:29:01.28ID:???
いっそプロシージャーにして見えなくしてしまったら?
0170NAME IS NULL
垢版 |
2016/11/08(火) 06:31:47.39ID:???
関数みたいなことは出来ないの?
0172NAME IS NULL
垢版 |
2016/12/14(水) 04:41:53.30ID:Z9OjftC8
よろしければ教えていただければと思います
変数名に使われるstrsplって何の略でしょうか?

どうにも気になってしまって
0173NAME IS NULL
垢版 |
2016/12/14(水) 08:17:11.10ID:???
string split かねぇ
ggrと strsql を案内されるな
0175NAME IS NULL
垢版 |
2016/12/15(木) 17:35:03.27ID:???
ちょっと教えて欲しいんですけど。
select * で出てくるものについて、 レコードは並び順は不定ってのは知ってるんですが、カラムの順ってのはどうなってるんですか?
create tableで定義した順?
mysqlで自分で作ったテーブルで見るとなんか定義した順みたいだけど。。。
0176NAME IS NULL
垢版 |
2016/12/15(木) 17:44:44.64ID:???
まあこれは定義した順
でもまあそういうのが気になる状況では * あまり使わないかなあ
0177NAME IS NULL
垢版 |
2016/12/15(木) 19:01:53.50ID:???
>>176
ありがとです。自分で書いているのは * の時でも全部カラム名を書くようにはしているんですが。
0178NAME IS NULL
垢版 |
2016/12/16(金) 04:41:17.71ID:???
select * で列リストが定義順でない実装は見たことがないけど
それってちゃんとSQL仕様として決まってるのか
0179NAME IS NULL
垢版 |
2016/12/16(金) 08:01:01.01ID:???
>>178
知らんけど決まってないと * 表記自体使えなくね?
insert もカラム指定なくても使えるし。
information_schema 見れば分かるのかな。
0180NAME IS NULL
垢版 |
2016/12/17(土) 02:25:18.86ID:???
列リスト指定しないinsertは*とは書かないからなぁ
information_schemaで列の定義順がみれたしても、*の出力が定義順だという保証にはならないだろ

集合論として行の順番に意味がないなら、列の順番にも意味はないような気がするけど
列の順番はデータじゃなくて定義の一部だって言われたら意味があるような気もするが
0181NAME IS NULL
垢版 |
2016/12/17(土) 21:14:23.77ID:???
>>180
select * の順番は何かしら定義されていると思うよ。そうでないと何で select * と書くことが認められているのか分からない。

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

あと列リストは組とかタプルとかいうやつで集合じゃないでしょ。こっちは順序あるし同じ値が勝手に1つにまとめられたらチョー困る。
0182NAME IS NULL
垢版 |
2016/12/24(土) 02:14:16.89ID:???
table1
code  comment
-----  -------------
A001  コメント1です
A002  コメント2です
A005  コメント5です


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

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

keyword = '1です'

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

事前にtable1でキーワードに一致するものを見付けてそれを含むtable2の列を探せば良いと思うのですが、
SQL初心者なのでとっかかりが分かりません。
どういう命令でやるべきなのかヒントを教えて下さい。
0183NAME IS NULL
垢版 |
2016/12/24(土) 04:29:21.61ID:???
ヒントをってことなんだけど、table2からA001のコードを持つ行を取得することはできるんだろうか
0184NAME IS NULL
垢版 |
2016/12/24(土) 07:36:26.32ID:???
Like と In でできるだろうけど、遅そう。
0185NAME IS NULL
垢版 |
2016/12/24(土) 09:08:19.15ID:???
>>184
そのSQLを書いて頂けませんでしょうか?
0186NAME IS NULL
垢版 |
2016/12/24(土) 09:22:17.32ID:???
ヒントじゃねーじゃん
0188NAME IS NULL
垢版 |
2016/12/24(土) 11:03:45.73ID:???
select t21.name
from table1 as t1
inner join table2 as t21 on t1.code = t21.code1
where t1.comment like '%1です%'
union
select t22.name
from table1 as t1
inner join table2 as t22 on t1.code = t22.code2
where t1.comment like '%1です%'
union
select
t23.name
from table1 as t1
inner join table2 as t23 on t1.code = t23.code3
where t1.comment like '%1です%'


多分↑で通るけど、もっといい模範解答求む
0189NAME IS NULL
垢版 |
2016/12/24(土) 12:12:04.02ID:???
ヒント like in exists
0191NAME IS NULL
垢版 |
2016/12/24(土) 13:13:57.30ID:???
select name from table2 t2,
(select code from table1 where comment like '%1です%') t1
where
t2.code1 = t1.code or t2.code2 = t1.code or t2.code3 = t1.code;
0192NAME IS NULL
垢版 |
2016/12/24(土) 13:43:58.17ID:???
>>191
さんの方法で出来ました。
>>188
さんの方法も試したのですが、うまく行きませんでした。
私のやり方が悪いのかもしれません。
皆さんありがとうございました。助かりました。
0193NAME IS NULL
垢版 |
2016/12/24(土) 14:45:42.42ID:???
もう一つ教えて下さい。
>191さんの方式ですと出力が
name, code になりますが name のみにして distinct したいのですが
やり方が分かりません。
宜しくお願い致します。
0194NAME IS NULL
垢版 |
2016/12/24(土) 15:01:12.39ID:???
>>193
その通りやってますか?
select文に指定している name しか表示しないはずですけど

先頭行に distinct 加えれば重複している name は消えます。
select distinct name from table2 t2,
0195NAME IS NULL
垢版 |
2016/12/25(日) 01:34:13.09ID:G9kEUO4A
csvからphpmyadminでインポートしてるんだけど途中で止まってしまう
7000行くらいのデータが3000ちょいで切れて、その後継ぎ足しても10行程でまた切れる
あんまりsql関係ないけど原因わかる人いたら教えて
ちなみにxampp
0196NAME IS NULL
垢版 |
2016/12/25(日) 02:16:42.88ID:???
>>194
勘違いでした。
select * ...
としていました。
うまく行きました。
ちなみに>191のような
selectの中に(select ... )があるのは何ていう方式なのでしょうか?
ググルためのキーワードを教えて下さい。
0197NAME IS NULL
垢版 |
2016/12/25(日) 02:22:28.53ID:???
えっ、データベースの板に来るくらいなら、いくらなんでもサブクエリという名前くらい知っとけよ
0198NAME IS NULL
垢版 |
2016/12/25(日) 12:45:10.61ID:???
>>197
ありがとうございました。
サブクエリ、初めて耳にしました。難しいです。
一時テーブル(#テーブル)と言うやつとは違うんですか?
0199NAME IS NULL
垢版 |
2016/12/25(日) 13:04:03.09ID:???
一応ここは初心者スレって名前ついているし
ベテランから見たら知ってて当たり前と思う質問でも
優しく回答してやれよ
0200NAME IS NULL
垢版 |
2016/12/25(日) 13:37:54.49ID:GwZs/74I
>>195

php文字化けとかめんどくさいから
.Netとかでそういうのやってる
0201NAME IS NULL
垢版 |
2016/12/25(日) 23:40:17.47ID:G9kEUO4A
195だが
エラー行から改めて入れて、エラー行から改めて入れて
何回かやったら全部入ったわ
原因はわからん
なんやら文字コード的なエラーメッセージだった気がする
0203NAME IS NULL
垢版 |
2016/12/26(月) 17:20:52.17ID:5PC6tP3J
DBに突っ込んだデータに対してちょっと込み入った操作をしたいとき、
例えば、「ORDER BY id ASC した状態で、前の行と比較して DATA の値が2以上離れてる行が3行以上続く」ケースを抜き出したいとき、
一般的に (個人的にでもいいです) どんなやり方が最も望ましいんでしょうか?

全行ガサッと取ってきてプログラム側でせこせこ判定していく以外思いつけなくて、これでいいのか不安です
0204NAME IS NULL
垢版 |
2016/12/26(月) 18:47:08.33ID:???
>>203
SQLや処理系ごとの拡張で頑張るとか
ストアドで処理するとか

それだけではどの方法が最善かはわからん
0205NAME IS NULL
垢版 |
2016/12/26(月) 18:52:31.92ID:???
>>203
実現できる方法でやる。
結果が問題なければ
そもそも何を不安に思う?
それは何故よ?
0207NAME IS NULL
垢版 |
2016/12/26(月) 20:24:10.05ID:???
日本終了

ーーーーーーーーーーーーーーーーー
 22日からの大雪で航空機が相次いで欠航となった北海道の新千歳空港で、24日夜、100人あまりの中国人が抗議し激しく詰め寄る騒ぎがあった。
0208NAME IS NULL
垢版 |
2016/12/26(月) 22:19:59.12ID:???
>>203
window関数のlagを使った例

select
id
,data
from
(
select
id
,data
,data - lag(data, 1) over(order by id) as delta1
,lag(data, 1) over(order by id) - lag(data, 2) over(order by id) as delta2
from
tab1
)
where
abs(delta1) >= 2
and abs(delta2) >= 2
;
0209NAME IS NULL
垢版 |
2016/12/26(月) 22:22:29.01ID:???
select
id
,data
from
(
select
id
,data
,data - lag(data, 1) over(order by id) as delta1
,lag(data, 1) over(order by id) - lag(data, 2) over(order by id) as delta2
from
tab1
)
where
abs(delta1) >= 2
and abs(delta2) >= 2
;
0210NAME IS NULL
垢版 |
2017/01/02(月) 16:54:20.40ID:???
教えて下さい。
カラムが
code,:index
name:名前
date_from:始めの日付 2017/1/1
date_to:終わりの日付 2017/1/3
days:差分 2
というレコードが1つあった場合に

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

という風に出力するSQL文を教えて下さい。
ちなみに postgresql です。
0211NAME IS NULL
垢版 |
2017/01/02(月) 17:15:10.65ID:???
>days:差分 2

このカラムの意味が分からない
0212NAME IS NULL
垢版 |
2017/01/02(月) 20:22:33.09ID:???
質問させていただきます。

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

t1テーブルのdtimeからt2テーブルのdateと日付(Y-m-d)部分が一致しないレコードを取り出すにはどのような記述をすれば良いでしょうか
この例の場合はdateにある2,3日のレコードを省いて1,4日のレコードのみを取り出したいです。
0213NAME IS NULL
垢版 |
2017/01/02(月) 20:37:55.02ID:???
>>210
365行のテンポラリテーブルを用意してうんぬん
0214NAME IS NULL
垢版 |
2017/01/02(月) 20:39:30.91ID:???
>>212
標準SQLの範囲じゃないような気もするけど、
DateTime型からDateだけ取り出す関数があるだろうからそれを使う。
0215NAME IS NULL
垢版 |
2017/01/02(月) 21:38:43.27ID:???
>>210
Select date_from + g.gs as 日付
, code1,name
From Test1 t
,(
  select generate_series(0,10) as gs
) g
Where g.gs <= t.days;


でも>>211が言うようにdaysは演算で処理すべきだべ
0216NAME IS NULL
垢版 |
2017/01/02(月) 21:45:28.71ID:???
>>212
mysql と仮定して
select dtime from t1 where
date(dtime) not in (select date from t2);
0217NAME IS NULL
垢版 |
2017/01/03(火) 09:50:33.91ID:???
>>213,215
できました。ありがとうございました。

>>211
テーブル設計自体はすでにあったものでして…
0218NAME IS NULL
垢版 |
2017/01/03(火) 10:39:07.59ID:???
>>214
>>216
できました、ありがとうございました。
datetimeをdateに置き換える簡単な方法があったんですね。
0219NAME IS NULL
垢版 |
2017/01/14(土) 10:16:41.35ID:???
phpmyadminでデータベースを作成しようと思ったのですがSQLタブのテキストエリアにコピペができません(右クリックしてもコピー、切り取り、貼り付けがでない)
コピペをするのに設定などがあるのでしょうか?
0220NAME IS NULL
垢版 |
2017/01/14(土) 10:36:37.05ID:NxfK13Qk
MySQLの質問させてください
データ更新するとき、phpmyadminのインポートで更新するには、sqlのファイルはどのように書けばいいのでしょうか?

新規作成するときは、INSERT文でこんな風にしました
上書きするときの書き方があれば教えてください
INSERT INTO `sample_table` (`abc_id`, `efg_id`, `meta_key`, `meta_value`) VALUES
(202, 4002, '_thumbnail_id', '4001'),
(212, 4012, '_thumbnail_id', '4011'),
(222, 4022, '_thumbnail_id', '4021');
0221NAME IS NULL
垢版 |
2017/01/14(土) 12:04:14.38ID:???
外部結合クエリで
・A LEFT JOIN B
・B RIGHT JOIN A

これらは全く同じものではなく、結果が異なる場合があるので
外部結合は左のみ使うべしってどこかのサイトで見た記憶がある
どなたかそのカラクリを知っていたら教えて
0222NAME IS NULL
垢版 |
2017/01/14(土) 18:06:07.65ID:???
>>221
俺の中ではそんな事ないから答えられない
0225NAME IS NULL
垢版 |
2017/01/14(土) 21:05:14.36ID:???
>>220

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

それぞれについて説明をちゃんと読んでから使ってね
0226NAME IS NULL
垢版 |
2017/01/15(日) 22:54:38.21ID:???
>>225
ありがとうございます!
確認して使ってみます
0228NAME IS NULL
垢版 |
2017/01/19(木) 06:50:34.21ID:???
DISTINCT がキーボードで打ちづらいです
0229NAME IS NULL
垢版 |
2017/01/19(木) 12:41:28.22ID:???
そんなあなたにオススメDvorak配列キーボード
0230NAME IS NULL
垢版 |
2017/01/19(木) 18:01:27.09ID:???
ユーザー登録ありのシステムを組むにあたってユーザーが2種類いる場合
テーブルは分けるべきでしょうか?

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

スレ違いでしたらすいません。
0232NAME IS NULL
垢版 |
2017/01/19(木) 18:56:48.57ID:???
>>231
スレ違いでしたねすいません
スレを教えていただきありがとうございます。
0233NAME IS NULL
垢版 |
2017/01/24(火) 21:51:15.94ID:oe0NRhg4
何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信

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

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

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

仄めかしの隠語は
猫 穴 水 仲間 
0236NAME IS NULL
垢版 |
2017/01/31(火) 13:26:45.74ID:???
selectで取得するカラムにAUTO_INCREMENTを指定する方法はありませんか
0237NAME IS NULL
垢版 |
2017/01/31(火) 17:11:46.30ID:???
>>236
取得したレコードに連番を付けたいなら方法はある
もしそうなら、これ以降は自分が使っているデータベーススレに移動しろ
0238NAME IS NULL
垢版 |
2017/02/01(水) 19:11:49.33ID:???
>>236
開始番号はどうやって決めるの?
0239NAME IS NULL
垢版 |
2017/02/02(木) 07:10:22.66ID:???
普通は1からだろ100からとか別でも足せばいい
0240NAME IS NULL
垢版 |
2017/02/06(月) 16:33:18.22ID:???
>>237
どのDBでも大差ないだろ・・・
と思って実験したらmysqlとoracleとpostgresとsqliteで全部やり方違うのな
ちょっと面白かった
0241NAME IS NULL
垢版 |
2017/02/08(水) 00:06:58.96ID:wCjGsKbG
>>238
フェッチした順に普通は1から振られる。
0242NAME IS NULL
垢版 |
2017/02/08(水) 23:19:57.51ID:???
質問させて頂きます

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

レコード例

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

00000, W010, false, false, false, …

権限管理10行のテンプレと追加したい社員IDのリストはあります
SQL Management StudioかAccessを用いて作業したいのですが、この道具をどのように活かしてクエリを書けばいいのか思い浮かばなかったので質問させて頂きました
アドバイスよろしくお願いします
0243NAME IS NULL
垢版 |
2017/02/09(木) 01:15:59.62ID:I+KHRssK
>>242
絞り込み条件が社員IDと画面IDなんだろ?
何がやりたいのか書いてくれ。
0244NAME IS NULL
垢版 |
2017/02/09(木) 07:12:02.44ID:???
>>242
手作業多めでいいなら
1 適当なエディタでカンマをタブに変換
2 excelを開いてシート全体を文字列に設定
3 1をシートに貼り付け
4 テーブルとおなじ列に加工
5 accessのテーブルに貼り付け
まあinsert文に加工して実行でもいいかもね
0245NAME IS NULL
垢版 |
2017/02/09(木) 09:16:23.10ID:I+KHRssK
>>244
どう読んだらCSVファイルの取り込みと解釈できるのか?
0246NAME IS NULL
垢版 |
2017/02/09(木) 12:27:52.21ID:???
>>243-245
レスありがとうございます

今回は>>244さんのアドバイスを元に
社員IDと画面IDのテンプレを二重ループで合体させてテキストに出力した5000行を
テキストエディタとExcelで整形してAccessに貼り付けて追加しました
0247NAME IS NULL
垢版 |
2017/02/09(木) 12:36:20.74ID:???
馬鹿がよく分からん絡み方してるw
0248NAME IS NULL
垢版 |
2017/02/09(木) 18:13:26.82ID:???
言語の設定ってインストールするときに指定する仕様なんですか?
何も指定しないと勝手にユニコードになると思っていたのですが
0249NAME IS NULL
垢版 |
2017/02/09(木) 18:16:49.08ID:???
>>248
自分が使っているデータベーススレに移動して、疑問に思っていることをもっと具体的に聞け
0250NAME IS NULL
垢版 |
2017/02/09(木) 18:30:19.23ID:???
>>249
移動します
SQLServer2012なんだけど
俺もよくわかってない
0251NAME IS NULL
垢版 |
2017/02/09(木) 22:23:19.19ID:???
>>242
insert ... select ... from 権限管理10行のテンプレ (innnerとかcrossとか)join 追加したい社員IDのリスト
で行けるんじゃないのか
もうエクセル整形でやったのならそれでいいけど
0252NAME IS NULL
垢版 |
2017/02/09(木) 22:32:25.23ID:???
何をやろうとしているかは大体想像できるんだが、
こういう仕組みを実装する時って、
個人単位で権限を操作するのかな?
新しい機能が追加される度に、全てのユーザーに
権限の可否を設定しないといけなくならないか?
0253NAME IS NULL
垢版 |
2017/02/10(金) 00:54:29.88ID:UY3eO74e
>>252
ロール
0254NAME IS NULL
垢版 |
2017/02/10(金) 03:00:09.46ID:???
>>251
自分も「これは直積(cross join)でやるかな」と思ったんだけど
直積って実用上はあんまり出てこないんだよな
(SQLの考え方としてはとても重要だと思うのだけど)
それを初心者スレで勧めていいものかと躊躇ってしまった
0255NAME IS NULL
垢版 |
2017/02/10(金) 06:43:28.54ID:???
244書いたの俺だけどリストって書いてあったから
深く考えずにテキストファイルかなんかだと思ったわ
騒がせてすまんね
0256NAME IS NULL
垢版 |
2017/02/10(金) 08:29:16.23ID:???
>>242
要件にもよるかも知らんが事前に全部追加せんでいい方向もある。
ユーザーテーブルとの乖離にどう対処するか面倒だし。
ユーザーテーブルがなかったら、うん、まぁ、うん。
0257NAME IS NULL
垢版 |
2017/02/15(水) 17:17:09.16ID:???
超初心者です。
ユーザーごとに掲示板を作る場合
例えば
boardsというテーブルを作って、すべての掲示板の書き込みをそこで管理するのがいいのか、
それともユーザーごとに001boardsみたいにテーブルを作って管理するのがいいのでしょうか?
一元管理の場合、書き込み数が多くなった場合に処理が遅くなるなどの、問題点はないでしょうか?

アドバイスをよろしくおねがいします<(_ _)>
0258NAME IS NULL
垢版 |
2017/02/15(水) 17:33:15.31ID:IlwZKpGL
>>257
ユーザーごとにテーブルを作るのは管理がたいへんだろ。性能の問題はかなりのデータ量でないかぎりは問題ないと思っていい。
0259NAME IS NULL
垢版 |
2017/02/15(水) 17:53:19.35ID:???
>>258
一元管理で設計してみたいと思います。
アドバイスありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況