X



トップページDB@2ch掲示板
1002コメント330KB
SQL質疑応答スレ 17問目 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2016/07/10(日) 22:29:01.40ID:???
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。

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

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

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

前スレ:
SQL質疑応答スレ 16問目
http://echo.2ch.net/test/read.cgi/db/1447160858/
0007NAME IS NULL
垢版 |
2016/07/10(日) 22:34:59.82ID:???
よくある質問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
0008NAME IS NULL
垢版 |
2016/07/10(日) 22:46:13.30ID:???
ううむ、ブロックされてしまいました。どうしたらいいだろう。

Why have I been blocked?

This website is using a security service to protect itself from online attacks.
The action you just performed triggered the security solution.
There are several actions that could trigger this block including submitting a
certain word or phrase, a SQL command or malformed data.
0009NAME IS NULL
垢版 |
2016/07/10(日) 22:47:49.09ID:???
SQLソースの部分は外しておきます。

よくある質問5

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

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

   20100601
   20100602
    ・
    ・
    ・
   20100630

(答)
SQLでは存在しないデータを生成することはできません。
この問いの場合は素直にカレンダーテーブルを用意しましょう。

どうしてもやりたければ以下のような方法もなくはないですが、
再帰問合せの本来の使い方ではありません。
やめておくことを強くお奨めします。
(PostgreSQLのgenerate_series()関数なら辛うじてセーフかもしれませんが
 賛否の分かれるところでしょう。)
0010NAME IS NULL
垢版 |
2016/07/10(日) 22:49:00.82ID:???
以上、テンプレ終わり

よくある質問5のSQLソース部分がアタックと受け止められてしまいました。
そのためソースは省略しました。
0011NAME IS NULL
垢版 |
2016/07/14(木) 01:37:12.31ID:???
ここで募集するのも筋違いだとおもうけど、SQLの文を書いたのを訂正してほしい・・・
中級者には30分ほどでおわる内容かも。
謝礼は7000で、
多分、チョー簡単。
詳しくは
remorse2015@yahoo.co.jp
日曜までとりあえず募集します。
メールで内容確認だけでも良いです/
0012NAME IS NULL
垢版 |
2016/07/14(木) 03:19:38.54ID:???
ここに内容書けば無料なんだけど
0013NAME IS NULL
垢版 |
2016/07/15(金) 02:26:47.07ID:???
>>12
お願いできないですか?
ワードに見本表と完成表があってコード書かれているんですが、間違えてる文がある感じです。22ページあったんですが16から全然進まなくて、、、
とりあえず、メールお願いします。
ワードファイル添付しておくります。
支払いはすぐやります。
0014NAME IS NULL
垢版 |
2016/07/15(金) 09:39:41.81ID:???
プレーンテキストでここに貼って
0015NAME IS NULL
垢版 |
2016/07/15(金) 10:18:31.95ID:???
ワードファイル送りつけられても迷惑メールからのゴミ箱インよ
0016NAME IS NULL
垢版 |
2016/07/15(金) 11:41:49.64ID:???
SELECT *
FROM 氏名表 AS A
WHERE A.番号=
(SELECT 番号
FROM 成績表
WHERE 点数=479)


SELECT *FROM 氏名表 AS A
WHERE A.番号IN
(SELECT 番号
FROM 成績表
WHERE 点数>=500)
という間違った文があって
SELECT *
FROM 氏名表 AS A
INNER JOIN
(SELECT 番号
FROM 成績表
WHERE 点数=479) AS B
ON A.番号=B.番号

SELECT *
FROM 氏名表 AS A
INNER JOIN
(SELECT 番号
FROM 成績表
WHERE 点数>=500) AS B
ON A.番号=B.番号
を治すというものでこんなのを20個くらいやれば終わりです。
0017NAME IS NULL
垢版 |
2016/07/15(金) 13:52:48.16ID:???
金もらって引き受けるほどの仕事じゃないようだし
そういう手間かけるくらいなら、ご自身で治した方が良いのでは?
0018NAME IS NULL
垢版 |
2016/07/15(金) 14:14:56.18ID:???
> SELECT *FROM 氏名表 AS A
> WHERE A.番号IN
> (SELECT 番号
> FROM 成績表
> WHERE 点数>=500)

