X



トップページDB@2ch掲示板
1002コメント294KB
SQL初心者質問スレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/05/12(木) 05:29:07.61ID:HmbS4CfD
SQL初心者用の質問スレッドです。
0598NAME IS NULL
垢版 |
2017/05/14(日) 21:10:45.84ID:sz1S3gQK
>>596
group by name

を付ける
0599NAME IS NULL
垢版 |
2017/05/15(月) 11:10:24.32ID:???
>>597さんのがまさに求めていたものでした!
whereかhavingで迷ってたんですがwhereだったんですね!
>>598さんも本当にありがとうございました!
0600悪質オンラインショップ
垢版 |
2017/05/15(月) 13:56:08.35ID:YIXunVhi
サイズ違いの商品を送り 返品交換できない 悪質商法 ****E  
   
サイズ違いの商品を送り 返品交換できない 悪質商法 B**

悪質オンラインショップ



担当者が悪質か

2回目のでんわたんとう窓口は すりかえようで いみふにごまkして 

----------------------------------
**** *** オンラインショップのアイテムは独自の方法により採寸しておりますので、
全て実際の商品を計測した実寸サイズとなっております。
ご注文いただいております商品サイズは、正しいものでございます。

誠に恐れ入りますが、サイズが合わない、イメージと異なるといったご理由での
ご購入商品の返品・交換はお断りさせていただいております。

お客様のご希望にそう事が出来ず誠に申し訳ございませんが、
何卒ご了承の程よろしくお願い申し上げます。

----------------------------------

24いんちって Mですか? WEBの説明と実際の商品が違う
0602NAME IS NULL
垢版 |
2017/05/15(月) 14:13:01.96ID:YIXunVhi
ろせぶd
0604NAME IS NULL
垢版 |
2017/05/15(月) 22:04:09.83ID:???
今の会社があまりにもくだらなくて転職のためSQL覚えたい
今はExcelで簡単なVBA書いてる
独学でもどこかにまず入れるだろうか…
それとPostgreSQLとMySQLとどちらがいいのか教えてください
0605NAME IS NULL
垢版 |
2017/05/15(月) 22:20:38.67ID:???
>>604
安心して
いま四種類同時に使ってるから
0606NAME IS NULL
垢版 |
2017/05/15(月) 22:22:08.36ID:???
4種類、じゃ全部視野に入れます
4つ教えてください
0607NAME IS NULL
垢版 |
2017/05/15(月) 22:42:51.61ID:???
標準SQLを覚えるならOracle Express Editionを入れて
alter session set flagger=entry; とか
0609NAME IS NULL
垢版 |
2017/05/15(月) 22:55:33.47ID:???
DB2も入れてやれ
Express-Cっていう無償のエディションもあるぞ
0610NAME IS NULL
垢版 |
2017/05/15(月) 23:16:49.66ID:???
>>607>>608>>609
ありがとうございます!
もうVlookupひとつしか使えない人たちに便利屋扱いされたうえに勝手な都合でくだらない作業詰め込まれるのはゴメンです
最初から綺麗に無駄なく作っておけばいいのに…
でもそれを更に汚くしたのは短期で来た素人自称プログラマ
VBAばかり走らせて荒っぽい処理してエラー残骸があちこちあったり重複ばかりのファイルを量産してった
プログラム覚えてもああいう仕事は絶対したくないと思う
取っ掛かりとしてSQL覚えてその次Pythonとかも覚えたいです
絶対今のところ抜け出してやる
0613NAME IS NULL
垢版 |
2017/05/16(火) 17:20:38.68ID:zTCyNjTh
すいません、質問させてください。
mySQLとSequel Proを使ってテーブルまで作成しています。

レコード登録時に、2つのIDをくっつけて
3つめのIDをSQL内で自動生成したいのですが、
何か効率的な方法はありますでしょうか。

ID1: 100(手入力)
ID2: 101(手入力)

ID3: 100101(自動生成)

