【帰ってきた】SQL質疑応答スレ 4問目 at DB
[2ch|▼Menu]
934:NAME IS NULL
07/10/18 14:00:05
select '00' || 指定フィールド from なんか

935:NAME IS NULL
07/10/18 14:30:26
あと、桁数を指定して右から切り取ればOK。
Right() とか。

936:NAME IS NULL
07/10/18 22:08:14
>931
ありがとうございます


937:NAME IS NULL
07/10/19 00:14:26 dUbvn7+G
すみません。教えてください。

SUBSTR と LIKE ではどちらが処理速度が速いですか?

SELECT * FROM TBL WHERE SUBSTR(B,1,2) = '12'

SELECT * FROM TBL WHERE B LIKE '12%'

938:NAME IS NULL
07/10/19 00:17:02
ジブン デ タメセル ダロ ガ!!!!

939:NAME IS NULL
07/10/19 12:41:53 VIvt3Tqz
はじめまして。

いま定職がなくて、今度面接を受けるのですが、

SQLの知識が必要な仕事なのですけれど、

ぜんぜんSQLのこと理解していなくて。。。

一時間の面接でボロが出ない程度の知識をあと一日か二日で覚えようと思ってるのですが、

最低限どれくらいのことを知っていればいいのでしょうか。。。

どうかよろしくお願い致します><

940:NAME IS NULL
07/10/19 13:05:31 sjmFNeIx
質問させて下さい。

ACCESSでCOUNT関数内でDISTINCTが使えないので、
他に良い方法は無いか調べています。

| ID | SHOP | YYYYMM | DAY | PRICE |
 01    0001  200710   1     1000
 01    0002  200710   1      500
 02    0001  200710   2      800
 02    0002  200710   3      700

目的としては、上ようなテーブルで、
同一日に別なSHOPで買い物をしていないID(の人)で、
最大の単価(PRICEの合計)を求めたいのです。
(上の例だと3行目の800円が結果として欲しい)

SELECT MAX(total.hoge) as 最大の合計 FROM
 [SELECT SUM(PRICE) as total FROM tablename WHERE COUNT(DISTINCT SHOP) < 2
 GROUP BY ID, SHOP, YYYYMM, DAY;]. as hoge;

みたいな事でどうかな?と思ったのですが、ACCESSの制限で無理でした。
他にやりかたなどあれば教えて頂きたいのですが、如何でしょうか?


941:NAME IS NULL
07/10/19 14:46:57
>>939
スレリンク(db板)

ここのスレを1から全部読んで理解くらいになれば大丈夫だと思うお!


942:NAME IS NULL
07/10/19 15:45:30
>>940
そこはWHERE句じゃなくて、GROUP BY 句の後ろに
HAVING COUNT(DISTINCT SHOP) < 2
とすべきだと思うのだが、本当にCOUNT関数内にDISTINCTが使えないの?


943:942
07/10/19 15:53:43
ちょい補足。
HAVING count(DISTINCT SHOP)が使えるのなら、
GROUP BY句からSHOPは外せ。

944:NAME IS NULL
07/10/19 18:11:12
>>942
あーご回答ありがとうございます。
調べて回ったんですが、ACCESSではCOUNT内でのDISTINCTは
使えないんです。(ACCESS 2003)
その後調べていると、WHEREにCOUNTはダメっぽいですね、、、
HAVINGが良く分かってないので、使いどころが分かりませんでした(><)
修正します。ありがとうございます。

945:940
07/10/19 19:29:00
自己解決出来たので報告しておきます。
(もっとスマートなやりかたあるかも知れませんが、、、)

SELECT Max(total) AS 最大値
FROM [SELECT SUM(price) AS total FROM tablename as a
 WHERE NOT EXISTS (SELECT * FROM tablename as b
  WHERE a.id = b.id
  AND a.yyyymm = b.yyyymm
  AND a.day = b.day
  AND a.office <> b.office;)
 GROUP BY id, yyyymm, day, office;]. AS c;

で、一応940で求めている最大値=800が表示されました。
942さん、ありがとうございました。

946:sage
07/10/19 23:38:32 a5j8WAG3
>>941さん
ああ!どうもありがとうございます!!
これで受かる気がしてきました!!
わかりやすいですねー^^

947:NAME IS NULL
07/10/20 16:32:47
valueSQL使いたいんだが、繋ぎ方がわからん。
データソースって、何を入れればいいんだ?

948:NAME IS NULL
07/10/22 05:26:32
valueSQLって何かしらなかったんで調べてしまった。。
RDBMSは何使ってんの?
つーかスレ違いなんだが、汎用の質問スレ無かったっけ?

949:NAME IS NULL
07/10/23 09:20:58
>>946
まじかよw

950:NAME IS NULL
07/10/23 13:35:37 4X2HVnn9
SQLServer初心者です。
VB2005からSQLServer2005への接続について質問させて下さい。
同サーバーのプロジェクト名Test_dbにテスト接続はできるのですが、
データソース構成ウィザードで、テーブル、ビュー等の左側に「+」「−」
が無く、展開できません。 データソース、データセットとして実態を
取込めません。

ちなみにVB2005からAccessのテーブルをデータソース、データセットとして取込む事は
できました。

SQLServerから取込むにはどの様にするば良いでしょうか。
アドバイスお願いします。

951:NAME IS NULL
07/10/23 17:03:06
トランザクションの分離レベルのRepeatable Readって、
トランザクションAがRepeatable Readでトランザクション開始
->
トランザクションBが表AのレコードBをUpdate更新して、コミット
->
トランザクションAが同じ表AのレコードBをUpdateで更新

しようとしたらどうなる?


952:NAME IS NULL
07/10/23 17:32:55
>>950
ここはSQLServerのスレじゃないよ

Microsoft SQL Server 総合スレ 5
スレリンク(db板)

953:NAME IS NULL
07/10/23 17:38:53
>>951
共有ロック式の場合のRepeatable Readは、トランザクションが読み取ったレコード全部に
コミットまでの期間共有ロックをかけてゆくと考えればいい。
>トランザクションBが表AのレコードBをUpdate更新して、コミット
この前にトランザクションAがレコードAを読み取っていればトランザクションBの更新はロックされ待機状態になる。
この前にトランザクションAがレコードAを読み取っていなければ競合は起きない。

マルチバージョニングの場合はシリアライザブルと同じ動作になる実装が多いと思う。Oracleとか。

954:NAME IS NULL
07/10/23 17:39:23 4X2HVnn9
>952
失礼しました。 そちらに質問しました。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5091日前に更新/352 KB
担当:undef