これは何が間違ってるんだ?
0019NAME IS NULL
垢版 |
2016/07/15(金) 14:20:47.03ID:???
要件を教えて欲しいのだが。何を直せばいいいんだ?
0020NAME IS NULL
垢版 |
2016/07/15(金) 15:30:39.87ID:???
>>16
inをjoinに置き換えろって話のようにみえるけど
joinしたビュー作っとけばもっと楽かもしれんぞ

そもそもそんなことする必要があるのか
一度inとjoinで実行計画見といた方が良いんじゃね

>>18
文法的に間違ってるってなら、番号とINの間に空白がないとかじゃねw
0021NAME IS NULL
垢版 |
2016/07/15(金) 15:46:23.35ID:zBhn779u
これについてはインラインビュー(FROM句の副問い合わせ)はやめた方がいいな。

WHERE句で絞った方がいい。
0023NAME IS NULL
垢版 |
2016/07/15(金) 16:41:58.02ID:???
実行計画見るまでもないレベルのデータ量な気がするが。
何やっても数百ms程度で戻る気が。
0024NAME IS NULL
垢版 |
2016/07/15(金) 16:57:08.32ID:???
>>21
その理由は?
単なる性能的な話なら、まず実行計画見るよって事だし

whereがどうこうじゃなくて、inの方だと、結果セットに点数含まれないのが問題なんじゃないのか

>>23
データ量は示されてないし、実際のテーブルレイアウトがどうなってるかもわからんし
まあ、性能的な問題じゃないと思うけど
0025NAME IS NULL
垢版 |
2016/07/15(金) 17:22:52.54ID:???
>>24
> データ量は示されてないし、実際のテーブルレイアウトがどうなってるかもわからんし
> まあ、性能的な問題じゃないと思うけど
氏名表:1,000レコード未満
成績表:100,000レコード未満
くらいかなと。

まあどんなクエリ書こうがたいしたことないと思うが、性能云々ならindexを貼るくらいでいいのでは。
0026NAME IS NULL
垢版 |
2016/07/15(金) 18:52:57.55ID:OwU9VU0D
答えたい気持ちは分かるがお前ら7000円をどうやって分けるつもりなの?
そういう事は最初にキッチリ決めとかないと後々遺恨を残すぜ
0027NAME IS NULL
垢版 |
2016/07/15(金) 19:15:33.39ID:???
僕のために争ってくれてありがとう。
依頼する人は見つけたから大丈夫だよー
これで単位も一安心
0028NAME IS NULL
垢版 |
2016/07/15(金) 19:51:07.64ID:zBhn779u
>>24
理由も何もまずはSQLの普通の書き方しろってことだよ。
0029NAME IS NULL
垢版 |
2016/07/15(金) 19:53:41.17ID:zBhn779u
>>24
INリストには数の制限があるからな。

OR条件の羅列にすぎない。
0030NAME IS NULL
垢版 |
2016/07/15(金) 20:33:15.50ID:OwU9VU0D
>>29
お前はバカなんだから口を慎しめと何度
0031NAME IS NULL
垢版 |
2016/07/16(土) 17:02:32.57ID:IKSp3mrg
>>30
どこが間違っているのか教えてください。
0032NAME IS NULL
垢版 |
2016/07/16(土) 17:08:06.50ID:IKSp3mrg
↓これ何?

26 NAME IS NULL 2016/07/15(金) 18:52:57.55 ID:OwU9VU0D
答えたい気持ちは分かるがお前ら7000円をどうやって分けるつもりなの?
そういう事は最初にキッチリ決めとかないと後々遺恨を残すぜ
0033NAME IS NULL
垢版 |
2016/07/17(日) 21:52:20.05ID:N1m3wNQ4
すみません、以下、質問させてください。