データ型はいずれもINTで設定しております。
よろしくお願いします。
0614NAME IS NULL
垢版 |
2017/05/16(火) 17:56:29.93ID:???
>>613
それ、2行登録したら1行自動生成するってこと?
0615NAME IS NULL
垢版 |
2017/05/16(火) 18:36:37.93ID:+kwvKlmq
>>613
行列、列行なのかわからない聞き方だが、それが列、カラムだと想定すると、トリガーでも作らないとできないだろうな。

同じレコードのカラムから導出したデータを別カラムで持つのも馬鹿っぽい。

しかも数値型を連結するなら、いったん文字型に変換しないといけない。

なんでそんなことをしたいのか。ID3なんてビューを作ってみせればいいんじゃないの?
0616NAME IS NULL
垢版 |
2017/05/16(火) 18:56:41.08ID:zTCyNjTh
>>614
>>615
すいません、DBわかってなくて失礼しました。

ID1 ID2 ID3 name
100 101 100101 hoge
101 201 101201 fuga

ID1とID2を繋げて、ID3を生成したかったです。
プライマリキーとは別に、識別用としてのユニークなIDが必要なので。
単純に繋げるには、文字列でやらないとダメみたいですね。
ありがとうございます。
0617NAME IS NULL
垢版 |
2017/05/16(火) 18:57:13.28ID:???
ID2が2桁の時どうするの?
ID1と2と3は同じレコードのカラムなの?
手入力ってINSERT文書くの?
0618NAME IS NULL
垢版 |
2017/05/16(火) 18:59:58.53ID:???
lpad()で0埋めしてcontat で連結して castで数値にする手もあるけど
実行時に必要ならビューでいいよね
0619NAME IS NULL
垢版 |
2017/05/16(火) 19:14:46.64ID:zTCyNjTh
>>617
ID1, 2は3桁のものしか用意しないので基本的には問題ないかと。
すべて同じレコードのカラムですね。
先に手入力と書きましたが、実際はほぼクライアントツールの
インポート経由で登録になります。

>>618
ビューってのがあるんですね、調べてみます。

ありがとうございます。
0620NAME IS NULL
垢版 |
2017/05/16(火) 23:30:43.64ID:K44u4O+q
>>619
3桁で計算もしないなら、データ型が数値型なのは変だよ。
0621NAME IS NULL
垢版 |
2017/05/17(水) 06:52:26.40ID:???
>>620
お前の根拠もない意見なんて聞いてねえから
0622NAME IS NULL
垢版 |
2017/05/17(水) 11:53:42.80ID:GIMFSdsg
>>621
初心者は数字は数値と思い込むのはよくあることだろ。
0623NAME IS NULL
垢版 |
2017/05/17(水) 12:21:15.28ID:???
なんの禅問答やそれ
0624NAME IS NULL
垢版 |
2017/05/17(水) 12:26:07.45ID:???
何でこんなに質問外の話を夢中になって始めるか、理解出来ない
0625NAME IS NULL
垢版 |
2017/05/17(水) 12:33:06.84ID:???
>>624
初心者は質問内は質問外と思い込むのはよくあることだろ。
0626NAME IS NULL
垢版 |
2017/05/17(水) 21:02:17.08ID:???
>>619
どちらも数値で桁数が3桁固定なら、ID1 * 1000 + ID2でどうだろうか
0627NAME IS NULL
垢版 |
2017/05/18(木) 10:55:50.15ID:???
number(string(id1) || string(id2))
0628NAME IS NULL
垢版 |
2017/05/20(土) 07:59:43.67ID:Y78/Agfu
insert時かselect時に導出すればいいようなものをなんで別カラムで持ちたがるのか、理由をまったく言わないからなw
0629NAME IS NULL
垢版 |
2017/05/21(日) 00:12:32.34ID:???
新ギャグ考えたので聞いてください。

