【帰ってきた】SQL質疑応答スレ 4問目
at DB
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