親テーブルAに対して子テーブルBとCがあり、
レコード数がそれぞれ、
A:B = 1:5、A:C = 1:20 の関係です。

この時、A1レコードに対して、
Aに紐付くBとCのレコード全てを最小のIO回数・データ量で取得したいです。

普通にA、B、Cを結合しただけでは
B×Cの組み合わせまで取得してしまい上手く取得できませんでした。
A:B、A:Cと別々に結合して取得するしかないのでしょうか。
DBはOracleです、よろしくお願いします。
0034NAME IS NULL
垢版 |
2016/07/17(日) 22:41:52.05ID:2o6ZRKeT
>>33
リレーションの説明がありませんので、答えようがありません。
0035NAME IS NULL
垢版 |
2016/07/17(日) 22:58:48.06ID:???
B×Cの中から自分が欲しいものを条件で絞り込むんだよ。その条件が無いから全部出てくる。
0036NAME IS NULL
垢版 |
2016/07/17(日) 23:00:32.84ID:N1m3wNQ4
>>34
下のような感じです。
AとB、AとCが主キー項目aでそれぞれ1:5、1:20で紐付きます。

Aテーブル
a C(5)


Bテーブル
a C(5)
b C(5)


Cテーブル
a C(5)
c C(5)
0037NAME IS NULL
垢版 |
2016/07/17(日) 23:02:11.09ID:fmLQHPFo
おもしろい展開w
0038NAME IS NULL
垢版 |
2016/07/17(日) 23:41:31.84ID:???
質問がいまいち理解できん
そもそもIOとか、SQL書いたとおりに実行されるわけじゃないんだが

ほしい結果がABとACの二つあるなら、2回やるしかないわけだが、どんな結果を望んでるんだ
0039NAME IS NULL
垢版 |
2016/07/18(月) 00:53:22.27ID:EKBnHgrJ
>>38
俺もI/Oについては突っ込みたかったが、そもそもRDBの理論、概念を否定する内容だからスルーしたw
0040NAME IS NULL
垢版 |
2016/07/18(月) 00:55:52.42ID:EKBnHgrJ
>>36
その"C(5)"って何?

データ型?
0041NAME IS NULL
垢版 |
2016/07/18(月) 01:03:46.13ID:EKBnHgrJ
>>36
その3つのテーブルをaという列だけで結合すればいい話なのかな?

Aテーブルの1レコードに対して20レコードがセットになればいいの?
0042NAME IS NULL
垢版 |
2016/07/18(月) 01:12:13.04ID:EKBnHgrJ
BテーブルとCテーブルにリレーション、関連性があるのかないのかはっきりしてくれ。

AテーブルのとあるレコードはBテーブルに子レコードがあり、Aテーブルの別の種類のレコードはCテーブルに子レコードがあるようにも解釈できる。

どっちなの?
0043NAME IS NULL
垢版 |
2016/07/18(月) 01:17:58.22ID:???
unionの話じゃないのかい
0044NAME IS NULL
垢版 |
2016/07/18(月) 03:30:28.74ID:Dk5LLrvU
>>39
RDBの理論が分かってないのはお前な
0045NAME IS NULL
垢版 |
2016/07/18(月) 06:25:57.47ID:EKBnHgrJ
>>44
それはRDBMSのことであって特定の製品を指しているわけでもない。
0046NAME IS NULL
垢版 |
2016/07/18(月) 08:25:50.10ID:Dk5LLrvU
>>45
ワケ分からん事言ってないで必死でググって顔真っ赤にして感謝しろよw
今頃もう真っ赤っ赤かなw
0047NAME IS NULL
垢版 |
2016/07/19(火) 00:50:27.43ID:yVILcX3x
RDBMSはSQLの処理の方法にRDBMSに任せるのがRDBなんだよ。