ななこSQL
0630NAME IS NULL
垢版 |
2017/05/21(日) 12:07:06.78ID:oc3Ojy/D
>>629
おっさん乙
0631NAME IS NULL
垢版 |
2017/05/21(日) 19:24:12.15ID:9z61e5/E
何がギャグなのか、誰か解説頼む
0632NAME IS NULL
垢版 |
2017/05/21(日) 19:31:42.54ID:oc3Ojy/D
>>631
ななこSOS
0633NAME IS NULL
垢版 |
2017/05/21(日) 23:20:12.41ID:???
マジレスしてくれた人、ありがとう

うううむ
0634NAME IS NULL
垢版 |
2017/05/22(月) 22:48:44.88ID:???
SELECT column1,column2,column3
FROM table123
WHERE column1 like '%hoge%' OR column2 like '%hoge%' OR column3 like '%hoge%'

こういうクエリがあるんですが
column1〜3で2つのキーワードのAND検索をしたい場合どう書けばいいのでしょうか?

SELECT column1,column2,column3
FROM table123
WHERE (column1 like '%hoge%' AND column1 like '%drz%')
OR (column2 like '%hoge%' AND column2 like '%drz%')
OR (column3 like '%hoge%' AND column3 like '%drz%')
以下のように書いたのですが検索できませんでした
またもっとシンプルに書く方法があれば教えてください
0635NAME IS NULL
垢版 |
2017/05/23(火) 11:32:21.57ID:???
そもそも
>(column1 like '%hoge%' AND column1 like '%drz%')
同じc1カラムにhogeとdrzの両方があるもの、というのはあってるの?
0636NAME IS NULL
垢版 |
2017/05/23(火) 12:27:04.39ID:???
失礼しました、よく考えたら違いました
column1〜3でhoge、drzとあればいいんです
column1にhogeとあってcolumn2もしくは3にdrzとあるものを抽出したいのです

WHERE ((column1 like '%hoge%' OR column1 like '%drz%') AND (column2 like '%hoge%' OR column2 like '%drz%'))
OR ((column1 like '%hoge%' OR column1 like '%drz%') AND (column3 like '%hoge%' OR column3 like '%drz%'))
((column1 like '%hoge%' OR column1 like '%drz%') OR (column2 like '%hoge%' OR column2 like '%drz%'))
すごく長いですがこんな感じなのでしょうか?
もっと綺麗にかけないのでしょうか?
0637NAME IS NULL
垢版 |
2017/05/23(火) 12:29:44.29ID:???
RDBMS何?
正規表現使えるやつならかなり短くできるけど、、
標準でもなんとかなるかな、長くてまだよく見てないw
0638NAME IS NULL
垢版 |
2017/05/23(火) 12:34:54.13ID:???
まだやりたいこと読み切ってるわけじゃないが
ANDの部分をサブクエリにすれば同じ検索を2回書かなくて済みそうだね
0639NAME IS NULL
垢版 |
2017/05/23(火) 13:50:09.05ID:???
>>636
それだとhogeしかない場合でもマッチしてしまうんじゃないか?
0640NAME IS NULL
垢版 |
2017/05/23(火) 18:50:28.38ID:???
 where column1 || column2 || column3 like '%hoge%'
 and column1 || column2 || column3 like '%drz%'
でいいと思う(|| はDBごとに適切な文字列連結演算子に読み替えて)