どう処理するかの手続きを指定するのはするのはRDBではない。
0048NAME IS NULL
垢版 |
2016/07/19(火) 03:30:05.15ID:???
とりあえず書き込む前に書こうまず読み直してとりあえず書こう
0049NAME IS NULL
垢版 |
2016/07/19(火) 04:19:10.59ID:???
慌てないで、落ち着いて
0050NAME IS NULL
垢版 |
2016/07/20(水) 11:14:56.42ID:89VCRaWj
【BS11:エンターテイメント】 <関根勤 KADENの深い夜>放送時間:毎週木曜日 よる11時00分〜11時30分 #bs11 http://www.bs11.jp/entertainment/5749/
0052NAME IS NULL
垢版 |
2016/07/27(水) 21:37:51.21ID:OesecO5v
ジョインで連結しまくったクエリに
ORDER BY で並び替えかけると
えらい遅くなるのですが
改善する方法はないのでしょうか?
0053NAME IS NULL
垢版 |
2016/07/27(水) 21:48:05.62ID:???
ジョインしたかどうかとソートの速度に関係はない
ソートのキーとなる列にインデックスを張っておけばソートが不要になる場合がある
ソートキーが複数のテーブルに跨るとすると話は面倒臭い
VIEWにインデックスを張れるDBMSならそれで解決するのも手
0055NAME IS NULL
垢版 |
2016/07/27(水) 22:33:44.35ID:OesecO5v
>>53
インデックスの貼り方がわるいのか
リレーションに関するカラムを中心に
インデックスはっても遅いんです。
特に GROUP BY と ORDER BY の組みあわせ
0056NAME IS NULL
垢版 |
2016/07/27(水) 22:52:26.24ID:???
GROUP BYもあるならmaterialized viewにしてインデックス張るしかないかな
メモリをひたすら積んでメモリソートでごり押しという手もあるが
0057NAME IS NULL
垢版 |
2016/07/27(水) 23:13:51.10ID:???
テーブルレイアウトと実行してるSQL全部書けば
ある程度汎用的なインデックスのアドバイスができるかもしれんが

まあとりあえず実行計画確認しろ
0058NAME IS NULL
垢版 |
2016/07/27(水) 23:27:08.61ID:???
【質問テンプレ】
・DBMS名とバージョン

この辺も書いておくといいぞ
0059NAME IS NULL
垢版 |
2016/07/28(木) 00:48:24.45ID:Pc5r9mq6
テーブルレイアウトって言葉はやめてほしいわ。
0060NAME IS NULL
垢版 |
2016/07/28(木) 10:49:25.87ID:???
うちのダイニングのテーブルの配置はどう言ったらいいでしょうか
0061NAME IS NULL
垢版 |
2016/07/28(木) 14:59:33.90ID:???
 
粗大ゴミの回収に出す
0062NAME IS NULL
垢版 |
2016/07/29(金) 09:54:35.19ID:SbaxQ6kv
MySQL 5.1.73
次のようなカラムの入ったメインテーブルがあるとします。

T1
|MAIN_ID|NAME|AGE|TITLE_1|COMMENT_1|TITLE_2|COMMENT_2|

で、TITLE と COMMENT の部分は
横持ちになってるのでその部分は別テーブルにして

T2
|ID|MAIN_ID|TITLE|COMMENT|

として、縦持ちにしたいとします。

問題は、この2つのテーブルをどうリレーションさせるかです。
例えば 次のようなレコードが入っているものを次のようにリレーションしようとします。

T1
|MAIN_ID|NAME|AGE|
|1    |田中 |24|



T2
|ID|MAIN_ID|TITLE|COMMENT|
|1 |   1|好きな|うな重 |
|2 |   1|趣味 |バイク |
|3 |   1|嫌いな|しいたけ|
|4 |   2|好きな|グラタン|


FROM
 T1
 LEFT JOIN
 T2
 ON
 T1.MAIN_ID = T2.MAIN_ID

で関連付けられ 

|ID|MAIN_ID|NAME|AGE|TITLE|COMMENT|
|1 |1   |田中 |24|好きな|うな重 |
|1 |1   |田中 |24|趣味 |バイク |
|1 |1   |田中 |24|嫌いな|しいたけ|

この例で行くと田中が3つになります。
また、 WHERE でTITLE、COMMENTが検索対象にできるようになります。