部分一致じゃあどのみち普通のインデックスは使えないし
速度を出したいならちゃんとした全文検索機能のあるDBを使うべき
0641NAME IS NULL
垢版 |
2017/05/23(火) 20:05:04.58ID:???
>>634
WHERE column1 + ',' + column2 + ',' + column3 like '%hoge%' and column1 + ',' + column2 + ',' + column3 like '%drz%'
0642NAME IS NULL
垢版 |
2017/05/23(火) 20:07:29.14ID:???
>>640
それ column1 = 'ho', columu2 = 'ged', column3 = 'rz' でヒットしちゃうぞ
0643NAME IS NULL
垢版 |
2017/05/23(火) 20:11:47.84ID:???
>>642
連結する時に適当なセパレータ文字を挟めばいいやん。
0644NAME IS NULL
垢版 |
2017/05/23(火) 22:05:46.88ID:???
>>636
そういうもの。
対象のカラムやキーワードの数が変わっても困らないような動的クエリの仕組みに頭を使った方がいい。
0645NAME IS NULL
垢版 |
2017/05/23(火) 22:19:24.15ID:zLCGMc7G
>>644
そもそもデータモデルがおかしいだろw
0646NAME IS NULL
垢版 |
2017/05/23(火) 23:28:42.12ID:???
もしcolumn1/2/3が相互に交換可能なのだとしたら第一正規形ではないことになるが、
>>636だけからはデータモデルがおかしいと断言はできんだろう。
0647NAME IS NULL
垢版 |
2017/05/24(水) 05:27:57.36ID:LjZe7sN5
no existか積集合演算子でできるが、このSELECT文がメインだったらデータモデルがおかしい。
0648NAME IS NULL
垢版 |
2017/05/24(水) 06:45:47.07ID:???
データモデル厨は要らんよ
まあケチ付けたいだけなんだろうけど
0649NAME IS NULL
垢版 |
2017/05/24(水) 19:01:22.36ID:???
フィールドを>>640みたいに|| で文字列連結するのって、内部で何が起こってるんですか?
ORより速いんですかね?
ORより積極的に使った方がいいですか?
0651NAME IS NULL
垢版 |
2017/05/24(水) 22:34:09.99ID:???
内部で何が起こってるのかを気にする必要がないのがSQLの良いところやで
実行速度が気になるんだったら自分で目的に最適化したDBを作ったほうが速い
0652NAME IS NULL
垢版 |
2017/05/24(水) 23:07:44.65ID:???
まあそれは建前であって実際のところは内部動作もある程度知っていないと
使い物にならないことも多いからねえ
自動チューニング的な機能があったとしても
その機能自体がどのように動くのか知らないとやっぱり上手く使えなかったり
0653NAME IS NULL
垢版 |
2017/05/24(水) 23:09:38.05ID:???
>>641
返信遅くなってしまいすいません
文字列を連結させてればいいんですね、やってみます
0654NAME IS NULL
垢版 |
2017/05/25(木) 15:59:00.46ID:v+Ze25qa
>>649
内部ではいったんそういう表が作られて、それを検索している。
0655NAME IS NULL
垢版 |
2017/05/25(木) 16:53:17.38ID:???
>>649
それぞれのカラムにインデックスがある場合。

まず、文字列を連結するとインデックスは使われません。
ORを使うと、全件検索(テーブルスキャン)よりもインデックスを使う方が速いと判断されれば
インデックスが使われます。

なので、ORが使えるならORを使うのがよいです。

さらに言うと、完全一致検索(hoge = 'aaa')と前方一致検索(hoge like 'aaa%')はインデックスが
使われますが、それ以外の場合(hoge = 'aaa%', hoge = '%aaa%')では、普通はインデックスは
使われません。(データベースの種類によっては、特殊なインデックスを作れるものもある)
0656NAME IS NULL
垢版 |
2017/05/25(木) 17:01:24.94ID:v+Ze25qa
変なのがわいた
0658NAME IS NULL
垢版 |
2017/05/25(木) 17:06:50.40ID:v+Ze25qa
>>657
ではどのように処理しているのかご教示を。
0659NAME IS NULL
垢版 |
2017/05/25(木) 17:24:42.89ID:???
プランナーが全てそうやってるわけじゃねーだろ
0660NAME IS NULL
垢版 |
2017/05/25(木) 17:28:46.76ID:???
>>658
ループしつつ文字列比較でフィルタリングでしょ
一時テーブルなんか作るメリットゼロ
0661NAME IS NULL
垢版 |
2017/05/25(木) 17:30:15.75ID:???
誰が言ってる事が正しいのですか?
0662NAME IS NULL
垢版 |
2017/05/25(木) 17:37:48.37ID:???
>>661
一部を除いてみんな正しい