10件表示とか リストで出力すると この例では田中が3つでてきてしまうので
GROUP BY で ID をまとめます。 
その際 ORDER BYをかけると 何千件とかになると
パフォーマンスが非常に落ちてしまいます。
※ ORDER BYがなければパフォーマンスはそれほど問題はありません。

パフォーマンスをなるべく落ちないように
縦持ちカラムを組み合わせるにはどうすればいいでしょうか?
0063NAME IS NULL
垢版 |
2016/07/29(金) 10:09:10.29ID:???
それだとGROUP BYよりEXISTSのほうがよくね?

select T1のカラム
from T1
where exists (
  select *
  from T2
  where T1.MAIN_ID = T2.MAIN_ID
  and T2の条件
)
order by T1のカラム
0064NAME IS NULL
垢版 |
2016/07/29(金) 14:04:30.63ID:???
>62
>GROUP BY で ID をまとめます。
それだとIDと1:1に結び付かない項目は全て不定だぞ
つまり結局T1のみselectするのと同じになるわけだが
それならまずはT1のソート項目にインデックス張って見るとか

ああ、またMySqlか
SelectとGruop ByとOrder ByとWhereと全部書いたフルのSQL晒せ
0065NAME IS NULL
垢版 |
2016/07/30(土) 07:56:46.82ID:XyUbordV
ない項目のインデックスはどうやって作るのか
0066NAME IS NULL
垢版 |
2016/07/30(土) 08:19:54.62ID:???
ない項目ってどういう意味だ?
インデックスは項目(の組み合わせ)に対して作るものだぞ
0067NAME IS NULL
垢版 |
2016/07/31(日) 02:18:28.80ID:???
質問です。
学生メール表 学籍番号 氏名 メールアドレス
教員メール表 教員番号 氏名 メールアドレス
補習予定表 教員番号 授業id 日付 連絡事項
授業名表 授業iD 授業名
授業展開表 教員番号 授業id 学籍番号
これで生徒に知らせる時のER図をつくるとき、
いらない情報はどれですか?
学生メール表⇔授業中展開表⇔授業名表⇔補習予定表
0069NAME IS NULL
垢版 |
2016/07/31(日) 12:33:09.87ID:ea2io0T3
>>67
必要最低限にしてもいいけど、実際にはいちいち結合しないと取得できないので重複して持つこともある。
0070NAME IS NULL
垢版 |
2016/07/31(日) 14:20:50.26ID:???
ちなみに>>67はおかしいですか?
先生にしらせるときと生徒に知らせる時でER図を書きなさいって問題なんですが
0071NAME IS NULL
垢版 |
2016/07/31(日) 16:02:20.51ID:???
問題に書いてあることを誤読や読み落とししている気がする。
0072NAME IS NULL
垢版 |
2016/07/31(日) 17:31:55.47ID:???
宿題を堂々とここに書いて教えろと要求かぁ
0073NAME IS NULL
垢版 |
2016/07/31(日) 21:26:13.43ID:???
まずER図書いてみろって話だが

エスパーすると授業展開表.教員番号か補習予定表.教員番号

各テーブルの主キーが不明なんでどっちにしろ正確な答えはだぜんぞ
0074NAME IS NULL
垢版 |
2016/08/08(月) 22:56:12.48ID:???
・DBMS名とバージョン
 SQLServer2014 ent.

・テーブルデータ
 名前 月 欠席日数
 a    1     1
 a    3     1
 b    1     1

・欲しい結果
 名前 月 欠席日数
 a    1     1
 a    2     0
 a    3     1
 b    1     1
 b    2     0
 b    3     0

・説明
 欠けてる月のデータを 0 補完したいと思います。
 「名前」列がなければ例えば下のようなテーブルと外部結合することで解決できるのですが、
 「名前」ごとに「月」と「欠席日数」を補完する方法が分かりません。
 「名前」列を含めて保管用のテーブルを作ることも考えられるのですが、「名前」の数が多い場合に困ります。
 月 欠席日数
 1     0
 2     0
 3     0