まとめると、
・レコード数が少ないなら文字列結合してLIKE検索しろ >>641
・ORと文字列結合を比較するなら、ORの方がインデックスが使われるという面で優れている
・ただしLIKE検索の場合は、前方一致のみインデックスが使われる(普通は)
・普通じゃない方法は、データベース毎に異なる(フルテキスト検索用インデックスを作ったりとか)
0663NAME IS NULL
垢版 |
2017/05/25(木) 19:53:09.48ID:???
DBはMariaDBです
issueテーブルとissueConnectionテーブルがあります
こんな風にして、階層化された複数のイシューが連なる設計です(・・・あまり設計よくないかもです)

■issue
ID
(以下略)

■issueChildren
ID
issueID
childIssueID


あるイシューの子イシューを取得したい場合、たとえば100番の子イシューであれば

SELECT * FROM issue INNER JOIN issueChildren ON issue.ID = issueChildren.ID
WHERE issueChildren.issueID = 100;

でいいと思うのですが、孫まで含めてクエリーで取得したい場合はどうすればいいのでしょうか?
要件では子と孫まででOKで、ひ孫からは不要らしいです。
0664NAME IS NULL
垢版 |
2017/05/25(木) 20:32:38.12ID:???
孫まででいいならissueChildrenをもう一回JOINするだけ
末代まで辿りたいなら再帰問合せ
0665NAME IS NULL
垢版 |
2017/05/25(木) 20:39:25.01ID:???
もしかしてループってるかもしれないからチェックいるね
0666NAME IS NULL
垢版 |
2017/05/25(木) 23:03:02.92ID:???
>>664
具体的にどう書けばいいですか?

>>665
それはデータ的にはないようです
0667NAME IS NULL
垢版 |
2017/05/25(木) 23:49:12.89ID:???
>>666
実際にないなら良いんですけど
テーブル定義はそれを排除している訳ではないので
0668NAME IS NULL
垢版 |
2017/05/27(土) 18:40:58.87ID:???
SQL ServerにはなんでTRIMが無いの?
0669NAME IS NULL
垢版 |
2017/05/27(土) 19:48:28.08ID:EQg2arXb
>>668
さあね、RTRIM、LTRIMがあるからとりあえずいいだろうということなんだろ。
0670NAME IS NULL
垢版 |
2017/05/30(火) 23:02:19.60ID:???
LTRIMって、やっぱエルトリム?
それともリトリム?
俺はどっちでもいいと思うんで、
どっちでもいいと思うんだけど。
0671NAME IS NULL
垢版 |
2017/05/30(火) 23:20:48.04ID:???
テメェの好きなように呼べば良いだろ阿呆
0672NAME IS NULL
垢版 |
2017/05/30(火) 23:21:49.27ID:???
リトリムだとRTRIMもリトリムになるし...
巻き舌とかで区別する?w
0673NAME IS NULL
垢版 |
2017/05/30(火) 23:28:29.98ID:???
右トリム、左トリムで
0674NAME IS NULL
垢版 |
2017/05/31(水) 19:18:26.54ID:HpzcWkU1
レフトリ、ライトリってうちだけかよ
0675NAME IS NULL
垢版 |
2017/05/31(水) 20:17:10.89ID:+YoAe/ot
俺はアールトリム、エルトリムと呼んでいる。
0676NAME IS NULL
垢版 |
2017/05/31(水) 21:48:51.15ID:???
僕はシリコンバレーだけど、
エルティーアールアイエムって呼んでる
0677NAME IS NULL
垢版 |
2017/05/31(水) 22:57:35.60ID:???
うちのかあちゃん、
TRFを無理矢理トリフって読んだぞ。
0678NAME IS NULL
垢版 |
2017/05/31(水) 23:18:05.78ID:???
SQLserver入れた
まずなにやろう
0679NAME IS NULL
垢版 |
2017/06/01(木) 07:34:14.86ID:h3o9bmsv
>>678
アンインストール
0680NAME IS NULL
垢版 |
2017/06/01(木) 08:17:33.40ID:???
>>679
全く同じことを思った
結婚しようか
0681NAME IS NULL
垢版 |
2017/06/01(木) 14:22:43.80ID:???
最強に性格悪い夫婦
0682NAME IS NULL
垢版 |
2017/06/01(木) 23:03:30.83ID:???
♪いぃぃいぃぃいぃいぃぃぃいぃぃぃぃー
0683NAME IS NULL
垢版 |
2017/06/06(火) 22:32:19.81ID:???
伝票ID、顧客名、売上金額、売上月というテーブルがあるとします
顧客毎の各売上月の合計を問い合わせしたい場合どうすればいいのでしょうか?
売上月、顧客名、合計金額という風に出したいですが、一つ一つ顧客名毎に問い合わせするしかないのでしょうか?
0685NAME IS NULL
垢版 |
2017/06/06(火) 23:17:47.18ID:2nFS6UGQ
>>683
それぞれの顧客に電話して聞くしかないな。
0686NAME IS NULL
垢版 |
2017/06/06(火) 23:49:15.89ID:???
select `顧客名`,`売上月`,sum(`売上金額`) as `合計金額` from TABLE
group by `顧客名`,`売上月`;
0687NAME IS NULL
垢版 |
2017/06/07(水) 06:22:26.56ID:WkwCrNcL
アポストロフィ?
0689NAME IS NULL
垢版 |
2017/06/09(金) 03:38:40.83ID:LAO2WyDa
バッククオートでないの?
0690NAME IS NULL
垢版 |
2017/06/12(月) 03:22:13.66ID:???
アゲイン