お知恵をお貸し下さい。
お願いします。
0075NAME IS NULL
垢版 |
2016/08/08(月) 23:54:36.83ID:???
名前テーブルも作ってそれと外部結合すりゃいいじゃん。
0076NAME IS NULL
垢版 |
2016/08/09(火) 00:00:01.71ID:???
id,name
--------
1,aaa
2,bbb
3,ccc

これにdddを1の下に追加して

id,name
--------
1,aaa
4,ddd
2,bbb
3,ccc

という風に出来るデータベースってありませんか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0077NAME IS NULL
垢版 |
2016/08/09(火) 01:13:18.45ID:???
表示をその順序にしたいと言うなら、
その順序指定になるカラムを追加したら?
0078NAME IS NULL
垢版 |
2016/08/09(火) 08:40:05.08ID:???
>>76
> これにdddを1の下に追加して

できない
上とか下の概念がないから
0079NAME IS NULL
垢版 |
2016/08/09(火) 09:32:25.91ID:???
mysqlでやってみた

select id , name ,
case name when "aaa" then 1
when "bbb" then 3
when "ddd" then 2
when "ccc" then 4
end as newcol
from hogehoge
order by newcol;

+----+------+---------+
| id | name | newcol |
+----+------+---------+
| 1 | aaa | 1 |
| 4 | ddd | 2 |
| 2 | bbb | 3 |
| 3 | ccc | 4 |
+----+------+---------+

結局は>>77さんの通りにやってるだけだし、件数が多ければやってられんw
0080NAME IS NULL
垢版 |
2016/08/09(火) 10:03:52.74ID:???
select id , name ,
case name
when "aaa" then 1
when "ddd" then 2
else null
end as newcol
from hogehoge
order by newcol is null;
0081NAME IS NULL
垢版 |
2016/08/09(火) 18:34:23.83ID:???
>>74
普通は名前のマスタテーブル用意しとくんじゃね
まあ、なければないで効率とか考えないなら
select distinct 名前 from ...
とかで代用できなくもないけど

>>76
すくなくとも、RDBでそれは基本的な考え方から外れてるから無理

データ補完とか、順序付けされてないデータの順序とか、設計考え直せ
008274
垢版 |
2016/08/09(火) 23:16:58.43ID:???
>>75,81
ありがとう。
75 で言われてハッとして distinct で作った名前の一覧と月の一覧とを掛け合わせて、
これと元のテーブルデータを外部結合して行けました。
0083NAME IS NULL
垢版 |
2016/08/10(水) 16:43:00.43ID:tK4Szt1X
SQLと直接関係ないのですが
お名前.comSDサーバーの データベースって
sshで入って dumpコマンドでエクスポートできないので
バックアップを取ることができないのですが
なにかうまく取る方法ないですか?
0084NAME IS NULL
垢版 |
2016/08/10(水) 16:49:54.18ID:???
>>83
お名前.com sdサーバー データベース バックアップ
でググったらすぐに見つかったが?
0085NAME IS NULL
垢版 |
2016/09/24(土) 02:19:33.28ID:???
○前提
会社id、名前や所在地などが入っている会社テーブルと、
会社id、従業員名、性別などが入っている従業員テーブルがあるとして、
(プログラム側で外部から受け取った)会社idから名前や所在地を得て、かつ、その会社の従業員を列挙表示したい

○質問
こういうとき、DB側、SQL側としては、会社テーブル・従業員テーブルそれぞれ1回ずつ2回SELECT発行するしかないでしょうか
0086NAME IS NULL
垢版 |
2016/09/24(土) 03:18:01.58ID:???
>>85
joinを知らないとか分からないとか、そういうレベル?
とりあえず>>1読んで出直して
0087NAME IS NULL
垢版 |
2016/09/24(土) 03:54:37.97ID:???
>>86
joinすると全レコードに>>85で言う会社テーブルの名前、所在地などが入ってきませんか
返してもらうデータ量よりクエリ発行回数を気にするべきなんでしょうか

また>>85には書いていないことですがjoin対象が複数あったら、など考えるとどう考えたら良いのか
0088NAME IS NULL
垢版 |
2016/09/24(土) 07:52:00.23ID:???
>join対象が複数あったら、

複数joinすれば?
0089NAME IS NULL
垢版 |
2016/09/24(土) 11:06:44.19ID:???
深く考える前にやってみればいいんじゃないかな、とか。
0090NAME IS NULL
垢版 |
2016/09/24(土) 18:45:29.48ID:???
>>87
>データ量よりクエリ発行回数を気にするべきなんでしょうか
そんなもんはケースバイケースだからすきにしろ
もともとクエリ発行回数を問題にしたのはお前だろうが
0091NAME IS NULL
垢版 |
2016/09/24(土) 21:03:47.14ID:???
>>85
その前提なら
> 会社テーブル・従業員テーブルそれぞれ1回ずつ2回SELECT発行する
でいいと思う
0092NAME IS NULL
垢版 |
2016/09/24(土) 21:21:17.59ID:???
いや、1回SELECT発行がいいと思う
0093NAME IS NULL
垢版 |
2016/09/24(土) 21:23:50.81ID:dG2/rE9U
この場合それぞれ2回ずつSELECTが正解じゃね?
0094NAME IS NULL
垢版 |
2016/09/25(日) 07:15:27.74ID:???
従業員に付与される会社情報の多さが気になるなら2回でいいんじゃね
というか自分も2回だね
0096NAME IS NULL
垢版 |
2016/09/25(日) 09:14:27.33ID:???
>>85
〇足りない情報
どんなときに使う処理か(バッチ?それともユーザー操作に対する応答?)
出力はどのような形式か(画面表示?CSVファイル?)
データベースを配置しているサーバーと出力を得るクライアントの構成は?(例:PostgreSQLto
Apacheが同じサーバーにあり、クライアントはWEB表示で結果を得る。サーバーはAWSに配置しており、ネットワークの転送速度は毎秒1MBr程度が期待できる)
レコードは何件あるのか。レコードあたりの容量は?要求されるレスポンスは?(1秒以内に出力完了など)。
0097NAME IS NULL
垢版 |
2016/09/25(日) 09:19:53.92ID:???
転送速度が極端に遅い場合はローカルにデータベースをもってジョインするのも選択肢としてあり得なくもないが(2層方式も含めて検討だろう)
それだったら出力結果を圧縮して転送だろうな
HTTPで出力する場合は例えばgzip圧縮すりゃ設定いじる程度の工数で済むしな
0098NAME IS NULL
垢版 |
2016/09/25(日) 10:29:39.14ID:???
富豪アプローチで毎回取得&キャッシュでええやん。
0099NAME IS NULL
垢版 |
2016/09/25(日) 10:40:03.14ID:???
時間も掛かるし負荷も高いんじゃない?
0100NAME IS NULL
垢版 |
2016/09/25(日) 16:03:47.98ID:???
月額2000円くらいの予算でvps借りるとしてmysqlで最大どれくらいのトランザクションを捌けるもんなの?
0101NAME IS NULL
垢版 |
2016/09/25(日) 16:07:28.77ID:???
要件定義してあげるスレが必要
0102NAME IS NULL
垢版 |
2016/09/30(金) 00:05:15.58ID:???
どこで質問したらわからないんですが総合スレってありませんかね?
0104NAME IS NULL
垢版 |
2016/11/09(水) 18:56:03.76ID:AtwDWs/+
Mysql で 出力データーを
20.00 → 20
21.40 → 21.4
23.05 → 23.05
20.10 → 20.1
みたいに少数以下の語尾のゼロを取ることをMySQL内ですることはできないでしょうか?
0105NAME IS NULL
垢版 |
2016/11/09(水) 19:00:44.82ID:???
普通付かないだろ
元の値は文字列なのか?
0106NAME IS NULL
垢版 |
2016/11/09(水) 19:05:31.21ID:AtwDWs/+
>>105
decimal です。
■ このスレッドは過去ログ倉庫に格納されています

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