teradataの識者いる?
0691NAME IS NULL
垢版 |
2017/06/12(月) 12:54:09.35ID:???
SQLの神さま、み教えを!

二つのテーブルを比較し、複数項目(7項目)の値が全て合致した行の
1項目をアップデートをしたいのですが、長ったらしいSQLになってしまいます。

シンプルな記述で実現する方法は、ありますでしょうか?!

お願いします!
0692NAME IS NULL
垢版 |
2017/06/12(月) 12:54:49.15ID:RxG+k+1Y
m(_ _)m
お願いします!
0693NAME IS NULL
垢版 |
2017/06/12(月) 16:30:14.35ID:???
長ったらしくならないので下手なことをせずそのままがいいように思う
0694NAME IS NULL
垢版 |
2017/06/12(月) 19:09:30.01ID:???
Oracleだと
 where (a1, a2, ...) = (b1, b2, ...)
みたいに書けちゃうけどまあ普通は
 where a1 = b1 and a2 = b2 and ...
しかないな
0695NAME IS NULL
垢版 |
2017/06/12(月) 20:54:47.97ID:???
>>694
文字列にして連結して比較する作戦はどうかな?
0696NAME IS NULL
垢版 |
2017/06/12(月) 21:39:05.03ID:???
>>694
それNULL=NULLをどうするのかで問題がでる
NULLの項目があってそれをまじめに考えたら
結構長ったらしくはなる
0697NAME IS NULL
垢版 |
2017/06/12(月) 21:49:53.25ID:???
SQL Serverです。

商品No 価格1 価格2 価格調整コード 調整価格
10000 1,000 1,100 001     200
10000 1,000 1,100 002    100
10000 1,000 1,100 003    100
12000 600 700 001    50
13000 800 850 001    100
13000 800 850 003    50

価格調整コードが'001'か'002'の場合は、
調整価格を価格1に加算し、
価格調整コードが'003'の場合は、
調整価格を価格2に加算する。
その結果を、商品Noから一意で取り出せるビューにしたい。

※イメージ
商品No 価格1(調整後) 価格2 (調整後)
10000 1,300 1,200
12000 650 700
13000 900 900

これをSQLだけで作ろうとしているのですが、無理でしょうか。
■ このスレッドは過去ログ倉庫に格納されています

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