SQL教えてっ!! lt;3gt;
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGSQL教えて〜!! <2>
http://pc3.2ch.net/test/read.cgi/tech/1028653822/
関連スレは>>2-10あたりにあるかと。
0002デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1020158297/l50
【ノウ】DBアプリ開発ノウハウ【ハウ】
http://pc3.2ch.net/test/read.cgi/tech/1015807409/l50
★★★ SQLサーバ VS オラクル ★★★
http://pc3.2ch.net/test/read.cgi/tech/1008908462/l50
oracle質問
http://pc3.2ch.net/test/read.cgi/tech/1010400855/l50
Access使い集合!
http://pc3.2ch.net/test/read.cgi/tech/1005078204/l50
MySQLってどうよ
http://pc3.2ch.net/test/read.cgi/tech/1008316065/l50
InterBaseを使いこなすスレ
http://pc3.2ch.net/test/read.cgi/tech/1015250429/l50
0003デフォルトの名無しさん
NGNGPostgreSQL
http://pc.2ch.net/test/read.cgi/php/989375812/l50
PHP + PostgreSQL
http://pc.2ch.net/test/read.cgi/php/983128806/l50
PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50
MySQL vs PostgreSQL
http://pc.2ch.net/test/read.cgi/php/989341364/l50
0004補完
NGNG【互換性】SQLServer VS Oracle Part2【ボラクル】
http://pc3.2ch.net/test/read.cgi/tech/1041604818/l50
Access使い集合! Ver2.0
http://pc3.2ch.net/test/read.cgi/tech/1032402846/l50
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG「×△国は〜」
の類は名誉毀損にはならない罠。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGそういうわけでここは快速スレですすれ違いのタラコの話などはやめてくださいね。
0014デフォルトの名無しさん
NGNG0015ついでだからこれも補完
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1000536738/
ACCESS総合相談所 その6
http://pc.2ch.net/test/read.cgi/bsoft/1037856185/
●DB2とオラクル、どっちがどういい?●
http://pc.2ch.net/test/read.cgi/bsoft/999755001/
ファイルメーカーとアクセス
http://pc.2ch.net/test/read.cgi/bsoft/997011051/
ファイルメーカー ユーザーの集い part 2
http://pc.2ch.net/test/read.cgi/bsoft/1038809645/
■○■dBASE個人面接所
http://pc.2ch.net/test/read.cgi/bsoft/984157332/
Oracleはどうよ?
http://pc.2ch.net/test/read.cgi/bsoft/966240993/
0016デフォルトの名無しさん
NGNG告発ネタが減少するのは残念。
・WTCテロのリーク
・西部の松坂の駐車違反
・牛肉買い上げの告発
等々、
いろいろとおいしいネタがあったのになあ。
おまえらの知ってる2ちゃん内の告発ネタを教えてください。
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG全部漫画・アニメのキャラの名前
0020デフォルトの名無しさん
NGNG|タキューウしようよ!
∠________
∧_∧ ∧ ∧ο
( ・∀・) │ (゚Д゚ ∩
( つ=○つ ━┳━━┷━━┳━ | つ○
| | | ┃ .┃ / _ |〜
(__)_) ..┃ .┃ U ∪
0021デフォルトの名無しさん
NGNGこんな厨房にも分けてほしいわ
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG証明と実体を混ぜたら話がわかんなくなるが、、、
マジレスすると、確認のために2ちゃんを閲覧するだけでも2ちゃんのルールに
従えというのですか?
#イケメン
(・◇・)
0024デフォルトの名無しさん
NGNG0025山崎渉
NGNG0026デフォルトの名無しさん
NGNG銃創や刀瘡は一生残るだろうな
以前入院してたトコに発砲事件で手を撃たれた主婦が来てた
軽症ってことで殆ど報道もされなかったが
肉と神経を掠った右手は、端は持てない字は書けない
賠償請求しようにも犯人に支払能力無しで治療費自腹
見ていて痛々しかった
犯人の私財も私物も刑務所での給与も取り上げろ!償い終わるまで贅沢を許すな
民事賠償が円満に終わるか保険入って首括るまで塀の中に入れとけ
0027デフォルトの名無しさん
NGNG0028山崎渉
NGNG0029デフォルトの名無しさん
NGNG外部結合で結合で
一方の条件に対するデータが存在しなかった場合でも
片方のデータを結果セ ットに含める指定を含めた選択を
行いたいのですがうまくいきません
TOKMST
SHITENCODE TOKCODE ...
01 0001
01 0002
01 0003
01 0004
01 0005
TOKTRN
SHITENCODE TOKCODE ZANDATE ZANKIN ...
01 0001 '2002/01/31' 1000
01 0004 '2002/02/01' 6000
01 0005 '2002/01/31' 1500
これらのテーブルで取り出した結果が
SHITENCODE TOKCODE ZANDATE ...
01 0001 2002/01/31 1000
01 0002
01 0003
01 0004
01 0005 2002/01/31 6000
としたいのです
003029
NGNGselect MST.SHITENCODE ,
MST.TOKCODE ,
TRN.ZANDATE ,
TRN.ZANKIN ,
from TOKMST MST
RIGHT OUTER JOIN TOKTRN TRN /*LEFT OUTERでもうまくいかない*/
ON MST.SHITENCODE = TRN.SHITENCODE /*支店名
AND MST.TOKCODE = TRN.TOKCODE /*得意先コード
WHERE MST.SHITENCODE = '01'
AND MST.TOKCODE BETWEEN '0001' AND '9999'
AND TRN.ZANDATE = '2002/01/31';
としましたが
これらのテーブルで取り出した結果が
SHITENCODE TOKCODE ZANDATE ...
01 0001 2002/01/31 1000
01 0005 2002/01/31 6000
となって思うような結果が返りませんでした
どなたかどうぞよろしくお願いします
0031デフォルトの名無しさん
NGNGAND TRN.ZANDATE = '2002/01/31'
を削ってみては?
003229
NGNG>29-30です
たしかに
AND TRN.ZANDATE = '2002/01/31'
を削ると希望の動作に近い結果が返ってきますが
SHITENCODE TOKCODE ZANDATE ...
01 0001 2002/01/31 1000
01 0002
01 0003
01 0004 2002/02/01 6000 /*このデータが不要*/
01 0005 2002/01/31 1500
となってしまいます
下記のような結果を出すことは出来ないものでしょうか?
(最初の投稿で希望する出力が間違っていたため再書込)
SHITENCODE TOKCODE ZANDATE ...
01 0001 2002/01/31 1000
01 0002
01 0003
01 0004
01 0005 2002/01/31 1500
003331
NGNGAND (TRN.ZANDATE = '2002/01/31' OR TRN.ZANDATE IS NULL)
ではいかがでしょう。
003429
NGNG>>29-30, >>32です
実は
AND (TRN.ZANDATE = '2002/01/31' OR TRN.ZANDATE IS NULL)
も試していまして(書き込まず申し訳ないです)結果は
01 0001 2002/01/31 1000
01 0005 2002/01/31 1500
となってしまいます
InterBase+WindowsXPだからかな?
このような構成でこういった結果を期待すると
いうのは、結構多いような気がするのですが
私だけなのかな?
0035bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0036デフォルトの名無しさん
NGNGWHERE句の「AND TRN.ZANDATE = '2002/01/31'」
を外す。
FROM句の「TOKTRN」の代わりに
「(SELECT * FROM TOKTRN WHERE ZANDATE = '2002/01/31') AS TRN」
とかやってみる。
ちなみに未検証。
003729
NGNG>>29-30, >>32,>>34です
>FROM句の「TOKTRN」の代わりに
>「(SELECT * FROM TOKTRN WHERE ZANDATE = '2002/01/31') AS TRN」
>とかやってみる。
Oracleでしたらこれで解決なのですが
InterBaseなのでFrom句でのSelect文をサポートしてないようです
これ以上時間を割くわけにはいきませんので
プロシージャを書いて抽出しようと思います
返信して下さった
>>31,>>33,>>36さん
ありがとうございました
0038デフォルトの名無しさん
NGNGいちいち参照元から順に DELETE しているのですが、
一発でできるテクがあったら教えてほしいです(無理!?)
0039デフォルトの名無しさん
NGNGCASCADING DELETEをサポートしているRDBであれば、
参照整合性制約を作成するときに指定することで、DELETE発行時に
子表にあるデータを削除してくれるはずです。
004138
NGNG0042sage
NGNG一回VIEWに吐いた物からSELECTすれば?
0043デフォルトの名無しさん
NGNGselect *
from TOKMST MST ,TOKTRN TRN
WHERE MST.SHITENCODE = TRN.SHITENCODE(+)
AND MST.TOKCODE = TRN.TOKCODE(+)
AND MST.SHITENCODE = '01'
AND MST.TOKCODE BETWEEN '0001' AND '9999'
AND (TRN.ZANDATE = '2002/01/31'
or TRN.ZANDATE IS NULL)
0044デフォルトの名無しさん
NGNGメッセージが出てしまいます。
[Microsoft][ODBC SQL Server Driver][SQL Server]
データベース コンテキストは '<***>' に変更されました。
[Microsoft][ODBC SQL Server Driver][SQL Server]
言語設定を 日本語 に変更しました。
SQLは初めてで何のことか調べてもサッパリで困り果てて...
おわかりになる方いましたらご教授願えませんでしょうか。
0045デフォルトの名無しさん
NGNG設計値テーブルが下記のようになっているため、
UPDATE 単価
SET T.COST = S.長さ x S.高さ
FROM 設計値 AS S, 単価 AS T
WHERE S.ID = T.ID
したいのが思うようにいきません。
設計値
ID PARM VALUE
01 長さ 30
01 高さ 25
02 長さ 50
02 高さ 30
03 長さ 50
03 高さ 30
単価
ID COST
01 ...
02 ...
03 ...
0046山崎渉
NGNG0047デフォルトの名無しさん
NGNG以下のテーブルがあるとします
# 表中「_」はスペースだと思ってください。
販売コード___販売明細コード_大分類コード_売価
------------_--------------_------------_-----------
K0000000004__001____________01_________________10000
K0000000004__002____________03_________________10500
K0000000005__001____________01_________________13000
K0000000006__001____________03_________________10000
K0000000016__001____________03_________________10000
このテーブルから↓の行だけを取り出したいのです。
K0000000005__001____________01_________________13000
条件は
・大分類コード「01」または「02」を持っている
・同じ販売コードの中に大分類コード「03」を持っていない
といったものですが、group by を使ったり等何度試しても取り出せません…。
0048デフォルトの名無しさん
NGNGNOT EXISTS とか NOT IN とか
0049デフォルトの名無しさん
NGNGたしか、SQL鯖できるんだけどORACLEは出来なかったとおもう?
ビュー作ってやった記憶ある
0051デフォルトの名無しさん
NGNGsybaseは知らないけど
SELECT * FROM テーブル WHERE
大分類コード IN('01','02') AND
大分類コード NOT IN ( SELECT DISTINCT 販売コード FROM テーブル WHERE 大分類コード <> '03' )
てなかんじでいけない?
0052デフォルトの名無しさん
NGNG間違えた...
SELECT * FROM テーブル WHERE
大分類コード IN('01','02') AND
販売コード IN ( SELECT DISTINCT 販売コード FROM テーブル WHERE 大分類コード <> '03' )
0053デフォルトの名無しさん
NGNGOracleだと、
update t set cost = (select parm*value from s where s.id = t.id);
005447
NGNGそれだと、
K0000000004__001____________01_________________10000
K0000000005__001____________01_________________13000
の2行が取れてしまいました。。
select * from TABLE T1
where 大分類コード in ('01','02')
AND
NOT 販売コード in (
select 販売コード from TABLE T2
where 大分類コード = '03')
こんな感じでできました。お騒がせしました。
0055デフォルトの名無しさん
NGNGデータをNoでソートした後、分割して、その分割した
塊のN個目だけをのこして削除する。
No Name
------- ------
1008012 あああ
1008055 いいい
1008061 うううう
1000072 えええ
・
例:1000件のデータを100分割して、その中の2番目だけ取り出す。
つまり、11番目から20番目のデータが残る。
このようにできるDELETE文はないでしょうか。
ただしNoは連番ではありません。
お願いします。
0056デフォルトの名無しさん
NGNGTOP 10 〜 で、最初の10件が取得できる。
NOT IN あるいは NOT EXISTS を使うことで
最初の10件以外のデータが取得できる。
そのデータのTOP 10 を取得することで
11〜20件目が取得できる。
DETETE と NOT IN(NOT EXISTS)で11〜20件目以外の
データをたぶん削除できる。
0057デフォルトの名無しさん
NGNGSQL鯖では>>45のSQLが通るはず
ORACLEは>>50でいくみたいね
おいらは思いつかずVIEW作ってUPDATEしてた
>>55
質問ではDBMS名を書きましょう
答える方もいろいろ考えるの大変だし
PostgresはLIMITとOFFSETを使用すれば簡単
ORACLEはrownumでサブクエリにすれば出来るし
SQL鯖では(たぶんSQL2発かな?)
select TOP 10 * from
(
SELECT TOP 20 * from Table order by No asc
)
order by No desc
0058デフォルトの名無しさん
NGNGうちの会社は大丈夫なんだろか…
月曜日出勤するのが恐しい…
((;゚Д゚)ガクガクブルブル
0059デフォルトの名無しさん
NGNGみたいにしてレコードを選択する場合
tableidの大文字小文字を無視することはできないでしょうか?
tableidがTargetだったりtarGetだったりTARGETだったりする
レコードをすべて抜き出したいのですが・・・
正規表現の//iに近いイメージです。
0060デフォルトの名無しさん
NGNGうまくいかない部分がありますので教えていただきたいと思います。
使っているデータベースのソフトは MicrosoftAccess です。
要素を追加しようとしているテーブルには、3つの列(key, ID, time)があり、
データ型はオートナンバー(key)とテキスト型(ID, time)です。
プログラム中で、
String sql = "INSERT INTO table (ID, time) VALUES ('user', '1:10')";
という感じで、オートナンバーは挿入時に自動的に決まるように INSERT 構文を
書いたのですが、
「INSERT INTO ステートメントの構文エラーです」
というメッセージが出てしまいます。
どこかおかしいところがあれば、ご指摘いただきたいと思います。
0061デフォルトの名無しさん
NGNG0062557
NGNG| kumi |name1 |name2 |name3 |...|name10|
|------|------|------|------|---|------|
|1kumi | 安藤 | 伊藤 | 上田 |...| 斉藤 |
|2kumi | 赤田 | 上島 | 浦部 |...| 小島 |
|3kumi | 安西 | 池田 | 榎本 |...| 田方 |
|------|------|------|------|---|------|
というようなmeibo1というテーブルがあり、
同じような形式のテーブルがmeibo4まであります。
それぞれのテーブルにははじめの列に必ずkumiという列があります。
つまり学級ごとの生徒の名前が10人づつはいっているテーブルが4つ
あり、全部で1クラス40人の名前データがあるのですが、
たとえばこの複数のテーブルから
「鈴木」と「矢田」という名前のあるデータのkumiの値を取り出したいのです。
しかし、「鈴木」と「矢田」というデータが違うテーブルにあるため
どのようなSQLを入力すればよいのかわかりません。
このような複数のテーブルからの重複検索の方法はありませんか?
テーブルをまとめずに検索したいのですが。よろしくお願いします。
0063デフォルトの名無しさん
NGNG|-----|------|-----|-----|...|-------|
| kumi |name1|name2|name3|...|name10|
|-----|------|-----|-----|...|-------|
|1kumi | 安藤 | 伊藤 | 上田 |...| 斉藤 |
|2kumi | 赤田 | 上島 | 浦部 |...| 小島 |
|3kumi | 安西 | 池田 | 榎本 |...| 田方 |
|-----|------|-----|-----|...|-------|
すみません。まだずれてますけどお願いします。
0064デフォルトの名無しさん
NGNGまずテーブル設計自体がクソ。
0065デフォルトの名無しさん
NGNG> このような複数のテーブルからの重複検索の方法はありませんか?
に対しては、union で何とかなると思う。しかし...
>>64 の言うように、テーブル設計が無茶苦茶。
こんなテーブルでは、多分たいしたことしてないだろうから無理せず Excel で運用した方がいいとおもう。
0066デフォルトの名無しさん
NGNGんだから質問するならDBMSくらい書けよ
折角書いてもサブクエリ使えなきゃ意味無いじゃん
0067デフォルトの名無しさん
NGNGselect * from table where lower(tableid)='target';
みたいに、カラム側に大文字or小文字変換をかければ良し。
ただ、indexが使われなくなる可能性大。
0068( _。。)_ バタ。 ◆eJlUd9keO2
NGNGSQL−DBとしての意味をなしてないな。 そら非効率だわ。
一応方法は>>65が指してるから置いといて…
面倒だけど今からでも遅くない。こうしとけ
[meibo]
serial bigint(20) unsigned not null auto_increment, (若しくはpgならserial宣言)
meibo_number bigint(22) not null,
kumi varchar(12) not null,
name varchar(50) not null,
上から順番に シリアル番号 名簿番号 クラス 名前 だな。
最初っからこうしとけば
select kumi from meibo where 1 and name='鈴木' or name='矢田' order by meibo_number, class, serial
の1発で済むだろうに。
【 >>63 は DBを理解するところから始めましょう 】
しかし、作ってしまったものは…いや!
やはりここはプログラム書いてでも今すぐテーブル構造を何とかしろ! 今すぐ!
>>67
うわ、変換あったんだ。 覚えとこう…。
0069デフォルトの名無しさん
NGNGとりあえずマニュアル見とけ
SQLリファレンスとかきっとあるから関数の章を眺めること
0070( _。。)_ バタ。 ◆eJlUd9keO2
NGNG関数とトリガーって、やっぱり見ておかないとダメか。
久しぶりにやる気出てきた。 がんばるべー。
0071Q
NGNGSELECT COUNT(*) FROM TABLENAME WHERE HOGE='HOGE';
のようにした場合は全行をカウントするのでロスが出ると思い、効率のいい方法を探して
いるのですがよい方法はないのでしょうか?
0072デフォルトの名無しさん
NGNG明日でよければ書いとくよ。
0073デフォルトの名無しさん
NGNGWERER EXISTS (SELECT 1 FROM TABLE
WHERE 〜)
0074デフォルトの名無しさん
NGNGttp://www.db2.jp/siryo/db2online/db2s0/exstprd.htm#HDREXSTPRD
0075デフォルトの名無しさん
NGNG例えば「必須項目」と「任意項目」とあったときに
WHERE句で条件分岐させたい
(任意項目が入力されていたら任意項目も検索条件にする)
と言うようなものは書けるのでしょうか?
また書けるのでしたらどのように記述すれば良いか
ご教授お願いいたします。
0076デフォルトの名無しさん
NGNGSQLServerにはTOP 1がある。
他は知らん。
>>75
WHERE 検索対象 = 必須 AND (任意 = '' OR (任意 <> '' AND 検索対象 = 任意))
日本語をそのままSQLに翻訳してみた。
でも動的SQLの方が良くない?
0077デフォルトの名無しさん
NGNGthx
さっそく試してみます。
ってか、動的にしたいのはやまやまなのだが
とある事情で動的に書いてはダメなそうな・・・
0078デフォルトの名無しさん
NGNG>WHERE 検索対象 = 必須 AND (任意 = '' OR (任意 <> '' AND 検索対象 = 任意))
をちょっとデータに当てはめてみました。
TEACH_CODEはNUMBER(3,0) NOT NULL
FRUIT_CODEはNUMBER(6,0) NOT NULL
WHERE TEACH_CODE = 181 AND (FRUIT_CODE = '' OR (FRUIT_CODE <> '' AND FRUIT_CODE = 100005))
これだとTEACH_CODEが「181」でFRUIT_CODEが「空」のものか、FRUIT_CODEが「空」では無く「100005」
のデータを取得する。
・・・と言う事になってしまうと思うのですが。
007975
NGNG[検索対象1] = [TEACH_CODE]
[検索対象2] = [FRUIT_CODE]
[必須] = [181] ←「181」が入力された
[任意] = [100005] ←「100005」が入力された
WHERE TEACH_CODE = 181 AND (100005 = '' OR ('100005' <> '' AND FRUIT_CODE = '100005'))
[必須] = [181] ←「181」が入力された
[任意] = [] ←未入力
WHERE TEACH_CODE = 181 AND ('' = '' OR ('' <> '' AND FRUIT_CODE = ''))
数値かよ。
型に注意して適当にやってね。
SQLSERVERならこれでも通る。
0081デフォルトの名無しさん
NGNGデータベース内のテーブル「Table1」に「年齢」というフィールドがあったとする。
その時、VBのコードに(もちろん実際はstrSQLとかいうstring型の変数を用意しておいて
やるが、ここは簡略的に書いてある)
str文字=20
SELECT * FROM Table1 WHERE 年齢 = 'str文字'
と書いてレコードを検索しようとした場合、「str文字」という項目を探してしまう。
裏技のようなものはないですかね・・・。
008281
NGNGスマソ
008381
NGNG俺変なこと聞いてる?
0084デフォルトの名無しさん
NGNG脳障害の疑いがあります。知能検査を受けてください。
(知的障害者更生施設への入所をお奨めします)
0085デフォルトの名無しさん
NGNGお前は人格に欠陥がある。死んだ方がいいよ。
0086デフォルトの名無しさん
NGNG↓
WHERE 検索対象 = 必須 AND (任意 = '' OR 検索対象 = 任意)
>>83聞いてる
008776
NGNGあらほんと、こぼけかましてました。
でも>>78は「任意」に「FRUIT_CODE」を当てはめてしまいましたとさ。
>>81
内容的に変なことは聞いてない。聞き方が変なだけ。
レベルの低いこと聞いてることは確か。
strSQL = "SELECT * FROM Table1 WHERE 年齢 = " & str文字
そんなあなたも>>84に比べれば全然素敵です。
008881
NGNGありがとうございました。
今日の午前中に会社からここを見て助かりました!!!
お陰で実験が成功して上司に報告する事が出来ました。
聞き方・・・勉強します。はい。
0089デフォルトの名無しさん
NGNGこの不景気なご時世に、そんな「実験」でメシが食えるなんてオメデタイ会社だね(w
0090デフォルトの名無しさん
NGNG009181
NGNG別にSQL文の実験じゃないぞ。
上に書いたことは実験に必要な極一部分だ。
それくらい解らないか?別にいいけどもさ。
0092デフォルトの名無しさん
NGNGいや、そんなこともないよ。SQLを使えるベンダはまだ国内で10社もないからね。
0093デフォルトの名無しさん
NGNGORACLEとMicrosoftとSybaseとIBMとInfomixと・・・あと何だ?
0094デフォルトの名無しさん
NGNGあと思いついたのが、びーとりぶ?
ボーランドも作ってないかい?
0095デフォルトの名無しさん
NGNGTabA
Key1 Data1 Data2
----------------
1 2 A
2 2 X
3 1 L
Key1 Key2 Data3 Data4
---------------------
1 4 o p
1 8 e f
3 3 x q
というテーブルがあった時、
Key1 Key2 Data1 Data4
-----------------------
1 8 A p
2 NULL 2 X
3 3 1 q
と言うようなデータを選るにはどうしたらよいでしょうか?
TabA.Key1=TabB.Key1の関係ですが、
必ずしも結合出来るデータがあるとは限りません。
TabBに結合できるデータが複数ある時は
Key2が一番大きい値のデータが欲しいです。
Ora8i使ってます。
最初、サブクエリーで余裕かと思ったんですがダメでした。
0096デフォルトの名無しさん
NGNGとりあえず外部結合でググると(・∀・)イイ!
あと、検索結果2行目のData4が「X」になっているけど
1.NULLの間違い
2.Tab2で等価結合できるデータがない場合はTab1.Data2を表示する、という仕様を書き忘れた
3.その他
どれ?
1.だとして話を進めるとこうかな?
select a.Key1,c.maxKey2,a.Data1,b.Data4
from Tab1 a,Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where a.Key1 = b.Key2(+)
and a.Key1 = c.Key2(+)
眠いからあんまり深く考えてない。駄目だったらスマソ
009796
NGNGselect a.Key1,c.maxKey2,a.Data1,b.Data4
from Tab1 a,Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where a.Key1 = b.Key1(+)
and b.Key1 = c.Key1
and b.Key2 = c.maxKey2
0098デフォルトの名無しさん
NGNG天下の目立様を忘れてないかい?(w
0099デフォルトの名無しさん
NGNG目立グループ内では、天下だろうけど...。
010095
NGNGありがとうございます。すいません、例題ミスってましたね。1番が正解です。
自分も同じようなSQL文書いたんですがダメだったんです。
>>97を実行すると下のようになります。
KE MA DATA1 DATA4
-- -- ---------- ----------
1 2
2 2
3 3 1 q
念のため、サンプルSQLを書いておきますので
暇が余っていたら試してみてもらえませんか?
とりあえず、プログラムではデータ量・要求パフォーマンス共に
たいしたこと無かったんで、ループさせながらSQL1つかませて
逃げたんですが、どーしてそれじゃダメなのか納得行かないんです。
create table TabA(
Key1varchar2(2),
Data1varchar2(10),
Data2varchar2(10));
create table TabB(
Key1varchar2(2),
Key2varchar2(2),
Data3varchar2(10),
Data4varchar2(10));
insert into TabA values('1','2','A');
insert into TabA values('2','2','X');
insert into TabA values('3','1','L');
insert into TabB values('1','4','o','p');
insert into TabB values('1','8','e','f');
insert into TabB values('3','3','x','q');
010195=100
NGNG100で書いた結果は>>96の結果でした。
>>97の実行結果は
KE MA DATA1 DATA4
-- -- ---------- ----------
1 8 2 f
3 3 1 q
が正しいです。
0102デフォルトの名無しさん
NGNGOracleの外部結合って結合条件以外にも
外部結合演算子付けなきゃいけないんじゃ
なかったっけ?
010397
NGNGselect a.Key1,c.maxKey2,a.Data1,b.Data4
from Tab1 a,Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where a.Key1 = b.Key1(+)
and b.Key1 = c.Key1(+)
and b.Key2 = c.maxKey2(+)
今の職場、Oracle入ったマシンが無いから試してない。
つーか試せない。駄目だったらマジスマソ
010495=100
NGNG度々すんませんです。
でも・・・・・
KE MA DATA1 DATA4
-- -- ---------- ----------
1 2 p
1 8 2 f
3 3 1 q
2 2
という結果なんですよ。
なんででしょうね?ぱっと見簡単そうなんですけど。
別に謝ってもらう必要は無いっす。
俺もできないんだし。
さぁ、SQLパズル大好きな人挑戦してくださいっ!
0105デフォルトの名無しさん
NGNG97さんと変わらないと思うけど
SQL Serverで試したらうまくいったっぽい
SELECT TabA.Key1, TabD.Key2, TabA.Data1, TabD.Data4
FROM TabA
LEFT OUTER JOIN(
SELECT TabB.* FROM TabB
INNER JOIN ( SELECT Key1, MAX(Key2) AS MaxKey2 FROM TabB GROUP BY Key1 )TabC
ON ( TabB.Key1 = TabC.Key1 AND TabB.Key2 = TabC.MaxKey2 )
)TabD ON ( TabA.Key1 = TabD.Key1 ) ORDER BY TabA.Key1
あとはOracleで試して。
でも>>95の結果
Key1 Key2 Data1 Data4
-----------------------
1 8 A p
2 NULL 2 X
3 3 1 q
の一行目って間違いじゃない?
1 8 2 f
では?
010697
NGNG103はこれの間違いでした。
(A.X = B.X(+) AND B.X = C.X)とやるとAについて全件出てこないという
話を聞いたので・・・。けど、今見ると駄目っぽいな(;´Д`)y ─┛~~
select a.Key1,c.maxKey2,a.Data1,b.Data4
from Tab1 a,Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where a.Key1 = b.Key1(+)
and b.Key1 = c.Key1(+)
and b.Key2 = c.maxKey2
010797
NGNGこれで駄目なら漏れはあきらめまつ。
(1)
select a.Key1,d.Key2,a.Data1,d.Data4
from Tab1 a,
(
select b.* from Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where b.Key1 = c.Key1
and b.Key2 = c.maxKey2
) d
where a.Key1 = d.Key1(+)
(2)
select a.Key1,c.maxKey2,a.Data1,b.Data4
from Tab1 a,Tab2 b,
(select Key1,max(Key2) as maxKey2 from Tab2 b group by Key1) c
where a.Key1 = b.Key1
and b.Key1 = c.Key1
and b.Key2 = c.maxKey2
union
select a.Key1,NULL,a.Data1,NULL
from Tab1 a
where
and NOT EXISTS (select 1 from Tab1,Tab2 where Tab1.Key1 = Tab2.Key1)
010895=100
NGNGわざわざすんません。
でも、Ora8iじゃJOIN構文は使えないんです。
9i以降ならOKなんですが。。。
昨年末まではLinuxに入れた9iあったんですけど
もう潰してしまったので試せる環境が無いっす。
010995=100
NGNG>>107=97
(1)で逝けました。
ふむふむ、サブクエリーにサブクエリーをさらにかませると。
パフォーマンスは大丈夫っすかね?
時間が取れたら、大量データ(という名の実データ(w )で試してみます。
しかし、なーんでそんな面倒な事しなくちゃいけないんでしょ。
今一歩理解が足りないようですね>自分
ちなみに(2)は最後の行で式がありませんと怒られます。
本当にありがとうございました。
011097
NGNGまた間違えた(;´Д`)y─┛~~
(2)の最後の行は
where
NOT EXISTS (select 1 from Tab2 where a.Key1 = Tab2.Key1)
でつ。
a.Key1 NOT IN (select Key1 from Tab2 where a.Key1 = Tab2.Key1)
と同じになるはず・・・。多分だけど。
要は内部結合の結果と、Key1がTab1にあってTab2にないデータをUnionしてるだけです。
ちなみにパフォーマンスは(・Α・)イクナイ!と思う。
データ量が多いなら(1)はテンポラリセグメントを大量に使いそうだし、
(2)は相関副問い合わせになってるし・・・。
>しかし、なーんでそんな面倒な事しなくちゃいけないんでしょ。
多分、b,cでの内部結合の結果集合に対してaと外部結合しなきゃいけないから
じゃないかと。WHERE句じゃあ順番指定できないし・・・。
>>105さんのを見るとINNER JOINの結果に対してLEFT OUTER JOINしてるから
大丈夫なんだなぁ、と思いますた。
0111デフォルトの名無しさん
NGNG(Postgresでいうところの)DATE型のカラムに生年月日が入っています。
このカラムから現時点での年齢を求めるにはどうすれば???
おしえてください!
0112100
NGNG日付をYYYYMMDDの8桁の数字ととらえる。
当日と生年月日の後ろ4桁を比較し、
当日=>生年月日 なら 当日の前4桁ー生年月日の前4桁
そうでなければ(当日<生年月日)、当日の前4桁ー生年月日の前4桁+1
を算出。DECODEとかで。
つーか、俺はORACLEしか触った事ないんでPostgreにDECODEがあるかしらんけどなー。
0113100
NGNGcreate table date_sample(UMARE DATE);
というテーブルを作って
select umare
,decode (
sign(to_char(age,'MMDD') - to_char(sysdate,'MMDD'))
,-1
,to_char(sysdate,'YYYY') - to_char(age,'YYYY') + 1
,to_char(sysdate,'YYYY') - to_char(age,'YYYY')) toshi
from date_sample;
UMARE TOSHI
---------- ----------
2000/02/04 2
2000/02/07 3
2000/02/09 3
つーことで、ちゃんと誕生日が来たかも判別しております。
0114100
NGNGselect umare
,decode (
sign(to_char(umare,'MMDD') - to_char(sysdate,'MMDD'))
,-1
,to_char(sysdate,'YYYY') - to_char(umare,'YYYY') + 1
,to_char(sysdate,'YYYY') - to_char(umare,'YYYY')) toshi
from date_sample;
0115デフォルトの名無しさん
NGNGその名も Age() と言う関数があるのだが...。
Extract(Year From Age(生年月日))
0116111
NGNGいやー、100さんには申し訳ないんだけど
こういう関数があるんじゃないかとおもってたんですよね。
Ageかー。
なんで自分で調べてわかんなかったんだろ。
いやでも助かりました。
どもども。
0117115
NGNG> なんで自分で調べてわかんなかったんだろ。
まあ、ちょっとわかりにくいやね。
俺なら、'-' 演算子で timestamp - timestamp → interval ができるようにして、Age(x) は、now - x の略記法だよ。とすると思う。
0118100
NGNG別にいいんだもーん、自分の勉強になったから
と強がってみるテスト
0119デフォルトの名無しさん
NGNG主キーが数値型で、ほとんど連番になっているテーブルがあります。
ほとんど、というのは物理削除されたレコードの欠番があるからです。
そのテーブルに対して新規挿入する時に、欠番になっている番号を
主キーとして発番し、登録しなくてはなりません。
こういう場合、その欠番になってる番号ってSQL文一発でとって来れます?
やっぱり、FETCHして下から空きになってる番号をアプリ側で
探さないとだめですか?
よろしくおながいします
0120デフォルトの名無しさん
NGNGrownumと連番が違う最初の番号を抽出するとかかなぁ?
しかし負荷かかって意味ねーな
どうしても連番に拘るのなら
物理削除の発生頻度がわからないので、
あくまでも案だけど、
削除時にトリガ等で、連番を振り直す方が
よいかと思うのだが?
0121デフォルトの名無しさん
NGNGselect min(id) from (
select id+1 id from tbl
minus
select id+0 id from tbl
)
こんな類。速いかつーと微妙だけど。
0122デフォルトの名無しさん
NGNG0123119
NGNGrownumと連番が違う最初の番号を抽出ですか。
ぱっと思いつかないんですが・・・
select id,r from (
select id,rownum as r from (
select id from tbl order by id
))
where r <> id
and rownum = 1
こんな感じですかね?rownumってサブクエリで使っていいのかな?
ちょっと良く分からないので月曜日に試してみます。
連番の振り直しについては、説明不足で申し訳ないのですが
削除はけっこう頻繁におこるようで、無理そうです。
>>121
それ分かりやすくて(・∀・)イイ!
>>122
実は、この仕様が出てくる前はキーの最大値+1で発番してたんですけど
その時に発番テーブル作りましょうってテーブル設計者に言ってみたら
select max(id)+1 〜で取れって言われたんですよ。なんか、テーブルを
増やすのが嫌いな人みたいで。折角ですが、これも駄目って言われそうです。
とりあえず、FECTHしてロジックで比較と120さんのと121さんのを比べて
早そうなのを使います。みなさん、ありがとうございました。
0124デフォルトの名無しさん
NGNG>>select max(id)+1 〜で取れって言われたんですよ。なんか、テーブルを
普通はシーケンスを使うんだけどなぁ〜
0125119
NGNGrownumってサブクエリに書けたんですね。知りませんでした。
>>124
発番するキーがテーブル毎に「接頭語+年月+連番」とか「年月日+連番」とか
色々パターンがあって、月とか日とかが変わると連番を0に戻して振りなおす
という仕様があるんですよ。またまた説明不足でした。スマソ
まあ、実は0に戻す必要もないのでシーケンスでもいいのですが
「0に戻した方がカコ(・∀・)イイ!」
「ついでに欠番も埋めると超カコ(・∀・)イイ!」
という客&設計者の方針で今のような形になった訳です。
0126デフォルトの名無しさん
NGNG>>rownumってサブクエリに書けたんですね。知りませんでした。
書けるよーん
ふと思ったんだけど、論理削除しておいて
論理削除の番号があったら、そこにアップデートの方が
パフォーマンス的には良いかもなぁ
っとオモタ
0127119
NGNG>論理削除の番号があったら、そこにアップデートの方が
確かに変なSELECT文を発行しない分その方が速そう。
一から作るというのならその方が良さそうですね。
まあ、一から作るんならこんな変な作りにはしないという
話はありますが・・・(´・ω・`)
0128デフォルトの名無しさん
NGNG検索結果によってもう一度検索を行うテーブルを変更する(?)という
事はできますか?
例えば、
TableA
ID TABLE
--------------------
1 TableB
2 TableB
3 TableC
TableB
Key1 Key2
--------------------
01 X
02 Y
03 Z
TableC
Key1 Key2
--------------------
01 a
02 b
03 c
というテーブルがあった場合、
ID="1", Key1="01"の時は、"TableB"のテーブルから Key2="X"を、
ID="3", Key1="02"の時は、"TableC"のテーブルから Key2="b"を、
というような情報の取得を行いたいんです。
できれば1回のSQLでやりたいのですが、このような事はできる
でしょうか?
ちなみにDBはSQL Serverです。
0129デフォルトの名無しさん
NGNGselect ID, Key1, Key2
from TableA, TableB
where TABLE = 'TableB'
union
select ID, Key1, Key2
from TableA, TableC
where TABLE = 'TableC'
SQL Serverでも使えると思う。
・・・が、このような設計には普通はしない。
サブタイプの場合、子テーブル(TableB, TableC)側に
親テーブル(TableA)のキーを持たせて従属関係を作る。
#つーか、TABLEって列名使えるのか?
0130128
NGNGありがとうございます!
unionは考えたのですが、今回想定してるものではTableB,TableCに
あたるテーブルが6つあり、全部unionでつなげるとパフォーマンスが
怖いかなと思ってます。。。
普通は子テーブル側に親テーブルのキーを持たせるとの事ですが、
TableB
ID Key1 Key2
--------------------
1 01 X
1 02 Y
1 03 Z
2 01 X
2 02 Y
2 03 Z
TableC
ID Key1 Key2
--------------------
3 01 a
3 02 b
3 03 c
このようなイメージでよいでしょうか?
#この場合TableBとTableCを分ける必要ないですけど。
これの場合、Key2の部分がかなり重複する(20倍程度)してしまうので、
これまた怖いのですが、こういった形で組むのが無難なのでしょうか?
下手に何度もクエリーするより、こちらの方がパフォーマンスも良いですか?
#列名にTABLE・・・・。 ま、まぁ、サンプルとゆーことで(^^;
・・初心者ということをさらけ出しまくってます。
0131デフォルトの名無しさん
NGNGTableList ←テーブル一覧を格納するテーブルを作る。
ID(PK) TableName
--------------------
1 TableB
2 TableC
3 TableD
TableA
ID(PK) TABLE(FK) ←TABLEはTableListを参照する。
--------------------
1 1
2 1
3 2
TableBC
Key1(PK) TABLE(PK,FK) Key2 ←TABLEはTableListを参照する。
--------------------
01 1 X
02 1 Y
03 1 Z
01 2 a
02 2 b
03 2 c
TableBとTableCが分かれているのはレイアウトが同じで種類が違うんだろうから
TableListの代わりに種類マスタとかにしてTABLE列もSYURUIとかにしたらどーよ。
これで自然なSQL1文でお望みのデータが取得できます。
ちなみに「親テーブル(TableA)のキーを持たせて従属」させてはいけません。
結果は>130のとおり、データが冗長します。
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG下のコード、どこがおかしいのかわからないので
分かる方助けて下さい。 エラーメッセージは
Microsoft JET Database Engine (0x80040E14)
Extra ) in query expression '(UserID=)'.
だそうです。 データベースはアクセス使っています。
多分3行目の所が何か変なのでしょうが、さっぱり分かりません。
いらないスペースがありますか?
SQL = "Select "
SQL = SQL+"EmpUserName, EmpPasswd from tEmployee"
SQL = SQL+" Where "+"(UserID=" & inputID & ")"
response.write SQL+"<BR>"
よろしくお願いします。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGinputIDが空っぽなんじゃないの?
0136133
NGNGASPしてます。
書き込む掲示板が違ったかな? ゴメンナサイ。
やっぱりプログラム全体をみて
ながれをみないと、よく分かりませんよね。
もう一度出直してきます。
134さん、135さん、ありがとう。
0137デフォルトの名無しさん
NGNG表示させてコピーし、AccessのSQL窓で直接実行してみるこった。
それでちゃんと走るなら、SQL文の構文は正しい=原因はSQL以外ってことになる。
0138デフォルトの名無しさん
NGNGUserIDが文字列型なら
SQL = SQL+" Where "+"(UserID='" & inputID & "')"
かもね。
数値型なら
inputIDが空文字になることがあるかどうかってとこ。
0139デフォルトの名無しさん
NGNGフリーツールでsqlを使えるものはありませんか?練習用に・・・
0140デフォルトの名無しさん
NGNGフリーって事なら、PostgresかMySQLだべ?
Linuxでしか動かしたこと無いから
WINでのバージョン対応はわからないけど
これくらいは調べて練習してくださいな
0141デフォルトの名無しさん
NGNGID, PID, NAME(何でもいい)としています。
(親なしはPID 0、階層は任意)
1, 0, A
2, 0, B
3, 1, A-a
4, 1, A-b
5, 3, A-a-1
6, 3, A-a-2
というテーブルがあった場合に、ID 1 を指定して
A, A-a, A-b, A-a-1, A-a-2
を引くようにするにはどのようなSQLを書けば良いでしょうか。
使用しているDBはMySQLです。
0142デフォルトの名無しさん
NGNGPersonalOracleははいるはず。
0143デフォルトの名無しさん
NGNG>>140のやつを除けばFirebirdとかHSQLDBとかForte入れたらついてくるPointbaseとか
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGおもいっきり忘れてたけど
練習用ってことなら
MSDEがええんちゃうか?
SQL鯖と代わり映えしないし
あまりマイナーすぎると
詰まったときに情報少ないし
0146デフォルトの名無しさん
NGNGツリー構造を持たせるときには他の階層のデータを保持させてます。
特定階層以下の全データを取得したりするならこれでいいかな。
create table 階層_MST(
階層ID CHAR(8),
階層名 VARCHAR2(28),
第1階層 CHAR(8),
第2階層 CHAR(8),
第3階層 CHAR(8),
第4階層 CHAR(8),
第5階層 CHAR(8)
)
/
select * from 階層_MST A
where A.第1階層 = '〜'
/
0147デフォルトの名無しさん
NGNGその手のものって再帰SQL書くのが定石なんだけど、MySQLで通る?
http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_1b.html
この辺見れ
>>146
階層が有限ならそれでもいいけど、深さのばらつきによっては無駄が多いよね
0148141
NGNG>>147
再帰SQLなんて知りませんでした、感謝
で、MySQLでは通りませんでした
プロシージャ書くにもC/C++じゃなきゃダメらしいし
結局DB利用するプログラム側で何とかしました (´・ω・`)
0149デフォルトの名無しさん
NGNGFROM hoge AS T と
FROM hoge T
ってどっちが ANSI 準拠ですか?
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG俺だけであろうか・・・。
俺はSQL初心者だけど、何故かコードが長くなってしまう。
VBやC++のコードのように短くコンパクトにまとめようと思ってはいるんだけど、
試行錯誤の上、コードが長くなる・・・。
みんなはどう?
0152151
NGNGコードが長くなるってのは、例えばSELECTでレコードを一行持ってきて
それを10回続けてから、すべてのレコードをUNIONでくっつけて表示させようとすると
似たようなコードを10回書いかないといけない(俺の知識だとそうなる)。
ということです。はい。
0153151
NGNG普通プログラマとして働いていれば「データベース」を扱う機会が
少なからずあるはずなのに、この板では「SQL」に関するスレが少ないし
レス数が伸びない・・・・・・・・・。
不思議っぽ。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGまさにオマエモナ(プププ
0157デフォルトの名無しさん
NGNGめでたくないめでたくない・・
0158デフォルトの名無しさん
NGNGコーディングしてるっていう感覚はないんだがな
0159デフォルトの名無しさん
NGNGなんじゃ?もしかして
ORやINを使えば良いだけのことか?
件数や合計など得る場合なんかは
プログラム側でループをしなくても一発でいくし
その他にも、使いようによっては便利だけどなぁ
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGSQLはデータ操作言語であり、VBやC++みたいな、何でも出来る普通の
プログラム言語に比べて定型化してるから、定番的な処理はFAQとして
蓄積されてる。
業務が変わってもDB構造の基本はほとんど変わらないのと同じ。
だからあえて2chで聞く必要も無いんじゃないの。
たまに変態的な処理をしなければならなくなった時に聞くくらいかなw
0162デフォルトの名無しさん
NGNGOracleの掲示板よく利用してるけど、SQLの質問ってSQL入門程度の本でも分かるような超初心者的なものか
パズルとして出題できそうなほどの複雑な問合せかの2種類に殆ど分類できる。
前者については返答の後にSQL入門書買うことやんわりと薦めてるけど、そうするとお礼のレスが来る確立が下がるw
ロクに調べずに聞いてくる教えてクンだからしょうがないけど。
0163デフォルトの名無しさん
NGNG方法を教えてください。
0164デフォルトの名無しさん
NGNG無理です・・・
いやまてよ、Oracleへリンク張って・・・
アーヒャヒャ
0165デフォルトの名無しさん
NGNG「確立」が下がるのか?(w
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGありです。
ただ Jet の場合、ストアド使えないし
関数が VB なので基本のみにしましょう。
0169デフォルトの名無しさん
NGNGそれぞれ、得意先コード・伝票日付・伝票番号があるとするでしょ?
で、その2つのテーブルを合わせて、得意先コード順+伝票日付順+伝票番号順に
並び替えるSELECT文って、どう書くの?
0170デフォルトの名無しさん
NGNGどのDBかによって違うが?
0171デフォルトの名無しさん
NGNGselect
〜
from 売上伝票 a,入金伝票 b
where a.得意先コード=b.得意先コード
and a.伝票日付 = b.伝票日付
and a.伝票番号 = b.伝票番号
order by a.得意先コード,a.伝票日付,a.伝票番号
0172デフォルトの名無しさん
NGNG自然言語で記述すると、仕様がひどくあいまいに聞こえる。
他人に明確に要件を伝えられるぐらい自分が理解した時点では恐らく
問題はすでに解決しているのではないか。
・・・結局、他人に聞くよりは自分で考えてさっさとSQLを書いた方が
早い罠(w
0173デフォルトの名無しさん
NGNG客にちゃんと説明しろよ?
0174デフォルトの名無しさん
NGNG一時テーブルにINSERTする手もあるが...。
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNGありがとうございます。
実は先日選挙事務所でAccess2000使って仕事してたのですが
(後援会名簿のメンテナンス)、デザインビューで定義できる範囲
を超えた複雑な抽出が必要になり、生まれて初めてSQL文を
書いてクリアしました。
それから急にSQL文に興味を持った次第です。選挙事務所に
手伝いに来てた人の誰もSQL文を書いた事がないと言っており
ました。PGはいなかったようです。
Access使ってて、デザインビューではどうしても定義できない
抽出という場面に出くわした人は相当多いのではないかと思います。
0177デフォルトの名無しさん
NGNG親テーブルの主キーが複数
子テーブルは親テーブルの外部キーを持つ
親テーブルと子テーブルは別DB(これが問題)
ってな場合で、ある条件を満たす子供を持つ親の数が欲しい場合は、
select count(*) from (
select distinct parent_id_1, parent_id_2 from child where 条件
)
以外にやりようがあるでしょうか?
単純に言うと複数カラムでdistinctしたうえでcountしたいってことです
sybaseだとこれ動かないんですよ!(from句のsubqueryが駄目ぽい)
0178デフォルトの名無しさん
NGNG自分の場合は全くの逆っす
ORACLEやSQL鯖では、普通に出来ていた事が
ACCESSで使えなくて歯がゆい思いをしている人の一人です
こういう人も少なくは無いと思う。
>>177
select count(distinct parent_id_1, parent_id_2) from child where 条件
って通らなかったっけ?
0179177
NGNGそういう場合distinctの対象のカラムは1個までなようです。
○ select count( distinct id ) from something
× select count( distinct id_1, id_2 ) from something
なんでだろ?
0180デフォルトの名無しさん
NGNGなんでだろ?Oracleは大丈夫だ。
式にするしかなさそうだね。
0181デフォルトの名無しさん
NGNGサブクエリーかませばいいんでない?
0182デフォルトの名無しさん
NGNG釣られるな(w
0183デフォルトの名無しさん
NGNG正規化を行ったら、A,B,Cの3つのテーブルができたのですけど、データ量から
いうと、Aのテーブルがデータ全体の80〜90%くらいを占めるのです。
この場合、Aを、たとえば年度ごとに分けるなどしたほうがよいのでしょうか。
あるいは、巨大でも一つのテーブルにしておいたほうがいいのでしょうか
0184デフォルトの名無しさん
NGNGムダに複雑になるkら、基本的におすすめできない。
データ量がパフォーマンス悪化への与える影響が顕著で、それがシステムを使用する
側にとって致命的で、なおかつテーブルを分ける以外に改善する方法が無いなら
しょうがないかもしれないけど。
0185183
NGNGレスサンクスです。
テーブルの大きさを概算してみたら
1年分で
多くて1000バイトx1日あたり20くらいx365日 で
10^7バイト程度のオーダーだったので、1テーブルにします
0186デフォルトの名無しさん
NGNGつまり分けるなって事だ
0187デフォルトの名無しさん
NGNG年度をまたいだ処理を行わないならいいけど。
巨大といってもテラバイトとかじゃないんでしょ?
DBMSにもよるけど、100ギガ超とかなら良くある話なんで気にしないのがいいかも。
0188183
NGNGDBMSはPortgreSQLかMySQLです。
0190デフォルトの名無しさん
NGNG何をもって参照系って言ってる?
ちなみにMySQLはトランザクションはあるが。
0191デフォルトの名無しさん
NGNGINSERT UPDATEの頻度がSELECTに比べて十分に小さいという点では
参照系です。
候補がpostgresqlとmysqlなのは、予算の関係です。
0192デフォルトの名無しさん
NGNG普通だよな
0193デフォルトの名無しさん
NGNG最初にCSVかなんかからデータを一気にテーブルに流し込んで、
あとはSELECTのみ
ってかんじかな?
0194デフォルトの名無しさん
NGNG0195187
NGNGDBMSの候補、質問者のスキル、スケールからなんとなく、小企業のサブシ
ステム程度かなと思っただけ。
某Oraマンセー的な発言じゃないから、あまりつっこまないで。
確かにFirebirdは好きだけど。
0196デフォルトの名無しさん
NGNG会員ID 質問ID 解答
------ ------ ------
aaa 01 11111
aaa 02 22222
bbb 01 11111
bbb 02 33333
ccc 01 44444
ccc 02 22222
このようなテーブルから
質問01の解答が11111、かつ、質問02の解答が22222という会員のIDを
1度のSQLで取得したいのですが、SQLをどう書けばいいのかわかりません。
SELECT distinct 会員ID from TBL where
( 質問ID='01' and 解答='11111' ) and (質問ID='02' and 解答='22222');
ぐらいしか思いつかないのですが、もちろんこれではひとつもかかりません・・・。
1度で取得することは可能なのでしょうか?
よろしくお願いします。
0197デフォルトの名無しさん
NGNGAND と OR の意味を英和辞典で調べてみましょう。
0198デフォルトの名無しさん
NGNGそのクエリでは、質問ID='01'かつ質問ID='02'かつ解答='11111"かつ解答='22222'
と同じ。
0199デフォルトの名無しさん
NGNGよくある「たての物を横にする」的SQlを使えば可能ではあると思うが、
たぶん遅いしエラーも発見しにくい気が。
回答1、回答2・・・みたいな一時テーブルを作るほうが早いんじゃね?
0201デフォルトの名無しさん
NGNG「質問01の解答が11111という会員」 の一時テーブルを作る
「質問02の解答が22222という会員」の一時テーブルを作る
この二つのテーブル両方にある会員のIDを抜き出す
0202デフォルトの名無しさん
NGNG突っ込まれている意味がわかってないようなので
よく見比べてください
SELECT distinct 会員ID from TBL where
( 質問ID='01' and 解答='11111' ) OR (質問ID='02' and 解答='22222');
それとも?
SELECT * FROM
(SELECT 会員ID FROM TBL WHERE 質問ID='01' and 解答='11111') a,
(SELECT 会員ID FROM TBL WHERE 質問ID='02' and 解答='22222') b
WHERE a.会員ID = b.会員ID
をしたいのか?
SQLの考え方や、アプローチの仕方や慣れ必要なので
本などで理解を深めた方が良いかと思います
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGSELECT 会員ID
FROM TBL
WHERE (質問ID = '01' AND 解答 = '11111') OR
(質問ID = '02' AND 解答 = '22222')
group by 会員ID
having count(*) >= 2
普通はinとかexistsを使う。
Interbaseにあるかは知らんが。
>>197-203
お前らの中にレベル低すぎる奴が5,6人いる。
0205デフォルトの名無しさん
NGNGちなみに>>202の二つ目と>>204はどっちがいいんでしょうか。速さとか。
0206デフォルトの名無しさん
NGNGそれだとさ、同じレコードがあったとき
出てきちゃうんじゃ?
まぁ普通はプライマリキー違反起きると思うけど
会員ID 質問ID 解答
------ ------ ------
aaa 02 22222
aaa 02 22222
bbb 01 11111
bbb 02 33333
ccc 01 44444
ccc 02 22222
0207デフォルトの名無しさん
NGNGSELECT テーブル1.会員ID INTO Fromクエリ1
FROM テーブル1
WHERE (((テーブル1.質問ID)="01") AND ((テーブル1.解答)="11111"));
SELECT テーブル1.会員ID INTO Fromクエリ2
FROM テーブル1
WHERE (((テーブル1.質問ID)="02") AND ((テーブル1.解答)="22222"));
SELECT [Fromクエリ1].[会員ID]
FROM Fromクエリ1, Fromクエリ2
WHERE ((([Fromクエリ1].[会員ID])=[Fromクエリ2].[会員ID]));
クエリでテーブル作成する手間はあるが。
0208デフォルトの名無しさん
NGNGSELECT T1.会員ID FROM テーブル AS T1, テーブル AS T2
WHERE T1.会員ID=T2.会員ID And T1.質問ID='01' And T1.解答='11111' And T2.質問ID='02' And T2.解答='22222';
0209デフォルトの名無しさん
NGNGselect distinct 会員ID from TBL
where 会員ID in(select distinct 会員ID from TBL where 質問ID='01' and 解答='11111')
and 質問ID='02' and 解答='22222'
と書くよ。
0210デフォルトの名無しさん
NGNG少なくとも、こんな書き方が普通とは思えない
質問が2通りだけしかないってのなら、アリかもしれないけどね
0211204
NGNG>それだとさ、同じレコードがあったとき
>出てきちゃうんじゃ?
それの答えは
>普通はinとかexistsを使う。
です。
>まぁ普通はプライマリキー違反起きると思うけど
そですね。
>>196のテーブルは会員テーブルと質問テーブルの関係テーブルだろうから。
...ってところまで書いて思いついた。
「〜問目に対する答えが〜なら〜点」のような評価する用のテーブルを用意すれば
もっと自然なSQLが書けるかもね。
0212デフォルトの名無しさん
NGNGの最大値のレコードを対象としファイル取得するようなSQLを書きたいのですが、どのようなSQLを書けばいいのでしょうか?最初はSELECTでファイル名の取得の際に、複数レコードがあるかどうかを判別させて、
上記条件に合うレコードを持ってくるようにしたのですが、これでは上記条件に合うレコードしか引っ張ってこないので失敗でした。またWHEREで抽出できるかどうかと考えたのですが、これも上記条件のレコードのみを引っ張ってきて、
写真が複数無い人を引っ張ってきませんでした。何かいい方法はないでしょうか?
テーブルは会員登録用の下記と、
会員CD 氏名 会員区分CD
------ ------ ------
000001 モナ 000013
000002 ギコ 000013
000003 ぞぬ 000014
イメージ登録用の下記です
会員CD ファイル名 写真取込日 写真貼付日
------ ---------- ---------- ----------
000001 monakao.jpg 2003/03/01 2003/03/01
000001 monakao2.jpg 2003/03/04 2003/03/04
000002 gikokao.jpg 2003/03/04 2003/03/04
000003 zonukao.jpg 2003/03/04 2003/03/04
この二つをJOINさせて吐かせるときにモナーでmonakao2.jpgを選択して結果として下記を出したいのです。
会員CD 氏名 会員区分CD ファイル名 写真取込日 写真貼付日
------ ------ ---------- ---------- ---------- ----------
000001 モナ 000013 monakao2.jpg 2003/03/04 2003/03/04
000002 ギコ 000013 gikokao.jpg 2003/03/04 2003/03/04
000003 ぞぬ 000014 zonukao.jpg 2003/03/04 2003/03/04
お知恵を拝借できましたら幸いですます
0213デフォルトの名無しさん
NGNG意味が読みとりにくい文章だけど、、、
こんな感じ?
SELECT
会員.会員CD, 会員.氏名, 会員.会員区分CD, 最新イメージ.ファイル名, 最新イメージ.写真取込日, 最新イメージ.写真貼付日
FROM
会員,
(
SELECT * FROM (
SELECT
B.会員CD, B.写真取込日, B.写真貼付日, B.ファイル名 ,
(
SELECT COUNT(写真取込日) + 1 FROM
イメージ A
WHERE
A.写真取込日 > B.写真取込日 AND A.写真貼付日 > B.写真貼付日 AND A.ファイル名 > B.ファイル名 AND A.会員CD = B.会員CD
) AS RANK
FROM
イメージ B
) RESULT
WHERE
RESULT.RANK = 1
)最新イメージ
WHERE
会員.会員CD = 最新イメージ.会員CD
ORDER BY
会員.会員CD
0215213
NGNGSELECT
会員.会員CD, 会員.氏名, 会員.会員区分CD, 最新イメージ.ファイル名, 最新イメージ.写真取込日, 最新イメージ.写真貼付日
FROM
会員,
(
SELECT D.* FROM
(
SELECT B.* FROM
(
SELECT イメージ. * FROM イメージ,
( SELECT 会員cd, MAX(写真取込日) as 最新写真取込日 FROM イメージ GROUP BY 会員cd)A
WHERE イメージ.会員cd = A.会員cd and イメージ.写真取込日 = A.最新写真取込日
)B,
( SELECT 会員cd, MAX(写真貼付日) as 最新写真貼付日 FROM イメージ GROUP BY 会員cd )C
WHERE B.会員cd = C.会員cd and B.写真貼付日 = C.最新写真貼付日
)D,
( SELECT 会員cd, MAX(ファイル名) as 最新ファイル名 FROM イメージ GROUP BY 会員cd )E
WHERE D.会員cd = E.会員cd and D.ファイル名 = E.最新ファイル名
)最新イメージ
WHERE
会員.会員CD = 最新イメージ.会員CD
ORDER BY
会員.会員CD
全然スマートじゃない&データが多いと重そう。。。
とりあえずこんなんもあるということで。
0217196
NGNG>>202
後者のやつです。
こんな書き方ができることすら知りませんでした・・・。
でもこの書き方だとエラーになるみたいです(2つ目のselectで)。
いろいろいじってみたけどInterbaseがわるいのかな?
>>204
やりたかったのはまさにこれです。
こーゆーやり方があるんですねぇ。
>>206
会員IDと質問IDをプライマリにしてます
>>208
実行できませんでした(ASのところでエラー)
なんかSQLに関して無知すぎた気がします・・・。
も少し勉強してきまつ
ありがとうございました。
0218ORA
NGNG型番テーブル
PNO PRIMARY KEY 重複ナシ
KATANO VARCHAR2(6) 重複アリ
マスタテーブル
KATAMASTER VARCHAR2(10) 重複アリ
MAKER VARCHAR2(7) 重複アリ
結果表示
型番テーブルの「PNO」をマスタテーブルのMAKERで昇順出力すること。
KATAMASTERの先頭6桁は、KATANO(型番)
KATAMASTERの後ろ4桁は、訂符である(更新記録)。
KATANOは必ずKATAMASTERの先頭6桁とマッチする
KATAMASTERの先頭6桁が同じものであれば必ず同一のMAKERである。
できますか?私はギブアップしました。
0219213
NGNGSELECT PNO FROM 型番テーブル, マスタテーブル WHERE KATANO = LEFT(KATAMASTER, 6) ORDER BY MAKER
とかいうことではないの?
ちなみにPLSQLではLEFTじゃなくてSUBSTRかもしれない。
0220212
NGNGちょっとやってみたんですが、
FROM
会員,
(
SELECT D.* FROM
(
SELECT B.* FROM
(
SELECT イメージ. * FROM イメージ,
( SELECT 会員cd, MAX(写真取込日) as 最新写真取込日 FROM イメージ GROUP BY 会員cd)A
WHERE イメージ.会員cd = A.会員cd and イメージ.写真取込日 = A.最新写真取込日
)B,
( SELECT 会員cd, MAX(写真貼付日) as 最新写真貼付日 FROM イメージ GROUP BY 会員cd )C
WHERE B.会員cd = C.会員cd and B.写真貼付日 = C.最新写真貼付日
)D,
( SELECT 会員cd, MAX(ファイル名) as 最新ファイル名 FROM イメージ GROUP BY 会員cd )E
WHERE D.会員cd = E.会員cd and D.ファイル名 = E.最新ファイル名
)最新イメージ
CとEのFROMでそれぞれ先にやった作業の結果を受けないとだめですよね?
とおもって「FROM イメージ」をそれぞれ「FROM B」と「FROM D」にしてみましたけど動かないです…
さらに別名振らないといかんのですかね?それとも全く別の回避方法があるでしょうか?
0221213
NGNGまた間違ってたですか、、、
これはどう?
SELECT 会員.会員CD, 会員.氏名, 会員.会員区分CD, 最新イメージ.ファイル名, 最新イメージ.写真取込日, 最新イメージ.写真貼付日 FROM
会員,
(
SELECT イメージ. * FROM イメージ,
(
SELECT 会員CD, MAX(ファイル名) AS 最新ファイル名 FROM
(
SELECT イメージ. * FROM イメージ,
(
SELECT 会員CD, MAX(写真貼付日) AS 最新写真貼付日 FROM
(
SELECT イメージ. * FROM イメージ,
( SELECT 会員CD, MAX(写真取込日) AS 最新写真取込日 FROM イメージ GROUP BY 会員CD )A
WHERE イメージ.会員CD = A.会員CD and イメージ.写真取込日 = A.最新写真取込日
)B GROUP BY 会員CD
)C WHERE イメージ.会員CD = C.会員CD and イメージ.写真貼付日 = C.最新写真貼付日
)D GROUP BY 会員CD
)E WHERE イメージ.会員CD = E.会員CD and イメージ.ファイル名 = E.最新ファイル名
)最新イメージ
WHERE 会員.会員CD = 最新イメージ.会員CD ORDER BY 会員.会員CD
しかし重そう。
だれかスマートなやりかた教えて欲しい。
0222212
NGNGいや、やっぱり
DとBの中の「SELECT イメージ. * FROM イメージ,」がすてたはずのものを再度とってきちゃって
最終的にはファイル名の最大の物を持ってきてしまうです、その前でやってるはずの日付での抽出が無駄に…
(´・ω・`)ショボーン
0223デフォルトの名無しさん
NGNGselect K.会員CD, K.氏名, K.会員区分CD, ファイル名, 写真取込日, 写真貼付日
from イメージ登録用 M INNER JOIN 会員登録用 K ON K.会員CD = M.会員CD
where exists
(SELECT * FROM (
select top 1 * from イメージ登録用 S
where M.会員CD=S.会員CD ORDER BY 写真取込日 DESC, 写真貼付日 DESC, ファイル名 DESC
) AS S
where M.ファイル名=S.ファイル名 AND M.写真取込日=S.写真取込日 AND M.写真貼付日=S.写真貼付日)
当方SQLServer
0225212
NGNGおおこれは逝けそうです、
質問ですが「select top 1 * from イメージ登録用 S」ここって
「select top 1 * from イメージ登録用 AS S」
ってことですよね?
あと
最初のSELECTで持ってきてる「ファイル名, 写真取込日, 写真貼付日」
って
「S.ファイル名, S.写真取込日, S.写真貼付日」
でよいのですよね?
0227223
NGNG>「select top 1 * from イメージ登録用 S」ここって
>「select top 1 * from イメージ登録用 AS S」
>ってことですよね?
はい。
SQLServerでは「As」は省略可能です。他は知らん。
>最初のSELECTで持ってきてる「ファイル名, 写真取込日, 写真貼付日」
>って
>「S.ファイル名, S.写真取込日, S.写真貼付日」
>でよいのですよね?
はい。
SQLServerでは使用するテーブル内でカラム名が重複しないとき、
相関名は省略可能です。他は知らん。
いずれもあったほうが可読性は増しますけどね。
>>223は検証済みですよ。一応...
0228212
NGNGええ、ばっちし動きました、マジでありがとうございます
ASの所を聞いたのはそこのSと外のSとがあったので訳わかんなくなりそうだったんで…
ホントありがとうございました
0230デフォルトの名無しさん
NGNG同じ会員さんが、同日で複数登録してると「どっちやねん」って話にならない?
だから、「イメージ登録用テーブル」にユニークなキー(シーケンス)を
つけるのが一番楽でしょ
select a.会員CD, a.氏名, a.会員区分CD, b.ファイル名, b.写真取込日, b.写真貼付日
from 会員登録用 a, イメージ登録用 b,
(
select max(シーケンス) as シーケンス from イメージ登録用 group by 会員CD
) c
where a.会員CD = b.会員CD
and b.シーケンス = c.シーケンス
(未確認)
0232デフォルトの名無しさん
NGNGWHERE A OR B OR C AND D
じゃないですよね?
0233デフォルトの名無しさん
NGNGじゃないですか?
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGできるようになれよ…(;´Д`)
つーかこんくらい論理演算と呼ぶのもおこがましいよ
0237デフォルトの名無しさん
NGNGあなたの説明はわかる人にはわかり、わからない人にはまったくわからない
無意味なものです。
わからない人がなぜわからないのかを考えなさい。
ちなみに全てのSQL文は日本語をそのまま書くだけです。
>>232
質問する前に検証しやがれこのハゲ!
知識レベル以前の問題じゃこのチ○ゲ!
0238デフォルトの名無しさん
NGNG0239237
NGNG「SQL文は日本語をそのまま書く」は
日本語をSQLに翻訳する、ということなので
変換前は英語じゃなくて日本語ですよこのハゲ!
変換後の話にしてもSQLのことを英語と呼ぶ人はいないと思いますよこのチ○ゲ!
0240デフォルトの名無しさん
NGNGお前の中の人も必死だな
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG~~~~
読点打てただけマシだと思おうぜ
もっとひどいのが周りにイルヨー タスケテー
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGカラムが一杯の時、メモリが無駄だから
0246デフォルトの名無しさん
NGNG全角だから
0248デフォルトの名無しさん
NGNG正解
0249デフォルトの名無しさん
NGNGちゃんと「※」を使わなきゃだめだよ。
0251!244
NGNGselect name と
select *
では何か違う?
0252デフォルトの名無しさん
NGNGそれはひどいテーブルですね。
0253デフォルトの名無しさん
NGNGテーブルを調べて * が name だということを確認する手間がかかる。
0254デフォルトの名無しさん
NGNGちょっとワラタw
0255デフォルトの名無しさん
NGNG使うな言った人に聞くのが良い
マジレスすれば
DBレイアウトが変わったときなんかに
影響でないようにとかだべ
0256デフォルトの名無しさん
NGNG>>253のほうが正解。
テーブルがころころ変わるようなのは正直やめて欲しい。
0257デフォルトの名無しさん
NGNGそうか?
その例だと、上りの通信トラフィックが3バイト分はかかるじゃん
例が1項目だからたいしたこと無いけど
全ての項目を書いたら、結構なバイト数になる場合あるっしょ
0258デフォルトの名無しさん
NGNGSELECT * はそのままでもいいかもしれんが
結局他の場所は変更しなきゃいけないのでは?
素直にSELECT name って書いておけ
0259デフォルトっぽい名無しさん
NGNGマジレス。
結果が返ってくる時のトラフィックに比べれば
select文の通信トラフィックは遙かに小さい。
0260デフォルトの名無しさん
NGNGその通りだ
*指定でも、全項目書くのも。同じ項目数のデータ量をとるならね
前後を読んでね
>>253でに対しての確認する手間がかかる 今の性能からしたら影響薄
>>255でのレイアウト変更の影響を考えて 今の性能でも影響大
>>258参照系には影響ない(はず)
だから追加更新系だけ重点的に見れば良い
かなりの工数は減らせる
だから、SELECT nameにしておけって事だ
0261デフォルトの名無しさん
NGNGお前は...
1) バカみたいに項目数が多いテーブルを作っている
2) バカみたいに低速な回線を使っている
のどっちだ ?
0262デフォルトの名無しさん
NGNGお前は...字が読めないのか?
ちゃんと読め
どう考えても>>253の方が正解とは思えない
それとも、バカみたいな低速な鯖使ってるのか?
だから>>255の方が正解
トラフィックの例も今の性能からしたら大したこと無い
ただ自分は、DBにもネットワークにも負荷を抑えるように
そう心がけてるだけだけど
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNGわざわざ遠い本屋に行って立ち読みして調べちゃったYO!
0265デフォルトの名無しさん
NGNG自分で調べた方が勉強になるだろ。
聞くのは最後の手段に汁
0266デフォルトの名無しさん
NGNGうん。
ちなみに文字列にある文字列があるものだけ抽出したいんだけど、LIKEを使えばいいんだよね??
0267266
NGNG0268デフォルトの名無しさん
NGNGそうだけど、LIKE使うと(特に先頭に%)遅くなるから注意な
0270デフォルトの名無しさん
NGNG問題すり替えは辞めろ
結論
select nameで指定するのが良い
レイアウト変更時の影響のことと
無駄なモノを抽出しないって考えてだな
(結果が返ってくる通信トラフィックも考えて)
0271デフォルトの名無しさん
NGNGじゃあ、たいした検索はできないな。
1レコードに300文字くらいの文章が入っている場合、ナマズとかに食わせてインデックスを作らせて検索した方がいいのかな。
0272デフォルトの名無しさん
NGNGおいおい、>>257 は完全なネタだろ ?
茶々のつもりで書いた >>261 にそんなに突っ込まれても...。
0273デフォルトの名無しさん
NGNGDBMSでSQL受け取ったあと何してるのかもちゃんと考えても>>253がわからない?
1) SQL受け取る
2) SQLをコンパイル
a) 「*」をシステム表に問い合わせて展開
b) 実行プラン作成
3) コンパイル済みSQLを実行
4) 結果を戻す
って感じだとおもうんだけど、2-a)って無駄な割りにコスト高いと思うんだけどな
まあ、馬鹿みたいに低速な回線使ってるんならせいぜい数十バイトをケチってくれって
感じなんだが。
その場合はDB直接アクセスするような設計が悪いとしか思えないけど。
0274デフォルトの名無しさん
NGNG2-a)ってそんなにコストが高いのか?
何度もくればキャッシュが効かなかったっけ?
ネットワークも1回のSQLが数バイトだろうと、
秒間何度もくれば、チリも積もればって事もあるし
そんな努力よかなら、ストアドなんか使えば劇的に減らせるけどね
0275デフォルトの名無しさん
NGNGoracle限定じゃん
0276デフォルトの名無しさん
NGNG1レコードを見て、その中から最新のDATEを取得するには
どのようなSQLを書いたらいいのでしょうか?
DBはInterBaseを使っています
0277デフォルトの名無しさん
NGNGselect max(ddd) from (
select max(date1) as ddd from table
unian all
select max(date2) as ddd from table
unian all
select max(date3) as ddd from table
)
って通るか?
0278デフォルトの名無しさん
NGNGunian all→union all
鬱だ
0279デフォルトの名無しさん
NGNGview A
| DEPT(PK) | ID(PK) | POINT |
-------------------------------
| 0001 | 01 | 1 |
| 0001 | 02 | 2 |
| 0002 | 02 | 6 |
| 0002 | 03 | 7 |
| 0002 | 05 | 9 |
| 0003 | 03 | 2 |
table B
| DEPT(PK) | ID(PK) | POINT |
-------------------------------
| 0001 | 01 | 1 |
| 0001 | 04 | 1 |
| 0002 | 01 | 1 |
| 0002 | 03 | 1 |
| 0003 | 03 | 1 |
A.POINTの値を対応するB.POINTに格納したいんですが・・・
update B set POINT = (select POINT from A where A.DEPT = B.DEPT and A.ID = B.ID)
where A.DEPT = B.DEPT and A.ID = B.ID
ではダメでした。
厨房な質問ですがこの場合のSQLを教えてください。
0280デフォルトの名無しさん
NGNG★いらっしゃいませ!!ようこそココへ★
0281デフォルトの名無しさん
NGNGDELETE FROM A;
DELETE FROM B;
COMMIT;
0282デフォルトの名無しさん
NGNGselect POINT from A where A.DEPT = B.DEPT and A.ID = B.ID
これ複数行戻ってくるんだからだめじゃん
0283デフォルトの名無しさん
NGNGむしろ
DROP TABLE A;
DROP TABLE B;
0284デフォルトの名無しさん
NGNGAはViewなんだが・・・。
0285デフォルトの名無しさん
NGNG見てなかった(;´Д`)
0286279
NGNGお騒がせしました。
UPDATE文にFROM句が使えるとは知りませんでしたが、
これってSQLサーバーのSQLの仕様なんでしょうか?
Oracle等でもUPDATE文にFROM句が使えるのでしょうか?
0287デフォルトの名無しさん
NGNGっていうか、FROMを入れるのは基本構文っしょ?
だけど、ORACLEのUPDATE時は
テーブル名が一つしか書けなかったような?
だから省略するのが一般的になってたと
(ORACLE8iまでしか知らないけど)
SQL鯖はFROM句に複数個テーブル書けちゃうんだよなぁ(意外と便利)
>>281
SQL鯖はデフォルトではトランザクションにならないっす
だからCOMMITはいらんっす
ちなみに「COMMIT TRAN」って書かなきゃダメ
0288デフォルトの名無しさん
NGNG>>279の路線で行くなら
UPDATE B SET POINT = (SELECT POINT FROM A WHERE A.DEPT = B.DEPT AND A.ID = B.ID)
WHERE EXISTS (SELECT * FROM A A WHERE A.DEPT = B.DEPT AND A.ID = B.ID)
ですかね。無理矢理ですが。
最終形は
UPDATE B
SET POINT = A.POINT
FROM B INNER JOIN A ON B.DEPT=A.DEPT AND B.ID=A.ID
かな?
0289デフォルトの名無しさん
NGNG> ネットワークも1回のSQLが数バイトだろうと、
> 秒間何度もくれば、チリも積もればって事もあるし
悪いけど、その3バイトの差がどれだけの時間の差になるか計算してから発言した方がいいぞ。
TCP/IP のヘッダ長ぐらい知ってて言ってんだよな。
0290デフォルトの名無しさん
NGNG「TCP/IP」のヘッダ長
0291279
NGNG>テーブル名が一つしか書けなかったような?
>だから省略するのが一般的になってたと
ありがとうございます。納得しました。
>288
最終的には
UPDATE B
SET POINT = A.POINT
FROM B, A WHERE B.DEPT=A.DEPT AND B.ID=A.ID
でいけました。
0292デフォルトの名無しさん
NGNGselect count(name) from table
の違いって知ってる?
0293デフォルトの名無しさん
NGNGtableの項目
SEQ_NO USER_NM
だったらどーすんだ
0294デフォルトの名無しさん
NGNG書き込みの意図が判らんよ。
質問してるんかい?
0295デフォルトの名無しさん
NGNGこんなことできるんだ。使い道あるんかわからんけど。
select count(distinct col1),count(distinct col2) from table
>>292さんありがとう。
0296デフォルトの名無しさん
NGNG違いがわかってんのかなぁ っと思って
0297デフォルトの名無しさん
NGNGこのリストを読込んで、このリストに存在しないものを抽出するSELECT文を作る
関数を作成しているのですが、よい方法が思いつきません。
以下のような方法以外で、何か賢い方法はありませんか?
SELECT * FROM tbl1
WHERE tbl1.KeyFld NOT IN(ファイルから取得したリスト)
0298デフォルトの名無しさん
NGNGDBにもよるけどNOT EXISTかMINUSを使うってとこかな。
0299デフォルトの名無しさん
NGNG以下のようなコードを書いていると、カラムの変更があったときに
コードも変更する必要があるため、"SELECT *"は使わないように
してほしいのです。
INSERT INTO .... SELECT * ....
0300デフォルトの名無しさん
NGNGありがとうございます。
MINUS:
SELECT * FROM tbl1
MINUS
SELECT * FROM tbl1 WHERE KeyFld IN(ファイルのリスト)
ということでしょうか?
NOT EXISTSは?
SELECT * FROM tbl1
WHERE NOT EXISTS(
SELECT * FROM tbl1 tmp
WHERE tmp.KeyFld = tbl1.KeyFld
AND tmp.KeyFld IN(ファイルのリスト)
)
???
INを使わないとダメですか?
0301デフォルトの名無しさん
NGNGファイルのリストちゅーのが
テンポラリのテーブルに入れられれば
0302天使
NGNG以下のような感じで動的SQLのフェッチをしたいのですがこのままでは
サーバー : メッセージ 170、レベル 15、状態 1、行 4
行 4: '@hoge' の近くに不正な構文があります。
のようなエラーが出てしまいます。
どのようにすれば動的SQLが可能になりますでしょうか?
declare @hoge varchar(100)
declare @val varchar(100)
set @hoge= 'select top 1 名前 from 商品マスタ'
declare wk cursor for (@hoge)
open hoge
fetch hoge into @val
close hoge
0303デフォルトの名無しさん
NGNG>select count(*) from table
tableの全レコード数
>select count(name) from table
nameがnullじゃ無いレコードの数
ちなみに全レコード数求めるときはこんな書き方も出来る
select count('X') from table
0304デフォルトの名無しさん
NGNG正解
ってことを、ふまえて>>253は
ホントかと? ちと思ったんだけど
0305デフォルトの名無しさん
NGNG完全に自由にしたいのならクライアント側でSQL文組み立てたほうが
良くないか?
0306デフォルトの名無しさん
NGNGなんでいまさら?
>>304
ほんとなんだけど、*を全カラム名に展開する必要があるかは判断してると思うけど
count(*)と単なる*は挙動が違うってことじゃないかなと
>>303を知らんかったので確定情報じゃないけど
0307デフォルトの名無しさん
NGNGExecの中にカーソル定義を全部ぶちこめばいい
Exec('declare cursor for ・・・ select ')
0308デフォルトの名無しさん
NGNGExec('declare cursor for ・・・ select ・・・')
もし女だとそのまま受け取ることが多いから一応いっとく
0309デフォルトの名無しさん
NGNG>女だとそのまま受け取ることが多いから
以前に、某MLで、「"Hoge.DLL"云々・・・(略)」という「例文」の文意を読み取れず、
「Googleで検索したのですが、"Hoge.DLL"が見つかりません(泣)」と投稿した女性が
いたのを思い出したよ。
0310デフォルトの名無しさん
NGNGホントか ? 今検索したら、128件も見つかるんだが...。
(hage.dll なら確かに見つからないけどな。)
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGワラタ
0313302
NGNG0314デフォルトの名無しさん
NGNGユーザID 質問グループ 質問番号
A 1 00001
A 1 00003
A 2 00002
A 2 00003
A 3 00001
A 3 00002
A 3 00003
B(省略)
C(省略)
ユーザIDがA、かつ質問番号が00001と00003のみを保持する質問グループを取得する。
これをSQLのみで記述できるでしょうか?
この場合は1のみが結果としてかえってくればいいのですが、上手くいきません。
わかる方いらっしゃいましたら、よろしくおねがいします。
0315デフォルトの名無しさん
NGNGWHEREって知ってますか?
0316デフォルトの名無しさん
NGNGwhere だけで何とかなると思ってる >>315 はほっとくとして、
とりあえず環境は何よ ?
ユーザID 云々は単純に条件に加えるだけだからひとまず置いて、
質問番号 1 と 3 の両方を持つ質問グループの一覧 ( → A )と、
質問番号 1 と 3 以外を持つ質問グループ一覧 ( → B) を求めて、
A から B の差分を取ればいいんじゃないの ?
Postgres なら Excep 句あたりでできそうな気がする。
0317デフォルトの名無しさん
NGNGSet recRS = dbDB.OpenRecordset(" SELECT * FROM ifile_Converter " & _
" WHERE Hoge1 = " & strString1 & _
" AND Hoge2 = " & strString2 & _
" AND Hoge3 = 完了;", dbOpenSnapshot)
直接VBとは関係のない話になってしまうのですが、上記のCSVファイルが
構文エラーになってしまいます。なぜなのでしょうか?
0318デフォルトの名無しさん
NGNG0319317
NGNGHoge3 = 完了 のように文字列で直接比較することはできないのですか?
0320デフォルトの名無しさん
NGNGたとえばVBなら
Hoge3 = 完了
Hoge3 = "完了"
のどっちが正しいと思うよ
0321319
NGNGVBスレのほうで解決策を教えてもらえました。
どうもお騒がせしました。
0322デフォルトの名無しさん
NGNGSelect 質問グループ
From TABLE
Where ユーザID = 'A' And 質問番号 In (1, 3)
Group By 質問グループ
Having Count(Distinct 質問番号) = 2
0323デフォルトの名無しさん
NGNG「質問番号 In (1, 3)」で選んでるんだから
> Having Count(Distinct 質問番号) = 2
は質問番号 1 と 3 以外を持つものにも成立しないか?
つーか手元にあったAccessで試したら「演算子がない」っつーエラーになったけど、
これはAccessが腐ってるだけ?
0324デフォルトの名無しさん
NGNGSelect 質問グループ
From TABLE
Where ユーザID = 'A' And 質問番号 Not In (1, 3)
Group By 質問グループ
Having Count(Distinct 質問番号) = 0
0325デフォルトの名無しさん
NGNGユーザID 質問グループ 質問番号
A 4 00002
A 5 00001
A 6 00003
全部引っかかるぞ。
問題文をちゃんと読め。
0326デフォルトの名無しさん
NGNGすみません。環境記述しわすれました。Oracle9iです。
>A から B の差分を取ればいいんじゃないの ?
>Postgres なら Excep 句あたりでできそうな気がする。
このあたりで調査してみます。ありがとうございます。
>>322、324
だとうまくいかなそうです、、すこし付加すればできるのかもしれないですが、、
#というか正直テーブル構成がくさってるのが問題、、
0327デフォルトの名無しさん
NGNGユーザーを絞る部分は端折るとして、これでどう?
サブクエリがNGならtemp table使って。
select 質問グループ
from
(select 質問グループ from table 質問番号 = 1) a
inner join (select 質問グループ from table 質問番号 = 3) b
on a.質問グループ = b.質問グループ
left join (select distinct 質問グループ from table 質問番号 not in (1,3)) c
on a.質問グループ = c.質問グループ
where
c is null
0328デフォルトの名無しさん
NGNGwhere抜けてた
(select distinct 質問グループ from table where 質問番号 not in (1,3))
0329デフォルトの名無しさん
NGNGSELECT distinct 質問グループ
FROM TABLE
WHERE ユーザID = 'A' AND 質問番号 IN (1, 3)
0330デフォルトの名無しさん
NGNG質問番号が2のがあったら弾きたいんだから、ダメじゃん?
0332デフォルトの名無しさん
NGNGどのようにすればよいでしょうか?
OracleのSQLCA.SQLCODEみたいなヤツが欲しいです。
0333デフォルトの名無しさん
NGNGAとBというテーブルがあって、AにBをLEFT JOINして結合できなかったデータを抽出するというのはいったいどのように書けばいいんでしょうか?
そもそもそんなことってできるんでしょうか…
0334デフォルトの名無しさん
NGNG何がしたいのかよくわからんけど出来ると思うよ。
0335デフォルトの名無しさん
NGNGSelect 質問グループ
From TABLE
Where ユーザID = 'A' And 質問番号 In (1, 3)
Group By 質問グループ
Having Count(Distinct 質問番号) = 2
これでうまくいったけど?
0336デフォルトの名無しさん
NGNGSelect 質問グループ
From TABLE
Where ユーザID = 'A' And 質問番号 In (1, 3)
Group By 質問グループ
Having Count(Distinct 質問番号) = 2
これでうまくいかなかったけど?
0338デフォルトの名無しさん
NGNG今さらですが別解です。
SELECT DISTINCT 質問グループ
FROM TABLE A1
WHERE
A1.ユーザID = 'A'
AND 質問グループ IN
(
SELECT 質問グループ
FROM TABLE A2
WHERE 質問番号 IN (1, 3)
AND A1.ユーザID = A2.ユーザID AND A1.質問グループ = A2.質問グループ
GROUP BY 質問グループ
HAVING COUNT(*) = 2
)
AND 質問グループ NOT IN
(
SELECT 質問グループ
FROM TABLE A3
WHERE 質問番号 NOT IN (1, 3)
AND A1.ユーザID = A3.ユーザID AND A1.質問グループ = A3.質問グループ
GROUP BY 質問グループ
)
0339デフォルトの名無しさん
NGNGselect @@reccont
だったと思った?
@@なんとかってのを調べてみて
0340327
NGNG寝ぼけ頭で書いてたのがまずかったか。
>>337
構文ボロクソだったけど意図は伝わったようでよかった。
>>332
@@ROWCOUNT
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_globals_20vo.asp
>>333
select * from a left join b on b.key=a.key where b.key is null
>>335
havingってwhereの後で評価されるんじゃないの?
0342
NGNGをつくったんです。パラーメーターが複数あるのでVariant型の配列に入れてVB側でCommand
文でストアドプロシージャーを呼んでいます。しかし、”textからintには変換できません”
などとエラーが出ます。”smalldateやnvarcharには変換できません”などのエラーも出ます。
パラメーターをint型の項目一つにしたときは、普通に登録できたのですがエラーの理由がわかりません。
何か心当たりのあるかたいますか?
0343デフォルトの名無しさん
NGNGSQLつーよりはVB側の問題だと思うぞ。
で、VB側は何使ってる?
ADOなら
Dim oCmd as New ADODB.Command
with oCmd
.ActiveConnection = (どっかで開いたコネクション)
.commandType = adStoredProc
.commandText = "ストアド名"
.Parameters.Append .CreateParameter(Name:="hoge", Type:=adInteger, Direction:=adParamReturnValue)
.Parameters.Append .CreateParameter(Name:="arg1, Type:=advarchar, Direction:=adParamInput, size:=255, value:=sArg1)
....
.Execute
If .Parameters("hoge") = ... then ....
とかするけど。てきとーに書いたんで間違ってたらスマン。
0344あ
NGNGとりあえずマルチやめろよ。
0345あ
NGNG>342あての間違い。
0346デフォルトの名無しさん
NGNGテーブル1(名前,教科,得点)
鈴木,国語,80
鈴木,数学,90
鈴木,英語,70
田中,国語,70
田中,数学,65
田中,英語,95
・・・
テーブル2(名前,クラス)
鈴木,301
田中,302
・・・
0347デフォルトの名無しさん
NGNG「b.クラス」をSELECTしようとするとエラーがでます。
このようなGROUP化の制限がいまいち理解できないのですが、
対策方法はどのようにすればいいんでしょうか?
SELECT a.名前,b.クラス,Sum(a.得点)
FROM テーブル1 AS a
INNER JOIN テーブル2 AS b
ON a.名前=b.名前
GROUP BY a.名前
ORDER BY Sum(得点)
0348346
NGNG346=347です。
0349346
NGNG意味の無いMax関数を使って回避してみたんですが、
これって余計な不可がかかるんじゃないかと思うんですがどうでしょう?
他によい方法ありませんかねぇ。
SELECT a.名前,Max(b.クラス),Sum(a.得点)
FROM テーブル1 AS a
INNER JOIN テーブル2 AS b
ON a.名前=b.名前
GROUP BY a.名前
ORDER BY Sum(得点)
0350デフォルトの名無しさん
NGNGSELECT a.名前,b.クラス,Sum(a.得点)
FROM テーブル1 AS a
INNER JOIN テーブル2 AS b
ON a.名前=b.名前
GROUP BY a.名前,b.クラス
ORDER BY Sum(得点)
0351346
NGNGなるほど、勉強になります。
ありがとうございました。
0352デフォルトの名無しさん
NGNGINSERT INTO TESTTBL VALUES(0,TO_CHAR(1,'99'));
TEXT列はCHAR(4)です。
ID TEXT
0 1
と入るのですが、TEXTフィールドの「1」の前にスペースが入り
正確には「____1」 (_はスペース)みたいに
右寄せになってしまいます。
これを「1___」としたいのです。
よろしくお願いします。
0353デフォルトの名無しさん
NGNGupdateやdelete,insertが同時に起きても大丈夫なんですか?
0354デフォルトの名無しさん
NGNGLTRIMだべ?
>>353
DBMSと言われるのは排他制御は普通はある
0355352
NGNGありがとうございます。
スペースを省く、という解釈より
左寄せ、
という解釈が頭にたってしまい全く思いつきませんでした。
「そうか!!なるほど!」
といった心境です。
ありがとうございました。
0356デフォルトの名無しさん
NGNG10時20分30秒なら 102030 と値が入っているとします。
これを1時間ごとにまとめたい場合はどうすれば良いでしょうか?
select code, time, sum(goukei) from test.db
group by code, time
だと1秒ごとになります。
これを1時間(60分)ごとにまとめる事は可能ですか?
0357デフォルトの名無しさん
NGNGとりあえずイカサマ的方法。
select code, time/10000, sum(goukei) from test.db
group by code, time/10000
0358デフォルトの名無しさん
NGNGありがとうございます。
でもDelphiのTQueryでは使えないようです。
(デルファイで使うという一文を入れるのを忘れていました、すいません)
0359デフォルトの名無しさん
NGNGそれはきっと使っているDBによるのだと思うでし
(DelphiのTQueryは単にDBに対してクエリを発行するだけかと)
Oracle、SQL-Server、InterBase(Firebird)
といった本格的なものではなく
Access、Paradox
といったデスクトップDBだといろいろ制約があるかも知れないでし
0360357
NGNGselect JIKAN, sum(goukei) from
(select time/10000 AS JIKAN, * from test.db)
group by code, JIKAN
こんなんもダメ?
0361デフォルトの名無しさん
NGNGユーザー定義関数を使えるなどのシステムがあれば
その差も多少埋まると思うのですがどうですかね?
0362356
NGNG>>359
Paradox なので無理なのかも・・
>>360
ダメでした。
2行目のselectで「キーワードの使用が無効です」とエラーになりました(T^T)
0363361
NGNGSQLのユーザー定義関数のことなんでしょうか?
0364デフォルトの名無しさん
NGNGFirebirdならVIEWを使ってできたよ
どうしてもアプリ側のコードでやりたくないのなら
Firebirdへ乗り換えるのも手かと、無料だし→ググれば見つかる
(ただしTTableの代わりに使うのはTIBTableではなくTIBDataSet)
0365356
NGNG情報ありがとうございます。
上司に「コードで組め」と言われてしまったので、
(Paradoxじゃないとダメみたいです)
今回は無理ですが、自作アプリなどで使ってみます。
失礼しました。
0366誘導した人
NGNG>今調べてたんですけど、もしかしてストアドプロシージャっていうのが
>SQLのユーザー定義関数のことなんでしょうか?
違います
0367デフォルトの名無しさん
NGNGSQLは言語。
排他うんぬんはSQLの仕事ではなくDBMSの仕事。
つか、ヘルプ嫁。
0368デフォルトの名無しさん
NGNG説明不足
0369デフォルトの名無しさん
NGNG手取り足取り説明して欲しいのか?
0370デフォルトの名無しさん
NGNG説明してほしいのは>368じゃないだろ。
>367
>353の質問を
「SQL実行時の排他制御はどうなっているんでしょうか?」
と読みかえれないやつは低脳。
0371デフォルトの名無しさん
NGNG0372370
NGNGおまえが>>367かどうかは知らんが>>367は読み替えを一切行っていない。
その証拠に答えが「SQLは言語。」
手取り足取り説明云々の次のステップにつては俺は一切言及していない。
0373370
NGNGつまり>>367は読み替えることを*あえて*せず、*わざと*揚げ足を取り、
>>353にとっては何の助けにもならない回答を*ねらって*した、ということか。
それなら俺がわるかった。>>372を撤回する。
0374デフォルトの名無しさん
NGNG>今調べてたんですけど、もしかしてストアドプロシージャっていうのが
>SQLのユーザー定義関数のことなんでしょうか?
ユーザー定義関数とストアドプロシージャは異なるものだよ。
ユーザー定義関数は、組込み関数と同じ文脈で使用することができる。
SQL Server 2000 のユーザー定義関数はスカラー値だけじゃなく、
テーブルを戻り値とすることもできるので、かなり便利だよ。
それと、SQL-99 で定義された WITH を使うと、
醜いサブクエリの多重ネストを解消できたりするよ。
0375デフォルトの名無しさん
NGNGSQL99ではPSMとしてストアドの標準化にも踏み出したし、これからSQLはベンダ間の移植性が高くなることを期待できる名じゃないかな。
排他制御に関しては、
楽観的ロック
悲観的ロック
時刻印方式
For Update
などの単語をぐぐれ。そうすれば間違いなく見つかる。
0376デフォルトの名無しさん
NGNG�@のデータを出す作業(B=3)
�Aのデータを出す作業(A=1,B=3)
上の2つは上手く抽出できたのですが、
�@と�Aの合算データを出す作業
が難航しています。
SQL = "SELECT * FROM TBL WHERE(((TBL.B)='3' ) AND ((TBL.C)='01') OR ((TBL.A)='1' ) AND ((TBL.A)='3')) AND ((TBL.C)='01')"
0377デフォルトの名無しさん
NGNGSQLのトランザクションの中で足し算処理する価値ってどのくらいあるとお考えか
0378デフォルトの名無しさん
NGNGプログラムの構造上、SQLの合算抽出しか方法が見当たりませんでした。
本来なら�@のデータを�Bのテーブルへ、
�Aのデータを�Bのテーブルへ吐き出せば良いのですが
いろいろな都合上それも難しく…
0379デフォルトの名無しさん
NGNGレコードつらつら出して最後に合計行がほしいってことか?
WITH ROLLUPなんてどうよ?
SQLServerだけど。
0380デフォルトの名無しさん
NGNGAccess2002なんです。
0381379
NGNGselect a,b,kingaku from tbl
union all
select null as a,null as b,max(kingaku) as kingaku from tbl
こんな雰囲気のことやってみ。
0382デフォルトの名無しさん
NGNG解決しました。
ありがとうございます。
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGストアドは使えるみたい(使ったことないけど)
0385デフォルトの名無しさん
NGNG↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
http://www.pink-angel.jp/betu/index.html
0386デフォルトの名無しさん
NGNGでもユーザ層から言ってストアド組む人間少なそうだな。そういうプログラムを組みたくないユーザのためのツールがAccessなんだし
0387デフォルトの名無しさん
NGNGおれオラクルしか使ったことないんで、そういうことできるなら便利だなあ。PL/SQLってそういうことできんよね?
0388デフォルトの名無しさん
NGNG例えばカラムがID(pk)、階層、情報、親ID(fk)で、
自己参照型のテーブルになっています。
オラクルなら簡単にできるのですが、
SQLServerはストアド・tempdbを使わないと無理なのでしょうか?
0389デフォルトの名無しさん
NGNG関係? 結果セット?
SQL Serverからは戻せるけど、それをVBで扱うときってどうする?
0390デフォルトの名無しさん
NGNGそう。関係ってのは結果セットのこと。
>SQL Serverからは戻せるけど、それをVBで扱うときってどうする?
埋め込みのときと同じようにoo4oのダイナセットに格納するとかはダメなの?
0391デフォルトの名無しさん
NGNG烈しく関心あり、LinuxでPostgreSQLやっているんだけど
PostgreSQLでも階層てきなテーブルとか特定のテーブルを
グループ化はできないのでしょうか?
0392デフォルトの名無しさん
NGNG教師マスタ
TeacherID TeacherName
----------------------
1 山田
2 佐藤
…
10 田中
クラスマスタ
ClassID TeacherID
-------------------
1 1
2 3
3 1
4 2
で、各教師の名前と受け持つクラス数を得たいんですが、
SELECT 教師マスタ.TeacherID,TeacherName,Count(クラスマスタ.ClassID) AS ClassCount
FROM 教師マスタ,クラスマスタ
WHERE 教師マスタ.TeacherID = クラスマスタ.TeacherID
GROUP BY 教師マスタ.TeacherID
では「集計関数の一部として指定された式'TeacherName'を含んでいないクエリ式を実行しようとしました」
とエラーが出て、動きませんでした。
GROUP BY にTeacherNameも含めてやると動くのですが、
フィールドが多くなると全部加えるのは大変になってきます。
もっとスマートにしたいんですが…
0393デフォルトの名無しさん
NGNGfrom 教師マスタ as a inner join クラスマスタ as b on
a.TeacherID = b.TeacherID
group by a.TeacherID,a.TeacherName
これで動くはず。試してないのでわからんが。
>フィールドが多くなると全部加えるのは大変になってきます。
>もっとスマートにしたいんですが…
集計関数はそんなもの。がまん汁。
0394デフォルトの名無しさん
NGNG>集計関数はそんなもの。がまん汁。
そうですか…
では、シコシコと頑張ります。
ありがとうございました。
0395デフォルトの名無しさん
NGNGFirst(TeacherName)ってのはどうよ
0396デフォルトの名無しさん
NGNGどぉかなぁ〜
0397デフォルトの名無しさん
NGNG以下のようなフィールドが等しいテーブルがあるとして
tableBが更新用マスタとします。このときtableBをtableA
へ更新してtableCに書き出すにはどうすればよいですか?
ADO使って突合すればできるんですけど、SQLで一発で出来ないかと思いまして。
よろしくご指導下さい。
tableA:
------------------------------
key f1 f2 f3
------------------------------
100 10 20 30
------------------------------
101 12 22 32
------------------------------
102 13 23 33
------------------------------
tablaB:
key f1 f2 f3
------------------------------
100 20 40 60
------------------------------
101 11 21 31
------------------------------
0398デフォルトの名無しさん
NGNG0399397
NGNG>UpdateしてInsertすれ
わたくし、SELECTしか使ったこと無いので今から調べてみます。
0400397
NGNGUPDATE A SET A.* = B.* WHERE A.KEY = B.KEY;
0401デフォルトの名無しさん
NGNGいっこいっこせっとしんといかんのとちがうか
0402397
NGNGえー、そんなー。
それじゃRecordset使ったが早いよねえ。
0403デフォルトの名無しさん
NGNGいやA.* = B.*ではなくA.ID = B.ID,A.NAME = B.NAMEみたいにしるということで
0404397
NGNG0405397
NGNGこれでACCESSで試すと、
「パラメータの入力」ダイアログが表示されて、
「B.f1」と聞いてきます。ダイアログにはテキストボックスがあります。
0406bloom
NGNG0407デフォルトの名無しさん
NGNGやっぱすとあどつかうしかないずら
0408デフォルトの名無しさん
NGNG0409397
NGNGお騒がせしました。
UPDATE A
SET f1 = B.f1, f2 = B.f2, f3 = B.f3
FROM A, B
WHERE (A.key = B.key)
0410デフォルトの名無しさん
NGNG0411名無しさん@そうだ選挙にいこう
NGNGボロを出すからやめとけば?
0412デフォルトの名無しさん
NGNG教えて!じゃないから暇なヤツは頭の体操の
つもりでやってみそ。
漏れの書いたSQLはちょっとくどく
なっちゃったけどね。
インラインビューを使えないDBMSは普通のVIEWを
使用しても可とする。
(当たり前だけどカーソルは不可)
0413デフォルトの名無しさん
NGNG各組織の会議用資料提出状況を調べたい。
<会議>
会議番号(PK)---会議名
1---------------部長会議
2---------------役員会議
<組織>
組織コード(PK)---組織名
A----------------管理部
B----------------営業部
C----------------購買部
<会議資料> (これは資料のヘッダー情報)
会議番号(PK)--組織コード(PK)--提出日付
1-------------A---------------2003/04/05
1-------------B---------------null(nullは作成中)
0414デフォルトの名無しさん
NGNG会議番号--組織コード--提出状況--提出日付
1---------A-----------提出済----2003/04/05
1---------B-----------未提出----null
1---------C-----------未提出----null
2---------A-----------未提出----null
2---------B-----------未提出----null
2---------C-----------未提出----null
0415デフォルトの名無しさん
NGNG<会議>と<組織>をクロスジョインさせてそれをひとつのテーブルと見立てて
それと<会議資料>を外部ジョインさせる。
提出状況に関してはCASE 〜 WHEN 〜(SQLServerの場合)。
未検証だがたぶん出来る。
レベル的には中の中。
>漏れの書いたSQLはちょっとくどく
>なっちゃったけどね。
どーやったらくどくなるの?
0416デフォルトの名無しさん
NGNG>>415
こんなかんじか?
SELECT
会議組織.会議番号,
会議組織.組織コード,
CASE
WHEN 提出日付 IS NULL THEN '未提出'
ELSE '提出済'
END AS 提出状況,
提出日付
FROM
(
SELECT * FROM 会議
CROSS JOIN 組織
)会議組織
LEFT OUTER JOIN 会議資料
ON 会議組織.会議番号 = 会議資料.会議番号 AND 会議組織.組織コード = 会議資料.組織コード
ORDER BY
会議組織.会議番号,
会議組織.組織コード
0417デフォルトの名無しさん
NGNG>SELECT * FROM 会議
>CROSS JOIN 組織
は
SELECT 会議.会議番号, 組織.組織コード FROM 会議
CROSS JOIN 組織
がよい
SELECT 会議.会議番号, 組織.組織コード FROM 会議, 組織
でもよい
0418デフォルトの名無しさん
NGNGないですかねー
0419デフォルトの名無しさん
NGNGちょっとググッてくるから待っとれ
0420418
NGNGユーザー定義関数か何かで対応するしかないですかね。
0421デフォルトの名無しさん
NGNG>SQLのLIKEって正規表現としてはちょっと貧弱すぎませんか?
(;´Д`)
0423デフォルトの名無しさん
NGNG正規表現じゃないだろ。単なるワイルドカード。
0424413
NGNG遅レススマソ。
そう、クロスジョインがこのお題のキー
(でもレベルが中の中で悪かったな)
くどくなったというのは、Sybaseの11.0.5なので
caseがつかえなくてUNIONで提出済結果セットと
未提出結果セットをドッキング
しなければならなかった為。
>>423
Transact SQLではワイルドカード%だけでもない
完璧ではないが、正規表現の一部も使える。
like "[a-A][0-9]"
なんて言うのも使用できる。
0425デフォルトの名無しさん
NGNG>(でもレベルが中の中で悪かったな)
妥当だと思うが...。
> Transact SQLではワイルドカード%だけでもない
PostgresSQL, mSQL 等でもその手の拡張はされている。
>>420 に限らないけど、なんで自分の環境を書かないのか...。
0426デフォルトの名無しさん
NGNGじゃあ、オマエ何かオモシロイ
例題だしてみろよ。
0427デフォルトの名無しさん
NGNGなにこいつ ? 指摘されて、キレてんの ?
0428名無しさん@Emacs
NGNG0432デフォルトの名無しさん
NGNG(プッ
コイツこそ煽られて、
そんな返ししかできない口先だけのやつ。
他人のレベルを評価、指摘できる
レベルなら、早く上級者の問題出してみろよ。
おれは、別に上級者でもないから
レベルの高いのは出せないけどな。
(そもそもなにが高いとか低いとか分からん。)
>>424
せっかく加勢してやったのに。
煽るなよな。
0433デフォルトの名無しさん
NGNGなに煽ってんの。アフォちゃう ?
0434デフォルトの名無しさん
NGNG早く問題出せよ。
どうせ、コイツも評価されるのが
嫌なんだろ。
出せないなら、エラソーに
評価すんな、アフォ。
0435デフォルトの名無しさん
NGNGププッ、またまたでてきたよ。
そんなに悔しかったのか ?
0436デフォルトの名無しさん
NGNG早くも・ん・だ・い
だしておくれ。
0437デフォルトの名無しさん
NGNGなんか必死やねぇ。
出したって、どうせ難癖つけるだけだろ ?
あっ、「そもそもなにが高いとか低いとか分からん。」だったんだよね。ぷぷっ。
0438デフォルトの名無しさん
NGNGそんなことはしましぇん。
出たら考えるよ。
別にさ、こういうことでSQL上達して
パクリだろうと、ユーザに満足してもらえれば
いいと思ってるだけだからさ。
そうだよ、オレは高低は分からないよ。
(だが、少なくともオレが解けなければ、
オレにとってはレベルが高いわな)
質のいちゃもんは他の上級者に任せるよ。
0439デフォルトの名無しさん
NGNG> そんなことはしましぇん。
ホントかよ。
> そんな返ししかできない口先だけのやつ。
と威勢のいいこと言ってたのはどうしたんだ ?
まあ、荒れる元になるから、今日はもう寝るよ。
0440デフォルトの名無しさん
NGNG上級者なら(経験豊富なら今までのヤツで)
サクッと作れるんだろ。
もう寝るから次の機会によろしく。
しかし、最初、落ち着いた返しをしていた
ヤツがこうも乱れるとは、
変なプライドとはホントいやだね。
0441デフォルトの名無しさん
NGNGなんだ、結局出さないのか。
やっぱ、口先だけか...
煽って本当に問題出すのを期待してたのに。
残念だバイバイ。
0442デフォルトの名無しさん
NGNG特にSQLはレベルなんて存在しない。
経験値の大小のみだ。
0443デフォルトの名無しさん
NGNGそんなに悔しかったのか ? それとも、ただの粘着 ?
> しかし、最初、落ち着いた返しをしていた
> ヤツがこうも乱れるとは、
> 変なプライドとはホントいやだね。
ププッ、自分のことですか ?
> 煽って本当に問題出すのを期待してたのに。
まあ、やっぱり煽りだったことが判明したわけだな。
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGなんだ、なんだ、朝っぱらから
起きたとたんチェックしてたのか...
(なんか書いてるとはオモータけど。)
オレは何言われてもいいから早く問題出せよ、
ププや必死ダナとしか書けない上級者さん。
前言撤回して、公正な評価してやるからさ。
0447デフォルトの名無しさん
NGNGできますか?教えてください
0448デフォルトの名無しさん
NGNGできる。レベルは下の上。
0449デフォルトの名無しさん
NGNG(でもレベルが上の下で悪かったな)
0450デフォルトの名無しさん
NGNG単に取得するときに変えるのなら、
select fld1 as hoge, fld2, .fld3 from table1 ....
だけど、テーブルの構造を変えるんだったら、ちょっと難しいのかも。
識者の説明きぼんヌ。dropせずに変えられるんだっけ?
0451デフォルトの名無しさん
NGNGその返しは「下の上」を「上の下」に変えることで
面白さのレベルが「下の中」から「下の下」に下がった。
0452デフォルトの名無しさん
NGNG俺やん
0453デフォルトの名無しさん
NGNG本当にカラム名変えるなら、
alter table (文)をぐぐったり、マニュアル見れ。
だが、マジレスだがカラム名変更
(やスキーマ変更)は既存のシステムなら
多大な影響を与えるから注意しないといけない。
448-449みたいに(前のと同一人物だろ)
口だけくんに下の下と言われてしまうぞ(ワラ
つまらんことカキコする暇があれば早く問題だせよ下の下のモゲラ。
仕事もしろよエセ関西人。
0454デフォルトの名無しさん
NGNGどうしたら上天丼になれますか。
貴様ら教えてください。
0455デフォルトの名無しさん
NGNGモグモグゲンボを見なさい。
0456415
NGNGてゆーか釣りだったんだけどね。
>>424
>(でもレベルが中の中で悪かったな)
悪くないですよ。頭の体操にはなりました。
ところでSybaseってcaseみたいなやつできないの?
昔Anywhereでif 〜 else 〜 でやった記憶あるけど。
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG俺は448-449じゃねーぞ。
で、dropせずにできるわけ? できないわけ? 教えてくんろ。
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGマジで聞いてるんなら、DBMS ぐらい書けよ。
PostgresSQL のマニュアル見る限りでは、SQL92 で
alter TABLE rename column OLD_NAME to NEW_NAME;
とできるらしい。
0461デフォルトの名無しさん
NGNGスマソ。
SQLのスレでの発言だから
てっきり機種依存しない方法があるのかとおもたよ。
0462デフォルトの名無しさん
NGNG言い訳並べる暇があったらまずぐぐりやがれこのハゲ!
おまえが>>448だろうが>>449だろうがそんなこたぁどーだっていいわけよ。
それより>>453の
>本当にカラム名変えるなら、
>alter table (文)をぐぐったり、マニュアル見れ。
は完全に無視か?
いいか?まずぐぐれ。機種依存云々はそのあとじゃ!
お前みたいな奴のかあちゃんは出べそじゃ!
0463デフォルトの名無しさん
NGNG謝る暇あるなら、>>460 の言う通り DBMS を何で書かんのかと...。
0464デフォルトの名無しさん
NGNGた場合のエラー処理をしたく、以下のif文を用いたのですが、処理が中断してしまいま
す。SPの本にも処理をするに至らないエラーもあると記してあったのですが、これが
そうなのでしょうか。
どなたがご存知の方教えてください。
if @@Error <> 0 Goto CatchError
以下の方法で明示的にエラーを流してみましたらうまく処理ができました。
RAISERROR (50001,1,1)
0465デフォルトの名無しさん
NGNGてめぇふざけんなよ。何で答えてんだよ。
>本当にカラム名変えるなら、
>alter table (文)をぐぐったり、マニュアル見れ。
って言われても無視してるんだから放置だろうが。
そういうことしてるからバカが増殖すんじゃねぇか。
甘やかし過ぎるのはやめろ。
0466デフォルトの名無しさん
NGNGおちつけ
0467デフォルトの名無しさん
NGNGあいまい検索もできたりする。
0468424
NGNGちなみに折れは431以降登場してないよ。
(>>424で言ったように昼間はカキコできないし)
>>456(415)
こっちも2ちゃん的に返しただけで、
意味は無いし、こんな風になるとは
思わなんだ。こっちこそゴメソね。
折れの言葉の方がトリガーとなってしまったと思う。
オレの環境のSybaseではASE(Adaptive Server)
の方だから11.9.2以降(だったと思う)なら
case文が使えるけど、それより前の
バージョンは使えません。うちのASEも12にUpする
みたいだけどね。
0469デフォルトの名無しさん
NGNG>DBの型はint のところを文字型で入力し
>た場合のエラー処理をしたく
状況が良く読めないのだけど、
SP実行以前にSP実装時にコンパイルエラー
にならない?
0470デフォルトの名無しさん
NGNG返答ありがとうございます
Updateで説明すると以下の様になります
ここで、Kingaku は int型です
Update Koujihi
Set Kingaku = "nichan"
・
・
if @Error <> Goto catchError
SP実装時とはいったいどの時なのか、よくわからないです。
今手元に資料がないので、明日本で調べて見ます
0471デフォルトの名無しさん
NGNGcreate procedure
実行時のことだけど。
簡単にいうと、コンパイルエラーで
SPを作ることができないということ。
動的SQLでも使ってるの?
0472デフォルトの名無しさん
NGNGあっ実装時とはそのことなんですか、それは大丈夫でした。
SP実行時にエラーがおきます。
エラー内容も今伝えることができればいいのですが、違う場所にしかないです。
エラーのレベルが 16 ということしか思い出せないです
それから環境ですが、SQL Server 2000で作成しています。
0473デフォルトの名無しさん
NGNGごめん、コンパイルエラー起きないみたいだね。
isnumericは使えないかな。
0474デフォルトの名無しさん
NGNG特定のDBMSに依存しない方法があるなら知りたかったんだが。
0475デフォルトの名無しさん
NGNGそしたら、最初からそう書けば良いじゃん
0476デフォルトの名無しさん
NGNG多重人格かよ。
0477474
NGNGDBMSを特定しないことになるんかと思い込んだ訳だわ。
まぁ、漏れの思い込みだったわけだが。
手元のSQL Server7のヘルプ見る限りではそういうのは無かったし、
Oracleは詳しくないけど、そういうのは無かったような気がする。
でもひょっとして漏れの知らないことを知ってる凄い香具師がいるかもしれん。
後学のためにちょっと質問してみよう。
ということなんだが。
0478461
NGNG> OracleやSQL Serverのスレじゃないわけだろ? だったら言わなきゃ
> DBMSを特定しないことになるんかと思い込んだ訳だわ。
俺の、「SQL92 で」と言う言葉は、全く無視したと言うことだな。
0480デフォルトの名無しさん
NGNG>俺の、「SQL92 で」と言う言葉は、全く無視したと言うことだな。
俺が思うにこいつ(>>477)は悪意を持って無視しているわけでなく、
大事な情報に限って見事に取りこぼす単に使えない奴だとおもわれ。
これ以上ひどいとネタ認定でよろしいかと。
さんざん苦しい正当化しといて最後に「釣れた(w」とか言い出しそう。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGSQL鯖(T-SQL)ならSQL文ではなく、
SPに実装されている。
sp_rename "table.old_column_name", "new_column_name"
Oracle、Postgresは上記の通り。
まぁ、ここのスレは基本的にマターリ進行だったから、
広い目でみようや。
0483デフォルトの名無しさん
NGNGのほうがピッタンコ。
>482
OracleとSQL鯖のコマンド比較みたいなの無いですかね?
俺どっちも中途半端にしか使ってないんで、「Oracleではこうだけど
SQL鯖では?」とかを調べるのに時間かかってしまう・・・
0484デフォルトの名無しさん
NGNG技術評論社 「SQLポケットリファレンス」
ISBN4-7741-0907-X
\1980+税
細かいことは書いとらんが、参考になると思う。
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGメンバID 名前
-------------------
1 山田
2 佐藤
3 山下
4 上田
tbl組
組ID メンバID
-----------------
1 1
2 2
2 1
3 1
3 3
4 3
といった感じに2つのテーブルがあります。
各メンバーは2つ以上のグループに属する場合があります。
「1,2,3いずれかのグループに属するメンバー」を得るのは
select tblmember.名前 from tblmember,tbl組
where tblmember.メンバID=tbl組.メンバID and 組ID in (1,2,3)
でいけたのですが、「1,2,3全てに属するメンバー」は
どうやれば得ることができるでしょうか。
0487486
NGNG0488デフォルトの名無しさん
NGNGtbl組マスタ
組ID(PK)
1
2
3
なるテーブルはもちろん存在するよね。
(なければインラインビューで対応する。)
また、tbl組は組ID,メンバIDでもちろんユニークだよね。
(でなければこれもインラインビューを作る。)
SELECT DISTINCT Tc.メンバID,Tm.名前
FROM tbl組 AS Tc, tblMember Tm
WHERE Tc.メンバID in (
SELECT メンバID
FROM tbl組
GROUP BY メンバID
HAVING count(*) = (SELECT count(*) FROM tbl組マスタ)
)
AND
Tc.メンバID = Tm.メンバID;
サブクエリ使えるDBMSなら依存はしないはず。
0489山崎渉
NGNG0490デフォルトの名無しさん
NGNG(固定行数とは、お買い上げ明細が 5行しかなくても ページを空罫線で 30行分埋めるとかね。)
レポートツールでループ処理を書くのがいやなので、
データベースから取得する結果セット自体に空データをつめて
30行とか 60行、90行…にしたいんだけど、そんなことってできる?
0491デフォルトの名無しさん
NGNGお買い上げ明細テーブルのレイアウトは?
そのテーブルのキーと行の結びつけが出来れば
ワークテーブル作って出来ないことは無い(かも)。
でもループ処理の方があんたにとっては簡単。
0492デフォルトの名無しさん
NGNGやったことあるので可能。
困っています。
使用されていない最小のIDを得たいのですが、
AccessのSQLがよくわかりません。
これをAccessで同じ動きにさせるには
どうしたらいいでしょうか?
SELECT MIN(ID) FROM
(
SELECT ID+1 ID FROM TABLE_NAME
MINUS
SELECT ID+0 ID FROM TABLE_NAME
)
よろしくお願いいたします。。
0493あぼーん
NGNGhttp://www.japan.pinkserver.com/yamazaki/saitama/hankaku06.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku05.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku03.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku04.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku01.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku02.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku09.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku10.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku07.html
http://www.japan.pinkserver.com/yamazaki/saitama/hankaku08.html
0494デフォルトの名無しさん
NGNGoracleのMINUSに変わる処理を作れば可能
おまえも意地悪な答えしてるから
これ以上は書かないYO
0495デフォルトの名無しさん
NGNG30行の専用紙2ページにわたって45行の明細を出力するケースもあるよね。
となるとSQLだけでグループ内連番の処理をして+αてことか。
やってできなくもないけど笑っちゃうくらいトリッキーなコードになるよ。
0496デフォルトの名無しさん
NGNG明細の項目がどのくらい、あるか解らないけど
30明細分を1レコードにするって手も無くはない
まぁループ処理でやるのが
バグや仕様変更に柔軟に対応できるとは思うっすけど
0497490
NGNG固定行数表示は、ワークテーブルを使って対応することにしました。
ストアドでループを書いて、ワークテーブルに不足分の空レコードを
挿入していくようにしたら、できました。
0498山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0499デフォルトの名無しさん
NGNG(1)ASPサーバーとSQLサーバーの2台を使用
(2)ASPサーバーからの処理でSQLサーバーのDTSを実行する
(3)そのDTSのパッケージログをSQLサーバーの配下に書き出す。
ということなのですが、どうしてもASPサーバーからの処理実行に関してだけパッケージログが書き出されません。
SQLサーバーにてDTSのパッケージの実行すると正常にログが書き出されるのですが。。。
ご存知の方、いらっしゃいましたらお教え願えますでしょうか?
よろしくお願いいたします。
0500492
NGNGそれはわかってます。
キーワードだけでも教えてもらえないでしょうか?
イジワルというより、もう既に答えがでてたので
>無い(かも)。
経験上、「できる」とそえさせてもらっただけなのです。
0501デフォルトの名無しさん
NGNG無理にSQLで書かないでAccessVBA使えば?
0502492
NGNGそれを言われてしまうと元も子もないのですが、
そうなると、とりあえずSELECTでIDをとってきて、
ループして空き番を探すという処理になってしまい、
クライアント側に負担がかかると思うので、
できれば避けたい、と思い、
できればSQLで書きたいと思って悩んでいます。。
0503デフォルトの名無しさん
NGNGJETを使ってるわけじゃなくて別のServerに繋ぎに行ってるの?
だったらパススルークエリにすればServer側の機能を好きに使えるよ。
繋ぎに行った先もMDBじゃどうしようもないが。
0504492
NGNG別PCへつなぎにいってます。
別PCのMDBへ、ですが(涙
なんとかなりませんでしょうか。。
0505494
NGNGはいな、これで思い通りになってるっしょ?
ようは、抜けのある連番の最小値を求めたいと。
ちがってらすまそね。
キーワードはNOT INかNOT EXSIST
SELECT MIN(ID)
FROM
(SELECT ID_NUM+1 AS ID FROM TAB_1
where ID_NUM+1 NOT IN (SELECT ID_NUM FROM TAB_1)
)
パフォーマンス悪くても許して頂戴。
Access2002で検証済み
0506デフォルトの名無しさん
NGNGDTSのことはあまり良く知らないんだけど、
ASPがSQL側にアクセスするときのアカウントは大丈夫?
書き込み権限を持ってないとかはない?
0507デフォルトの名無しさん
NGNGさせようとする輩が多いのがワカラン
0508デフォルトの名無しさん
NGNG499です。
お返事ありがとうございます。
もう少し詳しくご説明しますと、
・SQLは、2000です。
・DTSの処理は正常に実行され戻り値も得ているが、DTSのパッケージログだけが書き出せない。
・ログを書き出すフォルダには、書込み権限を一応つけています。
こんな状態が1週間以上続いています。
どうか宜しくお願い致します。
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGはずしてるかも知れんけど呼び出し側のASPサーバ側にログはかれてない?
DTS内部で持たせたローカルのパスは呼び出し時のノードのローカルのパスになったような。
0511デフォルトの名無しさん
NGNGどうすればよかとにあんですか?
0512動画直リン
NGNG0513デフォルトの名無しさん
NGNGその辺は方言あるからまずDBMS名書いて。
0514デフォルトの名無しさん
NGNGMS-Accessです。
0515499
NGNG仰る通り呼び出し元へログが書き出されていました。
本当にありがとうございました。
>506
お騒がせをいたしまして申し訳ございませんでした。
本当にありがとうございました。
0516勉強中
NGNG昨日、SQL serverをインストールしました。認証はwindows認証を使用、にしました。
で、ASPでプログラムの練習をするため、ODBCを登録しました。認証は、
windowsNTの認証メカニズムを使う、にしました。
一応、ODBCの連絡はうまくいっているようです。
そこで、ASPで、
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "・・・", "ID", "Password"
で「ログインできませんでした。」のエラーが出ました。
ID,Password は、このマシンのログイン時のもの「Administrator」とパスワードを
入れました。
SQL serverの設定が悪いのかと思って、Enterprize Managerで
サーバーを右クリックして登録プロパティの変更で、
SQL Server認証を使用にし、「Administrator」とパスワードにしたのですが、
SQL Server自体にログインできなくなりました。
これらの認証には、全部、「Administrator」と同じパスワードを使用していますが、
何が悪いのか混乱しています。
どうぞよろしくおねがいします。
0517山太郎
NGNGSQL鯖はWindowsドメイン、コンピュータ、SQL鯖、データベースという
4段階の認証があって、組み合わせが色々あって面倒です。
ものすごく簡単に言うと、Win認証はWindowsのユーザ名で。
SQL鯖認証は、指定したユーザ名で認証を行うって事です。
とりあえずスタートメニュ-→SQL鯖→BooksOnlineの、「認証モード」って
いうキーワードで出てきた項を見て下され。
0518勉強中
NGNGさっそく、見てみます。
ヘルプで勉強、これ基本でした。忘れてました。反省。
0519adduser
NGNG当方MSDE2000です。
下記のスクリプトでユーザを追加しました。
use MSCatalog
go
sp_addlogin 'WWWUser', 'password'
go
sp_defaultdb 'WWWUser', 'MSCatalog'
go
sp_adduser 'WWWUser'
GRANT SELECT, UPDATE, INSERT, DELETE ON Products TO WWWUser
go
quit
でうまくいったようなのでこのユーザでログインしてみると
>osql -UWWWUser -Ppassword
ユーザー 'WWWUser' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連
付けられていません。
何か勘違いをしているのでしょうか?ポイントを教えてください。
0520564
NGNG(その行があればUPDATE、なければINSERT)ってあるじゃないですか。
俺、使ってるDBがオラクル8なのでMERGEを利用できなく、
まんまストアドで「まずSELECTで探して、行があればUPDATEなければINSERT」と
書いてやっています。周りに詳しい人いなくていつも疑問に思っていたのですが
こういう処理って一般的には、どう書くものなんでしょう?
もっと効率よくやる方法ってあるのでしょうか?
0521デフォルトの名無しさん
NGNGDELETE FROM TABLE;
0522adduser
NGNG既定インスタンスの認証方法がWindows認証モードでした。
レジストリHKLM\Software\Microsoft\MSSqlserver\MSSqlServer\LoginMode
を1→2に変更して混合モードに変えたら以前のユーザのままログインできました。
ゴミ質問流しました。すいません。
0523デフォルトの名無しさん
NGNGdelete from dst where key in (select key+0 from src);
insert into dst select * from src;
0524デフォルトの名無しさん
NGNGSQLServerで、
where 5 between 10 and 1
とすると引っかかりませんが(必ず小 and 大でなければいけない)
Accessとかだと大→小でも引っかかりますが、
どっちが規格に沿った動作なんでしょう?
後、Oracleではどっちの動作なんでしょう?
※そもそもBetweenなんぞ使うな・・・ってのは言わんでください
0525デフォルトの名無しさん
NGNGOracleでもヒットしない。規格は知らないけど。
0526デフォルトの名無しさん
NGNG> ※そもそもBetweenなんぞ使うな・・・ってのは言わんでください
そんなことを言う人はいないでしょう。
ただし、最近は、Betweenでも、>= 条件 AND <= 条件でもパフォーマンスに
大差ないらしいです。(何かの雑誌で読んだ)
# DBエンジンの作り次第ですが・・・。
0527デフォルトの名無しさん
NGNGPostgreSQL のマニュアルには...
| 比較演算子に加えて特殊な BETWEEN 構文が使えます。
| a BETWEEN x AND y
| は次と同等です。
| a >= x AND a <= y
と書いてあったりするから、between 小 and 大 と使うのが無難かと。
そもそも SQL の規格の正式な奴ってどっかにあるの ?
>>526
同じく PostgreSQL のマニュアルには...
| 内部的に最初のの形式を 2 番目の形式に書き換えるのに必要となる CPU サイクル以外それぞれの形式には違いはありません。
と書いてあったりする。他の DBMS は知らんが。
0528デフォルトの名無しさん
NGNG> そもそも SQL の規格の正式な奴ってどっかにあるの ?
SQL92なら、下記。(英文だが)
http://www.dementia.org/~shadow/sql.html
日本語のドキュメントは知らない。
0529デフォルトの名無しさん
NGNGその中の "SQL92 specification draft" をみると...
6) "X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z".
つーことだから、Access の動作は (MS がよくやる、MS が勝手に便利だと考えている) おせっかい機能のようだな。
0530デフォルトの名無しさん
NGNG「大差ない」ではなくて「変わらない」が正しいと思う。
なぜなら、オプティマイザが内部的にbetweenを >=条件1 AND 条件>= に置き換えて実行してくれるからら。
実行計画を採ってみれば、一目瞭然。
ただし、例外があるのもこれまた当然の話だが。。。。
0531デフォルトの名無しさん
NGNGキーとなる値だけ変えてレコードの複製を行いたいのですが、1レコード分全て
取得して新たにINSERTする以外に方法はあるでしょうか?
0532__
NGNG( ・∀・)/< こんなの発見したっち♪
http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku07.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0533デフォルトの名無しさん
NGNG質問の意図がワカランが
INSERT INTO Table SELECT ... FROM Table WHERE ...
っで 出来ないのか?
0534デフォルトの名無しさん
NGNGで、「*」じゃなくて特定のカラムだけ取得しないようにってできるの?
20個(?)のカラムがあるレコードで1つだけ取得しなくてもいいカラムが
あるんだけど「*」の代わりに19個カラム列挙するのは厳しいでつ…
0535デフォルトの名無しさん
NGNG列挙しろアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホアホ
0536デフォルトの名無しさん
NGNGというか列挙してた漏れが頭悪いのかと思ってたけど、それが普通のやり方ってこと?
0537scott@うそ
NGNGどうしても一部だけを別扱いしたい時は
仮想表をCREATEして使いましょう
でも作りすぎには要注意。
0538デフォルトの名無しさん
NGNG0539534
NGNGそうなのね…。
実際は20個よりも多いのでちょっと大変だけどやるしかないかぁ。アリガ�d
>>538
その1カラムがvarchar2(2000)で大きいので一緒にすると結構負荷が来るんでつ。
今までは面倒だったので一緒にしてたけど、改善しる!と言われてしまったので。。。
0541デフォルトの名無しさん
NGNGがんばってください。
0542デフォルトの名無しさん
NGNG重複したデータを排除して取得するもので
DISTINCT というのがありますが、その逆の
重複したデータだけを取得するという命令はないでしょうか?
今やっていることでは
テーブルAのデータとテーブルBのデータを比較して
AとBで重複していないデータだけを取り出したいのですが
どうすればいいのでしょうか・・・
0543デフォルトの名無しさん
NGNG> AとBで重複していないデータだけを取り出したいのですが
どっちだ
0544デフォルトの名無しさん
NGNGすんません、重複してないデータのみ取得したいほうでした
日本語が馬鹿ですんません・・・
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG列挙すべきだな
"SELECT *"は、名前解決に時間がかかるとかで
話題になってたなw
たいした問題じゃ無いと思うけど
頻繁にプログラムやSQL*Plus等で参照をするのであれば
VIEWにするのも手ではある
0548デフォルトの名無しさん
NGNG下のような記述以外に適切な方法はあるでしょうか?
update A inner join B on A.ID = B.ID set A.F1 = B.F1
insert into A(ID,F1) select B.ID,B.F1
from A right join B on A.ID = B.ID where A.ID is null
0549デフォルトの名無しさん
NGNG>>520
>>523
0551548
NGNG失礼しました。同じような質問があったのですね検索でヒットしなかったので見落としました。
こちらもoracle8でmergeが利用できませんから、やはり2回のSQLで実現するしか無いのかな?
>>523 の方法は、テーブルAの一部のフィールドの値を残す必要があるので使えません。
全てではなく特定のフィールドのみ更新が必要となります。説明不足ですいませんでした。
0552549
NGNGとなると>>548の線しかないや。個人的にはいつも、
insert into a (id) select id from b where not exists (select * from a where a.id = b.id);
update a set (f1,f2) = (select f1,f2 from b where b.id = a.id);
て書いてる。insert先のがコードの量減るんで。
しかしOracleでupdate〜inner joinってできたのか。知らなかった。
0553デフォルトの名無しさん
NGNGデータ取得の性能が上がるのでどうして上がるか調べておけと言われたのですが、
古いSQLの本しかなくてArray fetch文の解説が載ってません。
Array fetch文の簡単な解説と、なぜfetch文に比べて
データ取得の性能が上がるか教えてください。
0554デフォルトの名無しさん
NGNGSQL ServerやOracleはとても手が出ねーし・・・
0555デフォルトの名無しさん
NGNG会社でまともに使うなら、サポートの手厚い SQL Server/Oracle とだし、個人的に使う分には PostgreSQL とか MySQL とかのフリーのやつでいいんじゃない ?
0556デフォルトの名無しさん
NGNG指定した行数分一気に先読みするから。
0557デフォルトの名無しさん
NGNGSELECTと同時にロックをかける・・・Oracleでいう、FOR UPDATEみたいな
動作をさせたい場合はどうすれば良いのでしょうか?
ヘルプには、SELECT文に使うヒント句でロック方法を指定するような記述が
あるのですが・・・
どのヒントを指定しても別の接続からSELECTできてしまいます。
(UPDATE等は出来ないので、ロックはされているようです)
0558デフォルトの名無しさん
NGNGFROM table_name (UPDLOCK) かな?
0559デフォルトの名無しさん
NGNGFROM table_name (XLOCK)
この辺見るといいかも
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/acdata/ac_8_con_7a_7xde.asp
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/acdata/ac_8_con_7a_8um1.asp
0560557
NGNGXLOCKで逝けました!!
>557で「どのヒントを指定しても」って書いたのにXLOCKを試していませんでした。
何故なら、印刷したヘルプのXLOCK以下が切れていた為(鬱死
今度はもっとヘルプをよく読みます。
ありがとうございました。
0561デフォルトの名無しさん
NGNGどうすればいいのかまったくわかりません。
ご伝授おねがいします
0562デフォルトの名無しさん
NGNG>>3見ろバカチンがー
0563デフォルトの名無しさん
NGNG列は date=日付 と int=ある数値データ の2つです。
そこで現在から遡って100件分のある数値データをとると言ったような場合、
どのようなSQLを書けばよいでしょうか。
ただし、 2003/5/5 6:00:00, 2003/5/5 6:30:00, 2003/5/5 7:30:00といったように
本来あるべきはずのデータがかけている場合があります。
そのような時はある数値データに0を入れたいのです。(これはプログラム側でもよい)
やはり、時刻を自分で30分ずつマイナスして100回SQLを流すしかないのでしょうか?
使用DBはMysqlです。長文失礼です。
0564563
NGNG× そのような時はある数値データを0としてとりたいのです。
すいません。
0565デフォルトの名無しさん
NGNGFROM テーブル
WHERE 日付 <= 現在の日付 AND 日付 < 現在の日付-(30分*100)
ORDER BY 日付
歯抜けデータはデータ取得後に判断する方が楽かと。
SQLで歯抜けデータを0で埋めるには、
30分おきのデータが入った一時テーブルでも用意してやれば
元テーブルと連結して出来ないことは無い。
0566565
NGNG○)日付 > 現在の日付-(30分*100)
0567563
NGNG現在が、
SELECT 数値 FROM テーブル
WHERE 日付 < sysdate()
ORDER BY 日付 DESC LIMIT 0,100
これなんですね。
それだと必ずしも100件とれないような…
> 歯抜けデータはデータ取得後に判断する方が楽かと。
結局100回ループさせて抜けてないか見るわけですよね。
下3行は残念ながらやり方わかりません。調べてみます。
0568デフォルトの名無しさん
NGNG>それだと必ずしも100件とれないような…
「それ」って自分のSQLの話でしょ?>>565の何が不満なの?
0569デフォルトの名無しさん
NGNGでなければ、30分区切りのカレンダーテーブルを予めまとめて作成して、そいつで外部結合する。
JDBCだったらnullをgetIntしたら0だからいけるでしょ。
SELECT * FROM
テーブル RIGHT OUTER JOIN カレンダー ON テーブル.日付 = カレンダー.日付
WHERE カレンダー.日付 BETWEEN 開始日 AND 終了日
開始日と終了日はプログラムで出しやがれ。
0570デフォルトの名無しさん
NGNGようは、数値のあるデータを100件取りたいそうな
SQL鯖でいう、TOP 100や
ORACLEでいう、rownum
があれば良いんだな
0571デフォルトの名無しさん
NGNG>本来あるべきはずのデータがかけている場合があります。
>そのような時はある数値データに0を入れたいのです
ってことは結局、現在から30*100分前のデータまでを取るわけだから、
>WHERE 現在の日付-(30分*100) < 日付 AND 日付 <= 現在の日付
じゃないのかい?
(俺が質問者みたいになってキター)
0572563
NGNGそうなんですよ。
でもMysqlにはLIMITっていうのがあって、その件は解決済みです。
>>571
それだと 現在の日付-(30分*100) < 日付 AND 日付 <= 現在の日付 の中に
データが2件しかなかった場合、100件とれませんよね。
0573動画直リン
NGNG0574デフォルトの名無しさん
NGNGだからその2件以外の98件は全部0なんだろ?
0575563
NGNGそうですけど、どの時刻のデータがあってどの時刻のデータがないのかは
わかりませんよね。つまりどちらにせよ時刻を30分マイナスさせながら
100回ループ(プログラム側)でチェックするしかないのかな?
0576デフォルトの名無しさん
NGNG>時刻を30分マイナスさせながら
>100回ループ(プログラム側)でチェックするしかないのかな?
何でこれが手間やねん! ┐('_`)┌ ヤレヤレ
0577デフォルトの名無しさん
NGNGんっ?
数値のあるのを100件じゃないのか?
歯抜けが2件あったら、
トータル102件分って意味合いと解釈したんだけど?
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG>>563を嫁
0580デフォルトの名無しさん
NGNG100回SQL発行するんじゃなくて足りない分だけプログラム側で付け足せ
0581デフォルトの名無しさん
NGNG何で組もうと思ってるか知らないけど、SQLの返りをいれた配列が
30分刻みで、かつ無いデータが0になってるというのは不可能。
だから、100件分に相当する時刻の範囲を取り出して、それを使うときに
無い時刻には0を返すか、100件分の時刻が入った配列にコピーするかだね。
0582563
NGNGJAVA+Mysqlなんですが、やっぱりSQL単体では不可能ですか。
とすると、JAVA側で時刻を20分ずつマイナスした日付と、DBから取り出した日付を
比べて、なければ配列に0を入れるというようにするしかないですね。
0583デフォルトの名無しさん
NGNG>何で組もうと思ってるか知らないけど、SQLの返りをいれた配列が
>30分刻みで、かつ無いデータが0になってるというのは不可能。
だから一時テーブル使ったらできるんだって。┐('_`)┌ ヤレヤレ
>>582
>やっぱりSQL単体では不可能ですか。
だから一時テーブル使ったらできるんだって。┐('_`)┌ ヤレヤレ
>時刻を20分ずつ〜
しばらく見ないと思ったら仕様変更でつか。大変ですね〜。
0584563
NGNG答え載ってるじゃん!と思ってこの方法でやってみたのですが、
レスポンスが恐ろしく悪いです。
SQL100回流すよりも遅いのです…
>>583
一時テーブルの使い方教えてもらえますか?
0585デフォルトの名無しさん
NGNG>答え載ってるじゃん!と思ってこの方法でやってみたのですが、
>レスポンスが恐ろしく悪いです。
ありえねぇ〜。SQL晒してみ。
>SQL100回流すよりも遅いのです…
じゃあSQL100個UNION ALLでつないだら?(わら
>一時テーブルの使い方教えてもらえますか?
作り方:CREATE TABLE
使い方:普通のテーブルと同じ
処理後:DROP TABLE忘れずに
>>569参考にしたときのカレンダーテーブルは普通のテーブルか?
まあいいけど。
0586デフォルトの名無しさん
NGNG縦展開では無理
横展開(項目を100個)すりゃ出来ないこともない
しかし縦展開でフェッチ100回する方が、
コーディング量少なくすむし、かつ無難
0587デフォルトの名無しさん
NGNGオラクルのSQLでパフォーマンスを上げるために
副問い合わせと集合演算を多用していますが、
後からのメンテナンスが大変です。解析に時間がかかってしまいます。
やっぱりこういうモンなのですか?
例:
Select name1, name2 From table1 Where key1 > 55 And name1 <> 'ばか'
↓
Select name1, name2 From table1 Where (key1,key2) In
(Select key1, key2 From table1 Where key1 > 55) Minus
(Select Key1,Key2 From table1 Where key1 > 55 And name1 = 'ばか')
0588デフォルトの名無しさん
NGNG一時テーブルじゃなくて一時的にテーブル作ってるやん(ゲラゲラ
テーブル名の先頭に#をつけると一時テーブルが作られてセッションが切られると
自動解放されます。複数で同じ一時テーブル作ってもだぶらないよん。drop不要。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGやっぱ、そーいうもんじゃね。
どーしてもというなら、仕様書かソースのコメントに
それらしき内容を言葉で書いておくとかすれば?
俺は、自分ですら怪しくなりそうなやつには
そうしてるよ。一般的かどうかは知らないけどね。
0591デフォルトの名無しさん
NGNGありがとうございます。
ところで佐藤さんじゃないですよね?
0592デフォルトの名無しさん
NGNGはぁ〜? 一時的テーブル? どっちでもいいや
っでカレンダー情報作るのかいな?
意味ねー(コード量とSQL発行回数的に)
だまって最初に配列作って、ループでフェッチして
該当する時間にセットしとけ
0593デフォルトの名無しさん
NGNG>はぁ〜? 一時的テーブル? どっちでもいいや
ハゲワラ
ダサ過ぎ。
0594563
NGNGこんな感じです。
テーブル1(列: 数値(int)、日付(datetime))
テーブル2(列: 日付(datetime))30分刻みの時刻入力済み
SELECT 数値 FROM テーブル1
RIGHT OUTER JOIN テーブル2 ON テーブル1.日付 = テーブル2.日付
WHERE テーブル2.日付 <= ? ORDER BY テーブル2.日付 DESC LIMIT 0,73
?には任意の時刻を入れています。
ちなみに100回ループバージョンはこうです。
SELECT 数値 FROM テーブル1
WHERE 日付 = DATE_SUB(?, INTERVAL "?:0" DAY_SECOND)
1個目の?には任意の時刻を、2個目には30ずつ値を増やして回しています。
0595563
NGNG× WHERE テーブル2.日付 <= ? ORDER BY テーブル2.日付 DESC LIMIT 0,73
○ WHERE テーブル2.日付 <= ? ORDER BY テーブル2.日付 DESC LIMIT 0,100
73って何で書いてあるんだろ…
0596デフォルトの名無しさん
NGNG互換性って知ってる?
一時テーブルは環境依存なのよ。
0597デフォルトの名無しさん
NGNG0598585
NGNGテーブル2の条件は
日付 <= 現在の日付 AND 日付 > 現在の日付-(30分*100)
LIMITいらんでしょ。
なんでSELECT句に日付がないの?
後の処理しにくくない?
もともとテーブル2にはほしい日付の範囲の100データぶち込んでおくことを考えていたんだが。
そうすれば
日付 <= 現在の日付 AND 日付 > 現在の日付-(30分*100)
は不要。
0599563
NGNGLIMIT使うより 日付 <= 現在の日付 AND 日付 > 現在の日付-(30分*100) 使ったほうが速いんですかね
> なんでSELECT句に日付がないの?
これグラフ化のための数値取りなんで必要ないんです。
> テーブル2にはほしい日付の範囲の100データぶち込んでおく
とするとこのページを更新するたびに100データぶちこんでは消してってなりますよね。
遅くなりませんか。時間軸が移動できるグラフなので結構更新されるんですよ。
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG日付データはvarcharですか?だったら
substring(日付,5,6) = '05'
でいけないかな。5,6のところは数え方違うかも。
0602598
NGNG> LIMIT使うより 日付 <= 現在の日付 AND 日付 > 現在の日付-(30分*100) 使ったほうが速いんですかね
わからん。試してみたら?
> > なんでSELECT句に日付がないの?
> これグラフ化のための数値取りなんで必要ないんです。
じゃあおっけ。
この場合絶対に30分おきであることを保障しないといけないわけね。
> > テーブル2にはほしい日付の範囲の100データぶち込んでおく
> とするとこのページを更新するたびに100データぶちこんでは消してってなりますよね。
> 遅くなりませんか。時間軸
いまテーブル2に何データあるの?
30分おきだから1日48データで2日分とちょっといるわけね。
3日おきにテーブル2を更新する仕掛けを作るのはどう?
常に6日分くらい用意しておく。
3日おきの更新は現在日付+3日分補充して古い3日分のデータを消すとか。
それかある日付を基準にそこから100データ分TABLE2に用意して
SELECT時は現在日付と各データの差を取得するようにすると
常にTABLE2には100データだけあればいいことになる。
0603デフォルトの名無しさん
NGNGいろいろ有るわな
where 日付 >= '20030501' and 日付 < '20030601' でもいいし
CONVERTしてMONTHで見るもよろしいし
↑正確なパラメータ覚えて無いのでこれで勘弁
0604デフォルトの名無しさん
NGNG> 一時テーブルは環境依存なのよ。
create table temporary は、SQL92 で規定されてるよ。
0605デフォルトの名無しさん
NGNGこれってさ、「連番の歯抜けにインサートしたい」
ってのと、類似してると思うのね
論争するだけ無駄
0606デフォルトの名無しさん
NGNGサブクエリー使ってるくせに良く言うよ(俺は使ってないが)
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNGずれますた
0609kyou
NGNGある本に
>mysqladmin CREATE [データーベース名]
>mysql [データーベース名] < d:\database.txt
でdドライブにあるテキストファイルの中味をデーターベースに入れられる、とあったのですが、実行すると
「"\d"というコマンドはありません」
というメッセージが出てきてしまいます。
どうか、対策を教えてください。
0610デフォルトの名無しさん
NGNG普通に出来るんですが…
0611デフォルトの名無しさん
NGNG俺には意味わかるよ。
>>605
残念ながら類似していません。
0612デフォルトの名無しさん
NGNGインサートとセレクトって表現だけで
歯抜けの連番には、0にしたいってのなら
全く一緒っす
0613kyou
NGNG>普通に出来るんですが…
何故か私はできないんです。MYSQLの故障かも・・・。
0614デフォルトの名無しさん
NGNGdatabase.txtの中身を晒して。
0615デフォルトの名無しさん
NGNGそれは判るんだけど、何が無駄なの?
どうやれば出来るか(速いか)を聞いてるんでしょ?
0616デフォルトの名無しさん
NGNG設計次第でどうにでもなるから
例えばだけど、連番に拘るのなら論理削除しといて
抜けないようにすればいい とかね
こればかりは、いろんな状況(方法)があるから
何とも言えないんだけど
SQLで連番に拘ること自体が、自分にとっては不可思議だよ
0617デフォルトの名無しさん
NGNG0618611
NGNGあなたの言う連番ですが、そのキーには意味はありません。
一意を保つためだけのものです。
でも今回は時間であり、〜分毎のデータがほしいわけで
そのキーにははっきり意味があります。
なので議論の仕方は全然違います。
>設計次第でどうにでもなるから
>例えばだけど、連番に拘るのなら論理削除しといて
>抜けないようにすればいい とかね
論理削除分のレコードの要領や、件数が多いことのパフォーマンスが
気にならないならそれで良し。
>SQLで連番に拘ること自体が、自分にとっては不可思議だよ
この場合は明らかに30分おきのデータに縛られる。
データが無いことの意味の違いは明白。
「無いものは無い」なのか「無いときは0とみなす」なのか。
0619デフォルトの名無しさん
NGNG>論理削除分のレコードの要領や、件数が多いことのパフォーマンスが
>気にならないならそれで良し。
無理矢理なSQLで、空き番を見つけるなら
論理削除の最初を見つける方が速いと思うが?
0 2003/05/19 20:30:00
1 2003/05/19 20:00:00
2 2003/05/19 19:30:00
3 2003/05/19 19:00:00
4 2003/05/19 18:30:00
連番で代用できるやん
基本時間−(連番*30分)で
0620デフォルトの名無しさん
NGNGワークテーブルを必要としたり
無理矢理のSQLを実行するのは
本来あるべき姿ではない
それが連番関連の処理がおおい
って事が言いたいだけなんだが?
んで最後に、この例で言うと
(空き番=空き時間)に類似してないかい?
0621611
NGNG>論理削除の最初を見つける方が速いと思うが?
論理削除ってこの場合結局レコード0のデータも作成しておくってことですよね。
これができるなら質問者の問題はこれで解決です。
>連番で代用できるやん
>基本時間−(連番*30分)で
なんかよくわかりません。根本的解決になってないんですが。
0 2003/05/19 20:30:00
1 2003/05/19 20:00:00
3 2003/05/19 19:00:00
4 2003/05/19 18:30:00
だったらどうするの?
0622611
NGNG>ワークテーブルを必要としたり
>無理矢理のSQLを実行するのは
>本来あるべき姿ではない
俺も今回の場合は存在するデータだけ取ってきてクライアント側で
無い時間に対してはデータ=0ってしてやるほうがいいように思う。
でも日付カラム取りたくないとか言ってるし。
データ取得後の処理がいまいち見えないからなんともいえない。
でもSQL側で苦労しておくとデータ取得後の処理が簡単になったりする、というのも事実でしょ。
そういうメリットを放棄してまで「本来あるべき姿」を求めるのはどうかと。
ちなみにあんたのいう「本来あるべき姿」ってどんなの?
>それが連番関連の処理がおおい
>って事が言いたいだけなんだが?
「無理矢理のSQL」と「連番関連」はさすがに結びつかないだろう。
おれは連番関連以外であんたの言うところの無理矢理のSQLをよく書くよ。
>んで最後に、この例で言うと
>(空き番=空き時間)に類似してないかい?
似てるけど違う。
俺にとっては似てすらいない。
0623563
NGNG>>622
これはグラフ化のための数値(Y軸)取りなんですが、時刻の座標は固定(X軸)で
数も100件と決まっているので日付をとる必要がないと考えました。
(歯抜けデータがないことが前提)
ですが、歯抜けデータが出来てしまうと、時刻の座標は決まっているので、
>>567のようなSQLだと、時刻と数値が対にならなくなってしまうので、何かよいSQLが
ないかなと思い、質問した次第であります。
現在は100回SQLを流す形を採っています。ここで考えて貰ったSQLで一番レスポンスが
よいもので…でも遅いですが…
0624デフォルトの名無しさん
NGNG>論理削除ってこの場合結局レコード0のデータも作成しておくってことですよね。
>これができるなら質問者の問題はこれで解決です。
そう言った覚えは無いが
ワークテーブルを作成する延長で、これも出来るはずですなぁ
>0 2003/05/19 20:30:00
>1 2003/05/19 20:00:00
>3 2003/05/19 19:00:00
>4 2003/05/19 18:30:00
歯抜けの時間を得るためのSQL
歯抜けの連番を得るためのSQL
等間隔で入っているデータの歯抜けを無くする為のSQLって
意味合いじゃ同じでしょ
自分の考えでは、この2を出力させるために、
ワークテーブルまで作るのは無理矢理だと思う
0625デフォルトの名無しさん
NGNG>無い時間に対してはデータ=0ってしてやるほうがいいように思う。
>データ取得後の処理がいまいち見えないからなんともいえない。
>でもSQL側で苦労しておくとデータ取得後の処理が簡単になったりする、というのも事実でしょ。
これは同意(最初から否定しているつもりはない)
>ちなみにあんたのいう「本来あるべき姿」ってどんなの?
パフォーマンスも重要だが、
この場合は、想定件数が100件程度なので
工数をかけないのと、コードと仕組みの解りやすさ(バグを誘発しない&改造しやすい)
だろうな
>おれは連番関連以外であんたの言うところの無理矢理のSQLをよく書くよ。
無理矢理って思うのは、感じ方は人それぞれだからなぁ
俺は複雑なSQLは書くけど、無理矢理なSQLは書かないようにしている
(初心者には難しくても、普通の中級者が すんなり理解できる程度)<これもまた微妙な表現
まぁ考えを押しつけるつもりは無いし
俺は似てると思うことを、違うって言うんだから
話は平行線なので終了!
0626デフォルトの名無しさん
NGNG平行線であることがわからないとは
アッパレ
0627デフォルトの名無しさん
NGNG「請求フラグ」 0:未請求 1:請求済 ってフラグがある。
明確なレコード仕様書がある。追加される予定もない
仕様書にゃ「未請求以外を抽出って書く奴がいる」
何故か、なんでも未請求が標準(デフォルト)になって話す
請求フラグ <> 0 仕様書の意味合い通り
請求フラグ = 1 一般的な書き方?
どう書けきゃ良いんだよ!
0628デフォルトの名無しさん
NGNG仕様変更妄想して雰囲気で選ぶべ。
0629624
NGNG了解。
おれもちょっと熱くなって話が平行線であることに気づかなかった。
>>625の時点で気づいたので
>>626の書き込みは誰にとってもどうでもいいものになっていましたとさ。
0630初心子
NGNGすでにデータの入っているテーブルで、NULLを許可しないフィールドがあります。
データを消すことなくそのフィールドのNULLを許可に変更することは可能でしょうか。
もし可能であればどういうSQL文を発行すればよいのでしょうか。
よろしくお願いいたします。
0631デフォルトの名無しさん
NGNGALTER TABLE HOGE MODIFY(MOGE NULL)
/
0632デフォルトの名無しさん
NGNGいや、たいていできると思うが...
0633デフォルトの名無しさん
NGNG当然
> 請求フラグ <> 0 仕様書の意味合い通り
だろ。
そのフィールドには NULL が入ってるかも知れんからな。
0634デフォルトの名無しさん
NGNG・null は等号・不等号との比較演算では常に false を返す。
・null は「未請求(0)」ではない。
以上のことから、「未請求(0)」以外を抽出するには
請求フラグ <> 0 or 請求フラグ is null
と記述するのが、「未請求以外を抽出」という仕様に忠実だと思う。
0635デフォルトの名無しさん
NGNGNULLがあるかは確かめた方がよくない?
あと迷うくらいなら「請求フラグ <> 0」でいいですか?
と聞けばよい。
聞かずに決めるなら
請求フラグ = 1
より
請求フラグ <> 0
にする。
>追加される予定もない
ってのは当てにならない。
0636デフォルトの名無しさん
NGNGこんなとこにいる漏れも香具師か・・・・
0637デフォルトの名無しさん
NGNGどっちでも良いみたい
パフォーマンス的に、「請求フラグ = 1」に決定
ただ、その人の仕様書ってのが
「○○以外」ってのが多すぎなのよ
まだこれならマシで
「非○○以外」「未○○以外」とか
肯定系で書いて欲しいと願ったw
0638デフォルトの名無しさん
NGNGみんな「請求フラグ<>0」と言っていますが......
0639デフォルトの名無しさん
NGNGそれがどうした
0640デフォルトの名無しさん
NGNGつけられますでしょうか?
0641デフォルトの名無しさん
NGNGふつう、HAVING句を使うんじゃないの?
0642デフォルトの名無しさん
NGNGはパフォーマンス落ちるよ。
仕様は一応満たすかもしれないが、後々速度改善とかの時に問題になることは必至。
0643デフォルトの名無しさん
NGNG最大の値がほしいだけならMAX使うだけだけど、
その最大値をとるデータがほしいというなら
WHERE句でDATA=(SELECT MAX(DATA) FROM TBL)
でやったらいいかもよ。
0644デフォルトの名無しさん
NGNGそうね、副問合せにしたほうがいいね。
0645デフォルトの名無しさん
NGNGSQLファイルから直接DBに流し込む作業をしていたのですが
改行コードがうまくいれることができません。
connect '/data/TEST.GDB' user SYSDBA password masterkey;
UPDATE ADDRESS_TABLE SET ADDRESS='あぱむ\nあぱむ';
commit;
こんな具合でやると改行コードを文字としていれてしまうので
DBから取るときにうまくいきません・・・
DBはInterBase5.6を使用していますが
どのようにSQLファイルから流し込む際に改行コードをいれればいいのでしょうか?
0646デフォルトの名無しさん
NGNG> こんな具合でやると改行コードを文字としていれてしまうので
> DBから取るときにうまくいきません・・・
意味がわかんね。うまくいきません?
HTML表示なら取り出したときに「\n」→「<br>」に置き換えればいいんちゃう?
0647デフォルトの名無しさん
NGNGクォーテーションで囲った範囲は文字として見なされる。
至極あたりまえの事だと思うが・・・
InterBaseは知らんが、大抵は文字コード<->文字の変換関数が用意されている。
そのへんを使って処理したまい。
0648デフォルトの名無しさん
NGNGたとえば 20030401 なら TRUE。 20031431 なら FALSE とか。
0649デフォルトの名無しさん
NGNG俺なら、「仕様を満たしていないがパフォーマンスがいい奴」より「パフォーマンスが悪いけど仕様を満たしている奴」を採用するよ。
0650デフォルトの名無しさん
NGNG>>637は両方満たしていますが何か?
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG仕様も満たしてなかったら、それは欠陥品だ。
0653デフォルトの名無しさん
NGNGインサートして入ったらtrue
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG┌───────────
|女.持ち物
├───────────
|先っちょに穴のあいたゴム
└───────────
>SELECT 年齢 FROM 女
┌───
|年齢
├───
|29
└───
0657デフォルトの名無しさん
NGNG女が1件って悲しいな...
0658
NGNG俺だったら、
SELECT * FROM 女
です
0659デフォルトの名無しさん
NGNG対象件数が0件って事か?
0660デフォルトの名無しさん
NGNGテーブルまたはビューが存在しません
0661658
NGNGなんでわかったの?
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGaccess denied.
0664デフォルトの名無しさん
NGNG> GRANT INSERT,SELECT ON 女 TO ">>662";
GRANT
> INSERT INTO 女(アナル,マンコ) VALUES('チンポ','チンポ')
INSERT 16545 1
> SELECT 年齢 FROM 女 WHERE oid = 16545;
年齢
-------
80
(1 row)
0665デフォルトの名無しさん
NGNGこの項目に NUMBERの年Bを足したのが、VARCHAR2(8)の日付の項目Cより
大きいのを抽出したいのですが、どうすればいいのでしょうか?
0666デフォルトの名無しさん
NGNG日付の項目ってのは yyyymmddで 入ってるものです。
0667kyou
NGNGaccess violationというエラーが出るのですが、これはどういった場合に出るエラーなのでしょうか?
0669bloom
NGNG0670デフォルトの名無しさん
NGNGTO_NUMBERして、B*10000を足すか、
SUBSTRで年だけ抜いて、TO_NUMBERしてB足して、||で繋ぐか。
前者の方が楽だね。
0671670
NGNG前者は、TO_CHARしてからTO_NUMBERね。
具体的には
TO_NUMBER(TO_CHAR(ymd,'YYYYMMDD'))+b*10000
と比較してやれば良いかと。
0672665
NGNGこの ymd って 項目Aで いいのかな?
c < (TO_NUMBER(TO_CHAR(a,'YYYYMMDD'))+b*10000)
こういうふにしたらいいのかな?
0674デフォルトの名無しさん
NGNG間違ってるぞ。
TO_NUMBER(c) < (TO_NUMBER(a)+b*10000)
これでいいのだ。
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGpostgreSQLをcygwin使って使おうと思ってるのですが、
初期化のinitdbの途中でエラーがでます。
creating template1 database in〜〜〜FATAL
File 〜〜〜\cygwin\usr\local\pgsql\data/PG_VERSION is missing. T
his is not a valid data directory.
って感じです。
調べたのですがユーザー名にスペースがあったのでそこを手動で
passwdのとこでスペースをなくしたりしましたが変りませんでした。
どなたかご指導お願いします。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGSUBSTR(文字列,1,4)
0680デフォルトの名無しさん
NGNGBという項目によって Aに数値か 文字列かのどちらかが入るようになっています。
そこで Aが数値の場合のみとして条件を設定し、抽出した場合、
Aの合計を取得したいのですが、どうすればいいのでしょうか?
レコード数が多いのですが、簡単にできないでしょうか?
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG市区町村テーブルに住所コード(charで5バイト)があります。
住所コードの先頭2バイトが県コードと等しいです。
2つのテーブルを県コードと住所コードで結合したいのですが
どうすればよいのでしょうか?
0683デフォルトの名無しさん
NGNGOracleかい?SQLServerかい?
STRINGなりSUBSTRINGを使えば結合出来るんでない?
0684683
NGNG0685682
NGNGSymfoWAREです。
おはずかしい話ですが、SQLのWHERE句にSUBSTRINGなどの関数は使用できる
という事なのでしょうか?
例を見ると、SELECT句のところにしか使用されていませんでしたので。
低レベルで申し訳ありません。
0686683
NGNGFROM 市区町村テーブル,都道府県テーブル
WHERE 都道府県テーブル.県コード = SUBSTRING(市区町村テーブル.住所コード,1,2)
0687デフォルトの名無しさん
NGNG人に聞くより自分で試してみなよ。
CPUサイクル単位で金取られるようなシステム使ってるなら別だけどさ。
0688683
NGNG確かにそうだね。結局SQLなんてパズルだもんな。
SQL*PlusとかQueryAnalyzerでガリガリやったほうが覚えるね。
(まぁコストとかは別として)
0689デフォルトの名無しさん
NGNGディレクトリの区切りに'\'はまずいんじゃないの?
まだだめならマニュアル100回読んでからCygwinかPostgreSQLスレへ。
Cygwin : http://pc2.2ch.net/test/read.cgi/win/1052361218/
PostgreSQL : http://pc2.2ch.net/test/read.cgi/php/1047317680/
0690山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0691デフォルトの名無しさん
NGNGやりたいことがあるので質問させてください。
2chのdatをsqlに変換したり、メールデータを添付ファイルも含めて
sql化させたりというのはできるのでしょうか?
もしできるとすれば、自分で調べた感じだと、perlなどの文章処理言語を
使うのだろうかと考えています。
もしよかったらアドバイスいただけたらうれしいです。
0692デフォルトの名無しさん
NGNG>sql化させたりというのはできるのでしょうか?
意味がよくわからん。
datやメール文書をデータベース化するってこと?
0693691
NGNG>datやメール文書をデータベース化するってこと?
変な用語を使ってしまったみたいです。
やりたいことは692さんのおっしゃる通りです。
2chの方に関しては、できればそのときに生きている板のdatを
読み込んで、idを検索したり、コテハンごとに発言を出したりできたら
いいな、と考えています。
0694デフォルトの名無しさん
NGNGまずSQLについて勉強してから質問した方が良いと思う。
SQLはプログラミング言語じゃない。単にデータベースを操作するだけのもんだぞ。
0695デフォルトの名無しさん
NGNGう〜ん。いまいちイメージが掴めないのですが。
2chの要件は多分ムリでしょう。サーバからデータをD/Lする
ようなものですから。
とりあえずwin2000でHTTPを勉強したいのであれば、
IIS+ASP+ODBC(MySQL)で適当なWebアプリを作ってみては?
0696デフォルトの名無しさん
NGNG誰もHTTPでなんていってないぞw
話をいきなり複雑にするな。
>>693
生のdatがあるならperlでもなんでも使ってINSERT文作ればいい。
メールの添付ファイルについては頭使わないときびしいね。
0697デフォルトの名無しさん
NGNGREN *.dat *.sql
0698デフォルトの名無しさん
NGNGperlで生のdatをテーブルにロードするの?
0699696
NGNG生datからINSERT文への変換をperlでやればいい。
perlじゃなくてもいいけど。
あとはこのINSERT文を流してやればいいだけ。
クラスだの何だの使わなくたって単純でしょ?
生datの形式知らんけど、テキストであるなら難しくはないと思う。
0700デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNGユーティリティー使って簡単にDBへ落とし込めそうな予感
0704デフォルトの名無しさん
NGNG>グローバル変数みたいなの
ええとね…何を言ってるのか判らんのだけど。
複数のストアドから参照できる変数、が欲しいのだと予想して答えてみる。
パッケージ使ってるなら、仕様部に変数定義すれ。
パッケージ使わないならない。
おとなしくDBに項目でも追加しなさい。
0705デフォルトの名無しさん
NGNGOK
0706動画直リン
NGNG0707デフォルトの名無しさん
NGNGglobal.変数名じゃなかったけ?
0708デフォルトの名無しさん
NGNGそれマジ?
その変数が有効な期間が激しく気になる。
通常なら、その変数を宣言したPL/SQL(パッケージなど)が
終わってしまえば変数も開放されるはずだけど、、、、、
何か開放する宣言みたいのあるん?
C/C++のfreeみたいに。
というか、ネタにつられた?
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG好みで、ご自由に。
ちなみに俺は、入れる派。
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGif a=1 then
if a = 1 then
上記では 入れないほうが 見やすいと思う。
0714デフォルトの名無しさん
NGNG漏れはこうかな、面倒だけどね。
後の事を考えると。
でも、結局はプロジェクトルール優先だ罠。
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGちなみに Number型の変数 a を Varchar2型の変数 bに変換したいのです。
a=1 → b='1'
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGSQL鯖ではどうすれば良いのだろう?
0719デフォルトの名無しさん
NGNGREPLACE()で全角にすればいいんじゃない?
0720デフォルトの名無しさん
NGNGそれじゃ、変換パターンを全て書かなきゃいけないのね?
数値ならパターンが少ないからいいけど
やっぱり、そんな感じでストアドかなぁ?
0721デフォルトの名無しさん
NGNGSQLServer2000ならマルチバイト変換の関数はサポートされてなかった?
BooksOnlineで調べてみたら?
0722721
NGNGそんなこと無いです。
VBとかは関数サポートされてるし
Cとかアセンブラなら論理演算で変換すればそんなに骨ではないでしょ。
0723デフォルトの名無しさん
NGNGしまうので茶筅を使って日本語全文検索を試みてみたのですが全文検索
だと例えば「日本国」などの言葉を検索した場合「日本」 「国」を含む全ての
行がセレクトされてしまいます。
これをLIKE検索みたいに「日本国」だけを含む行をセレクトするためには
どうしたらいいんでしょうか?
0724デフォルトの名無しさん
NGNGまずはどのようなTABLE構造になっているか教えれ。
そしてどのようにデータをつっこんでいるのか。
それがわからないと誰も答えようがない。
0725デフォルトの名無しさん
NGNGvarchar(12) / varchar(60) / varchar(100) / int(12) / date / varchar(100)
こういう感じのテーブルです。
本のタイトルなどのデータを入れていて3列目にタイトルを入れて6列目に
タイトルを全文検索用に変換しものを入れています。
日本語全文検索については下記ページを参考にしました。
http://www.hippo2000.info/perl/myfull.htm
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGちょっとは調べるとか、マニュアル本買うとかしれ。
OTNからpdfマニュアル落としてもいいんだし。
0728デフォルトの名無しさん
NGNGselect length('漏れ') from dual;
select lengthb('漏れ') from dual;
両方試して理解しる。
727がいうように、これくらいは
OTNでPL/SQLのマニュアルダウンロードしる。
0729デフォルトの名無しさん
NGNGデータと、発行したSELECT文を晒してもらわないとはっきりしたことは
いえないけど、
それは茶筅の方の問題ではないのかい?
0730デフォルトの名無しさん
NGNG今日はじめてMysql触りました。
今日一日実働七時間ぐらいで、
windowsにMysqlをインストして
株の銘柄日付順データ四本値をためしに一銘柄取り込んで、
普通の日付をグレゴリオ暦に変換して、
あらたにカラムを追加して、
Mysqlでも日付による範囲指定をできるようにしました。
select * into outfile 'output.txt' from kabu;
として、タブ区切りファイルとして吐き出し成功。
つーか、教科書二冊買って、データの取り込みと
吐き出しをほとんどまったく説明してない教科書って、いったい。。。
ネット上を探しまくったよ。
mysqlでサブクエリの命令を使えないのも愕然としたし。
疲れて目チカチカします。おしまい。
0731デフォルトの名無しさん
NGNGa VARCHAR2(10);
とかしてサイズを指定しますが、
NUMBER型は、特にサイズを指定しません。
NUMBER型もサイズを指定したほうがいいのでしょうか?
それとも、両方、サイズを指定しなくてもいいのでしょうか?
0732デフォルトの名無しさん
NGNG(NUMBER型は、サイズを指定しなくてもいいけど)
自信ない時は例外でトラップしる!
0733デフォルトの名無しさん
NGNGブロックコピー、カットなどありますでしょうか?
また、インデントって どうやって使うのでしょうか?
0734デフォルトの名無しさん
NGNGNUMBERならサイズ指定する必要なんてないでしょ。31ビット固定だし。
別にしてもいいけど。
>>733
秀丸で作成->オブジェクトブラウザへCOPYじゃ駄目れすか?
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGたすけて・・・
select
count(*)
a.AA,
b.BB,
(select c.CC from xxx c where 〜) cc
from 〜 where〜
group by
a.AA,
b.BB,
cc (←エラー ORA-00904: 列名が無効です)
ccを「(select c.CC from xxx c where 〜)」と書き換えると ORA-00979: GROUP BYの式がありません。
0737デフォルトの名無しさん
NGNG列名の変わりに列番号書けなかったっけ?
ccの変わりに1ってやってみたら?
0738デフォルトの名無しさん
NGNGorder by は使えるんですけどね・・・
0739デフォルトの名無しさん
NGNG・ccが複数レコードになるのならエラーになりそう。
・ccが単一レコードなら、count(*)をとるのにccは不要なのでは?
0740736
NGNGSQLの中で2度の外部結合(+)を避けるために、このようなSQLが必要になってしまいました。
DB設計が悪いとしかいいようが無いのですが今更仕方ないという事情です。
0741デフォルトの名無しさん
NGNGxxxテーブルをFROM句に書いたら?
xxxからは確実に1件取るんだろ?
select
count(*)
a.AA,
b.BB,
c.CC
from 〜
,xxx c
where〜
and 〜 ←xxxに対する条件
group by
a.AA,
b.BB,
c.CC
試してないけど...
0742デフォルトの名無しさん
NGNGgroup byした結果をselectして別名付けてるんだから、別名は使えん罠。
漏れなら、view使いそうだけど、viewも使っちゃ駄目なのか?
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGハァ?
0746デフォルトの名無しさん
NGNGviewって基本的に重くなるもんじゃないのか?
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGOracleはVIEWを用いるとディクショナリを参照したり余分な内部コールが発生します。
その他、
管理が煩雑になりがち。
パフォチューの邪魔。
などデメリットだらけ。。。
セキュリティのためVIEWを用いたりする人もいるけど、
そもそもVIEWでセキュリティ管理しようとする時点で
そのシステムはセキュリティが甘い。
0749デフォルトの名無しさん
NGNGSELECT と VIEW を比べるとどっちも変わらない。
0750デフォルトの名無しさん
NGNGそんなわけないでしょ。ちゃんと実行計画採取して比べてみた?
少なくともVIEWは余分に内部コールしている筈だよ。
といいつつ体感速度はそんなには変わらないと思うけど。
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG擬似的に1つの(少数の)
tableのI/Oになる為、
(INは更新可能なviewであれば)
プログラマにはビジネスロジック
を意識させなくても良くなる。
(プログラムはシンプルになるし、
その分UI等、PG本来の製造に専念できる。)
viewの変更により、APを変更させなくても
集計結果値の変更等も行うことができる。
viewを使う、使わないのと
体感速度が変わらないなら
使うメリットの方が大きい。
パフォーマンスもレスポンスだけでなく、
開発、メンテ工数も含めた
パフォーマンスUpを目指さないといけない。
セキュリティの話が出たが、viewを使うと
セキュリティが甘いということは全然ない。
素のtableは基本的に所有者(管理者)
のみ突ける様にしておき、viewにより
各ユーザに相応の必要な部分だけ解放すれば、
カプセル化の意味ではセキュリティが強く
なると言える。
金融系では良くやる技だよ。
(T-SQLではストアドも結果セットが返せるから
ストアドで解放するという手もあるけどね。)
以上
0753デフォルトの名無しさん
NGNGビューを使えば、データ型さえ変更しなければ表示値などのデータを
変更させたい場合、それを使うアプリ全部を変更しなくても良いのは
使えるね。
Javaなんかだと、テーブルをクラスにマッピング化させる方法が良く
用いられるけど、テーブルをジョインさせないといけない場合、ビュ
ーでマッピングさせるよね。
0754デフォルトの名無しさん
NGNGまぁ、ビューなのに実体を持つというウルトラCが使えます。
たとえば、日別売上データを Group By したビュー 月別売上データを
作るとする。他のデータベースだと 月別売上データを参照するたびに
集計が行われるんだけど、インデックス付きビューでは 集計結果が
実ストレージに格納されている。だから、月別売上データも即座に出てくる。
まぁ、あれだね。日別売上データへの変更をトリガで見張って、
別テーブルの月別売上データに加算している、ようなケースを
置き換えることができる便利機能だね。
0755デフォルトの名無しさん
NGNGたとえば掲示板で、
投稿者の名前順で並び替えて、
同じ投稿者が数人レスしている場合は
そのレスを新しい順に並べる
といったことです。
0756デフォルトの名無しさん
NGNGOracleで言えば、マテアライズド・ビューのようなものですね。
ストアドとかトリガーを使って集計テーブルを用意しておくようなときに便利そうですね。
でも、OracleにしてもSQL Serverにしてもエンタープライズエディションでないと使えないのが残念ですね。
0758デフォルトの名無しさん
NGNGヘルプをきちんと読みましょうよ。
0759デフォルトの名無しさん
NGNGヘルプというか入門書だな・・・
0760デフォルトの名無しさん
NGNG-------------------------
JR 東海道線 東京
営団 有楽町線 池袋
JR 山手線 池袋
こんなテーブルで検索します。キーワードは「路線名」と「駅名」の
2つが一致したものを抽出させたいと思っています。
今のところ考えたものを載せます。
アドバイスください(T0T)
select*
from電車テーブル
where(SELECT 路線名 FROM 電車テーブル GROUP BY 路線名 HAVING COUNT(*) > 1)
AND
(SELECT 駅名 FROM 電車テーブル GROUP BY 駅名 HAVING COUNT(*) > )
order by 路線名
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGSelect * From 電車テーブル
Where 路線名 = '東海道線' And 駅名 = '東京'
とかやりたいだけじゃないだろうな?
0763デフォルトの名無しさん
NGNG物事を難しくする甜菜ですか?
0764デフォルトの名無しさん
NGNG--------------------
有楽町線 有楽町
丸の内線 丸の内
銀座線 銀座
三田線 三田
という出力結果が欲しいんでしょ?
0765デフォルトの名無しさん
NGNG(1)
select * from 電車テーブル where 路線名 = '東海道線' and 駅名 = '東京'
(2)
select * from 電車テーブル where 路線名 = 駅名
0766デフォルトの名無しさん
NGNGそれって、おまえの欲しい結果がでないどころじゃなく
SQL文としてエラーになるんとちゃうか?
0767デフォルトの名無しさん
NGNG0768760
NGNG企業名 路線名 利用駅名 終点
--------------------------------------
JR 東海道線 東京 小田原
JR 山手線 池袋 東京
営団 丸の内線 有楽町 池袋
営団 丸の内線 霞ヶ関 池袋
JR 東海道新幹線 小田原 東京
JR 京浜東北線 東京 大宮
営団 日比谷線 霞ヶ関 中目黒
結果的には
企業名 路線名 利用駅名 終点
--------------------------------------
JR 東海道線 東京 小田原
JR 京浜東北線 東京 大宮
営団 丸の内 霞ヶ関 池袋
営団 日比谷線 霞ヶ関 中目黒
で、利用駅と企業名が完全一致するレコードだけを抽出したいんです。
分かりにくくてスミマセン・・・アドバイスお願いします
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG要するに複数企業にまたがってない奴だけを抜き出すのか?
そんなのそのテーブル一つでどうにかなると思ってるのか?
0771デフォルトの名無しさん
NGNG0772760
NGNGもう1個テーブル用意しなくちゃいけないんですね?
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGSELECT 企業名, 駅名, COUNT(*)
FROM 電車テーブル
GROUP BY 企業名, 駅名
して、
0776デフォルトの名無しさん
NGNG利用駅=企業名
という意味では ないな。
0777デフォルトの名無しさん
NGNGテーブルの内容を表示させて エクセルに出力しようとすると
「Range クラスの ColumnWidth プロパティを設定できません。」
というエラーが出るのですが、何が原因か わかりますでしょうか?
0778777
NGNG仕方ないが これで我慢するか。
0779デフォルトの名無しさん
NGNGfrom 電車テーブル a
,(
select 企業名,利用駅名
from 電車テーブル
group by 企業名,利用駅名
having count(*) >= 2
) b
where a.企業名 = b.企業名
and a.利用駅名 = b.利用駅名
order by 企業名,利用駅名
0780デフォルトの名無しさん
NGNGすげーあてずっぽうだけど、
LONGの列を出力していて、
カラムサイズを広げようとしたところ、
Excelの制限以上に長い文字列が
設定されていてアボーンとか。
もしLONGの列があるなら、その列を
非表示にして出力してみては?
0781777
NGNGVARCHAR2(448)っていう項目があるけど、これが原因?
0782デフォルトの名無しさん
NGNGOracleから、SQLServerへの移行をやっています。
SQLServerで、ユーザー定義のグローバル変数ってできますか?
Oracleの、パッケージ変数の代わりにしたいのですが。
やっぱり、テーブルに書き込むしかないでしょうか
0783デフォルトの名無しさん
NGNGDBMS_SQL.FETCH_ROWS で フェッチしたとき、この ROWの値は、
何を意味しているのでしょうか?
SQLで抽出した件数でしょうか?
0784783
NGNG0785デフォルトの名無しさん
NGNGどうすればいいでしょうか?
0786デフォルトの名無しさん
NGNGBOLくらい見れ
0787デフォルトの名無しさん
NGNGdba_tablesをselectしたら
0788デフォルトの名無しさん
NGNGhttp://bluetree.2.pro.tok2.com/developer/bord/bg11/msg/685.html
0789デフォルトの名無しさん
NGNG重複しない値を持つ列の中から一番大きな数値を読み出すにはどうすればいいでしょうか。
例えば、野球チームの選手のリストの中から、一番大きな数値の背番号を抜き出すなどです。
簡単でいいのでよろしくおねがいします。
0790デフォルトの名無しさん
NGNGBooks On Lineを見たところ、無さそうですが・・・。
0791デフォルトの名無しさん
NGNG> 簡単でいいので
HAVING、MAX、GROUP BY
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNGそんなにいらねぇ。
SELECT MAX(背番号) FROM 野球選手
0797デフォルトの名無しさん
NGNG0798791
NGNGこれでオラクルに就職できます。
0799_
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGそんなんで就職できるんだったら おれも就職できるぜ(w
0802_
NGNG0803デフォルトの名無しさん
NGNGあなたとはできが違います(^-^)
0804デフォルトの名無しさん
NGNGinsert into "test" ("key","value") values (select count(*) from test,'値') ;
こんな事がしたいんだけど、どうすりゃいいのさぁ〜
これじゃ動かなかったわけだが・・・
オナガイシマッス。
0805デフォルトの名無しさん
NGNGSelect Count(*), '値'
From test
0806804
NGNGへぇ〜、そうやるですか!
勉強なるました。
感謝します!
0807デフォルトの名無しさん
NGNG以下の式以外にindexを使用可能な式はありますか?
これは遅いってのもあればお願いします。
・索引列=条件式
・索引列<条件式
・索引列>条件式
・索引列<=条件式
・索引列>=条件式
・索引列 between 条件式 and 条件式
・索引列 in(条件式, 条件式・・・)
・索引列 LIKE 'パターン%'
なお、PostgreSQLはin句が遅いようですね。
0808直リン
NGNG0809デフォルトの名無しさん
NGNGOpenも、Closeもなしにアクセスできるんだが。
0810807
NGNG何かポイントあれば教えてください。
重いSQL文は
9個のテーブルを連結している文で
4個のテーブルに対してIN句で条件が書いてあり、
テーブル2個は3万件、テーブル2個は1万件、テーブル1個は1万件、
テーブル1個は5000件、テーブル3個は100件。
連結キー、IN句の対象列にはB-treeのindexをつけています。
EXPLAINでのコストは2000程度。
実行秒数は14秒程度
(time psql -f 'SQL実行ファイル' > '実行結果保存ファイル')
0811デフォルトの名無しさん
NGNGfrom a, b
where a.a2 in(1, 3, 4)
and a.a1 = b.b1;
上のようなSQL文の内部処理は
一般的にin句の処理がされてから結合処理されるのでしょうか?
もし結合処理が先なら、in句を初めに処理するよう強制する方法はありますか?
もしin句の処理が先なら、結合処理を初めに処理するよう強制する方法はありますか?
以下の文はfrom文の中のサブクエリーが先に処理されると認識してもよいのでしょうか?
select a.a1, b.b2
from (select *
from a
where a2 in(1, 3, 4)) as a, b
where a.a1 = b.b1;
0812デフォルトの名無しさん
NGNG関数付きIndexってのもあったと思うが
0813デフォルトの名無しさん
NGNG>一般的にin句の処理がされてから結合処理されるのでしょうか?
DBMSの実装によると思うが、たぶんそうなる。
>以下の文はfrom文の中のサブクエリーが先に処理されると認識してもよいのでしょうか?
これは100%そうです。
0814デフォルトの名無しさん
NGNGなるほどありがとうございます。
in句が先に処理されないと無駄な処理が発生することになるから当然ですよね。
0815デフォルトの名無しさん
NGNGfrom キャリア系,独立系
while 収入>aaa,イケテル度>bbb
aaa と bbb に入れるべき適切な条件を教えてください。おながいします。
0816デフォルトの名無しさん
NGNGSQL の構文くらいはちゃんと覚えてから、つまんないジョーク書こうね。
0817デフォルトの名無しさん
NGNG会社のSさんは「この書き方でいいからどんどん書いて」って言ってたよー
0818_
NGNG欲しい方は [email protected] にメールで。
http://page2.auctions.yahoo.co.jp/jp/auction/b37997811
http://page3.auctions.yahoo.co.jp/jp/auction/c37109748
http://page.auctions.yahoo.co.jp/jp/auction/d34164618
http://page.auctions.yahoo.co.jp/jp/auction/c37715536
情報はこの他に、オークション関係3本、ネット関係の話1本のセットです。
やる気のある方なら、少なくとも5000円の値打ちはあると思います。
入金先はジャパンネットバンク 郵便局 。確認出来次第メールします。
先着2名様まで
0819デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley/4348/wadasan.swf
http://www.geocities.co.jp/Hollywood-Screen/4174/wada.swf
http://www.geocities.co.jp/SiliconValley/4348/wadax.swf
0820デフォルトの名無しさん
NGNG何の作業でどんどん書けなどと言ったのだろうか。
Sさんとやらを、小一時間(ry
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGそうだろうな。 おれは、もっと出来るからな(w
0823デフォルトの名無しさん
NGNG三日考え抜いた返しがそれかよ(w
0824デフォルトの名無しさん
NGNGupdate table set val=val+1 where key='ct' ;
こんな事したいんだけど・・・
オナガイできますか?
0825デフォルトの名無しさん
NGNGそんなこともできないの?>ポスグレ
ちょっと考えちゃうなあ・・・。
0826デフォルトの名無しさん
NGNGFROM句書かなくて平気なのか?
0827デフォルトの名無しさん
NGNG確かに関数付きIndexもありましたね。
ありがとうございます。
0828デフォルトの名無しさん
NGNGFrom句書くのって SQL Server くらいじゃね?
0829デフォルトの名無しさん
NGNGset val=val+1 は普通にできるぞ。
エラーが出るなら詳細書け
valが数値型じゃなかったとかいう落ちか?
0830デフォルトの名無しさん
NGNG別に 三日間 考えてたわけじゃない。
休みを満喫してただけだ。
ちなみに ここは たまにしか 覗かないからな。
0832デフォルトの名無しさん
NGNGデータソースおよび指定された既定のドライバが見つかりません。
みたいなエラーが出て困っています。。
0833デフォルトの名無しさん
NGNGGoogle以上のFAQが何処にあるってんだ?
つか、そのエラーメッセージってまんまじゃん。
何がおかしいかくらい予想できないのか?
0834デフォルトの名無しさん
NGNGSQL関数群をWindowsカーネルにいれてるんですか?
どこらへんがノーマルNTカーネルと違うのでしょうか?
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG例えば外部結合とUNIONのどちらでも同じ結果が得られるときじゃ
どちらがコストがいいのでしょう?
一概にはいえませんかね。
実行計画を採取しろ!と言われそうですが、ふと気になったので。
0838デフォルトの名無しさん
NGNG一概にはいえないから、実行計画を採取しる!
0839デフォルトの名無しさん
NGNGそのエラーはデータソースおよび指定された既定のドライバが見つからないということを
言ってるんだと思うよ。
0841デフォルトの名無しさん
NGNG泣いてる暇があったらデータソースか指定された規定のドライバ探せよ。
0842デフォルトの名無しさん
NGNGAとBのテーブルを見比べてBに無いものをAから削除したいんです。
但し、AとBを比較する条件は2つ以上なのです。
条件が1つならば
DELETE FROM A WHERE A.X = (SELECT A.X FROM A, B, WHERE A.X = B.X(+) AND B.X IS NULL)
こんな感じで出来ると思うんですが。
どうすれば良いのでしょうか?
宜しくお願い致します。
0843デフォルトの名無しさん
NGNGこんな感じでどう?
DELETE FROM A
WHERE (X, Y) NOT IN
(SELECT X, Y FROM B)
0845デフォルトの名無しさん
NGNGあのな、苛めてるわけじゃなくて、本当にそれだけの事なの。
書いている意味がわからないなら、まずどの単語が分からないのかを洗いだして
その意味を1つ1つ調べていくしかないの。
たぶん君は「データソース」と「規定のドライバ」ってのが何を指すのかわからない
んだろうから、ヘルプとかGoogleとかでそれが何であるかを調べる事から始めな。
遠回りかもしれないけど、これをやらなきゃ何時までたっても何も理解できないままだよ。
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG9iから使える新しいUPDATEで
あったら更新なかったらインサート(またはその逆?)
ができる構文おしえてください・・・
それからpl/sqlになるのですが
select into文で変数に値をぶちこむ時にfor update句ってつかえますか?
0848デフォルトの名無しさん
NGNGマニュアル見ろよそれくらい。
http://otn.oracle.co.jp/ でただで手に入るんだから。
0849デフォルトの名無しさん
NGNGいいからぐだぐだいわず俺さまにおしえやがれ
おねがいします。
0850デフォルトの名無しさん
NGNGいいからぐだぐたいわず手前で調べやがれ
そのほうが早いし勉強になる
0851デフォルトの名無しさん
NGNGどうせ内部もそうなってるんだろうし、コストは変わらねーだろ。
0852デフォルトの名無しさん
NGNG普通、その手の処理はselectしない。
updateして、影響行がなければinsertする。
0853デフォルトの名無しさん
NGNGていうかupdateしてエクセプションでインサートするって
荒技ですか?
普通にやってたんですが。
0854デフォルトの名無しさん
NGNG何で例外処理でinsertというロジックになる?
荒技でもなんでもないけど...
pl/sqlなら
SQL%NOTFOUNDや
SQL%ROWCOUNT
T-SQLなら@@ROWCOUNT
で判定するだけだけど。
例外(DBエラー)が走れば普通にエラー処理するよ。
updateだけで終わるならそれで終わりだし、
一番コストがかからない方法だけど。
ちなみにDMLではDBエラーではなく
ただ単に影響行が0の場合はエラーとみなさないから、
影響行で判定しなければならないという場合は
結構存在するはずだけど...
0855デフォルトの名無しさん
NGNGどこにかかっているかは知らないけど、
oracleならmerge文を調べて見れ。
0856851
NGNG0859デフォルトの名無しさん
NGNGbegin
update文
exception
insert文
end
を文中に入れるかローカルプロシにする。
SQL%ROWCOUNT っていったんセレクトせにゃならんのちゃうん?
違ったっけ?
ダメなん?
強引?
普通に使ってた。
0860デフォルトの名無しさん
NGNGいったんセレクトするなんてカッコわるくてやだなぁ
マージは知ってるけど文法しらない。
だれかおしえて。
てかマージじゃなくてuodate文の文法変わったってほんと?
0861デフォルトの名無しさん
NGNGSQL99だったかなぁ・・・。
0862デフォルトの名無しさん
NGNGSELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
上記の場合 2003-06-28 となり
SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') FROM DUAL;
これの場合は 2003年06月28日 となりますよね?(今日なら)
記号を年月日の間に挟む場合は「"」を使わなくて
年月日を文字型にする場合はセレクト文の中に文字が含まれているから
括弧内は「"」を使わなければいけない、という認識でいいのでしょうか?
0863デフォルトの名無しさん
NGNGだからそれじゃダメだっていってるじゃん。
影響行が0でもexception
に飛ばない。
plsqlなら
BEGIN
update文
IF SQL%NOTFOUND THEN
insert 文
END IF;
EXCEPTION
例外処理
END;
例外はは一意制約やnot nullエラー、ユーザ等の
エラーのみ発生する。
>SQL%ROWCOUNT っていったんセレクトせにゃならんのちゃうん?
そんなことはないっつか、普通DMLで使う。
>強引?
>普通に使ってた。
それガクブルもんだよ。もし使ってたなら
今までのコード全て直さないと...
0865デフォルトの名無しさん
NGNG&はが多かった
0866862
NGNG0867デフォルトの名無しさん
NGNG| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|DBの種類は? .|
|________|
∧∧ ||
( ゚д゚)||
∧∧Λ
ピュ.ー ( ゜∇゜ )つ <>>862(゜∇゜)/
=〔~∪ ̄ ̄〕 「ウンマンコ」
= ◎――◎
0868862
NGNGOracleです。
お願いします
0869デフォルトの名無しさん
NGNG∧∧Λ
ピュ.ー ( ゜∇゜ )つ <>>862 オラクルでしたか
=〔~∪ ̄ ̄〕 僕は、PostgreとMySQLしか使ったことない若輩モノですが
= ◎――◎ たとえばMySQLでは「"」と「'」どっちでも良かったのが
PostgreSQLでは「'」じゃないとエラーになります
そういう具合に、機種によって特徴があるのではないかと思います
だから>>862で言っていた認識でいいのではないかと思います
スイマセン力になれなくて (゜∇゜)/ 「ウンマンコ」
0870_
NGNG0872デフォルトの名無しさん
NGNGあーごめん逆だ
インサートして一意だったらエクセプション飛ばしてupdate。
insert文とupdate文逆だ。
これだといいんじゃないの?
この書き方って主流かと思って多。
(ある場合は更新、という仕様でokの場合ね。
もちろん更新がメインの処理にはいれられないけど。)
0873デフォルトの名無しさん
NGNGselect into文で変数に値ぶちこむときに
for updateでロックかけることってできましたっけ?
0874デフォルトの名無しさん
NGNG普通SQL%NOTFOUNDか何か使うと思うが・・・
0875デフォルトの名無しさん
NGNG正直、その書き方は知らなかった。
いつもは
SELECT TO_CHAR(SYSDATE,'YYYY') || '年' || TO_CHAR(SYSDATE,'MM') || ・・・・・
などと書いていた(アホまるだし)
お礼といってはなんだが、ORAのマニュアル調べたら
以下のような記述があった。
言葉の使い方(意味合い)をきちんとわかっていれば
ほぼあんたの考え通りで問題ないね。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
日付書式モデルにおける句読点と文字リテラル日付書式モデルでは、次の文字も指定できます。
ハイフン、スラッシュ、カンマ、ピリオド、コロンなどの句読点
文字リテラル(二重引用符で囲みます)
これらの文字は、戻り値の中で書式モデルに指定された位置と同じ位置に現れます。
0877デフォルトの名無しさん
NGNGSELECT TO_CHAR(SYSDATE, 'YYYY''年''MM''月''DD''日''') FROM DUAL;
でいいのでは?
試してないから、できなかったらゴメソ。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG一旦全部セレクトしてプログラムで20件を処理するのは簡単なのですが、
負荷がかかりそうなのでsqlの方で出来てしまえばベストなのですが・・・
0880デフォルトの名無しさん
NGNGこのスレでもかなり既出だが、聞くなら聞くでDBMS名書こうな
0881879
NGNG0882デフォルトの名無しさん
NGNG多分 DBを聞いても、フェッチするしかないという回答になりそうな予感。
0883デフォルトの名無しさん
NGNG← 半角スペース
これが 一番、使用頻度が高いだろう。
二番目は != かもしれない。
0884デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/db/
0885デフォルトの名無しさん
NGNGありがとうございます
0886デフォルトの名無しさん
NGNG【サイタマ】年下男と年下好き女神【大宮】叩き
http://tmp.2ch.net/test/read.cgi/tubo/1056971505/l50
俺達は躍らされていた。犯人はあいつだった。
参加者の衝撃告白!みんな早く来い!
面倒ですがコピペお願いします
0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/db/1057039296/
0889デフォルトの名無しさん
NGNGDBMSによっては SELECT TOP n が、使える。
pgsqlなら LIMIT だな。
ただし、6.5以降が対象だが、いまさらそんなに古くないよな?
0890デフォルトの名無しさん
NGNG(2) FROM 甲 LEFT JOIN 乙 ON 甲.コード = 乙.コード
(3) FROM 甲,乙,丙
(1)のようにテーブルが二つの場合は、(2)のように書けますが、
(3)のようにテーブルが三つの場合はLEFT JOINではどのように
かけばよいのでしょうか?
0891デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/db/1056973582/
ここで聞いてください。
0892デフォルトの名無しさん
NGNGOracleなら、8i 以降であれば、サブクエリーの中で ORDER BY 出来る。
サブクエリーの外で ROWNUM<=20 で取れ。
0893デフォルトの名無しさん
NGNGわかりません。
sp_configure だと、全ユーザーが対象だし、いくら検索をしてみても、これぞ、と
いうものが見つかりません。
すみませんが、どうぞ教えて下さいませ。
0894デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/db/
0895893
NGNG0896デフォルトの名無しさん
NGNGRIGIT JOINを使いましょう。
FROM 丙
RIGIT JOIN 甲 ON 丙.コード = 甲.コード
LEFT JOIN 乙 ON 甲.コード = 乙.コード
0897デフォルトの名無しさん
NGNGこれを外結合(Left/Right/Full Outer)で書き直しちゃだめだよ。
これと同じ結果になるのは 内結合 だから、
(2) FROM 甲 INNER JOIN 乙 ON 甲.コード = 乙.コード
と書いてくんさい。
で、テーブルが 3つ以上あっても続けて書ける。
FROM 甲
INNER JOIN 乙 ON 甲.コード = 乙.コード
INNER JOIN 丙 ON 甲.コード = 丙.コード
先頭から順に評価(結合)されていくよ。結合順を変えたい場合は、
( ) で括ってくんさい。
0898デフォルトの名無しさん
NGNGあほう
>>890
LEFT JOINでいくつでもくっつけられる
0899デフォルトの名無しさん
NGNGCREATE TEMPORARY TABLE hoge(foo autoincrement)
とかけばテンポラリテーブルが作れるように書いてあるのですが、実際に
実行すると構文エラーがでて、"TEMPORARY"の部分が選択された状態に
なってしまいます。
Access2000 では、テンポラリテーブルを利用できないのでしょうか。
文がおかしいようでしたら、正しい文を教えて頂けると有難いです。
0900デフォルトの名無しさん
NGNGA_C int(1) / B_C varchar(60) / C_C varchar(60)
テーブル I200306 (約480万件)
X_C varchar(60) / D_C int(8) / E_C int(5) / F_C date
SELECT S.A_C,S.B_C,S.C_C,I.D_C,I.E_C,I.F_C FROM S200306 S,I200306 I WHERE
S.ID=I.ID AND I.X_C LIKE BINARY '%XXXXX%' ORDER BY I.YMD_C DESC;
30 rows in set (6.09 sec)
SELECT S.A_C,S.B_C,S.C_C,I.D_C,I.E_C,I.F_C FROM S200306 S,I200306 I WHERE
S.ID=I.ID AND I.X_C LIKE BINARY '%XXXXX%' ORDER BY I.YMD_C DESC LIMIT 0,50;
30 rows in set (16.90 sec)
以上のようにクエリの最後にLIMIT 0,50と付けた場合は表示結果が同じであるのに
10秒以上も時間がよけいにかかります。
検索結果が50件以上の場合は検索時間が短縮されますが検索結果50件以内の
場合は上記のようにかなり遅くなってしまうので困っているのですが何か改善策は
あるのでしょうか?
0901デフォルトの名無しさん
NGNG板違い
0902デフォルトの名無しさん
NGNG実行計画を見ては?
0903デフォルトの名無しさん
NGNG命令の仕方教えて下さい
0904デフォルトの名無しさん
NGNGテーブルレイアウトを教えてください
0905デフォルトの名無しさん
NGNGgrantはあるのか??
0906デフォルトの名無しさん
NGNG既に排他がかかっている可能性があるな
0907デフォルトの名無しさん
NGNGまずはログインできるのかが問題だろ?
テーブル領域とか、Grantとか、排他はその後だ。
0908デフォルトの名無しさん
NGNGそれ以前に、本当に対象が存在するのか、が大事だと思うが。ログイン自体できんぞ。
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG翻訳家の指示によりサーバマシンに地域オプション(どうやらフォントのインストール)をしました。
サーバではワードに書かれた中国語が文字化けせず表示できるようになりました。(ワードはテスト用に翻訳家からもらったもの)
で、Webで調べて、MSSQLでデータ型をNvarcharにし、ASPに書いたSQLを「N'中国語'」という風にNをつけました。
ASPのキャラクターセットは、UTF-8 UTF-16 gb-2312と試してみました。が文字化けしました。
ただしASPの画面から中国語の入力テストはワードからのコピペでもしかしたらコピペ元がUnicodeじゃないのでまずいのかなと考えています。
一度URLを教えてその翻訳家に直接ブラウザから入力してもらおうと考えていますが、中国語などを扱った経験のあるかたアドバイスお願いします。
いつも使ってるメーリングリストの過去ログサーバが先日からぶっ飛んでる上に客先からせかされてしまってます。汗
0912911
NGNG0913デフォルトの名無しさん
NGNGサーバは日本語版なの?
SQL Serverは日本語版?
中国語使ったことあるわけじゃないけど、そういう使い方するにはどうしたらよいか
MSにでも聞いてみたら?
まさかそういう確認せずに仕事してるわけじゃないよね?
文字コードを自前で変換かけてUTF-16あたりにそろえておいて、
バイナリとしてSQL Serverに入れることにしておいて、ASPではバイナリを
出力の文字コードに変換するとかしてやれば、なんとなくできる気はするが
やれといわれてもやりたくないな。
0914デフォルトの名無しさん
NGNGそれは、DBレベルではきちんと中国語を扱えているということなの?
ASPがどーしたよりも、まずはそこからきちんとしないとねぇ。
無責任発言スマソ
0916デフォルトの名無しさん
NGNG会社個人共に割れ厨ピーコ厨が多かったんだろうなぁ
ついでに市場独占も狙いか。開発用途のみとはいえ露骨過ぎ
0917デフォルトの名無しさん
NGNG出来ました
はい、中学生に中田氏しますた
やらないか?
これだけでOKでした
0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGtimestamp型で宣言されているフィールドに20000秒を足すような
処理をおこないたいのです。SQLで表現可能?
0920デフォルトの名無しさん
NGNG行き詰っております、どうかご教授お願い致します…。
まず、以下のようなテーブルがあるとして
--TableA メンバー
id|name|
1 |山田|省略
2 |田中|…
3 |小泉|
--TableB 色テーブル
id|color|
1 |c001 |
1 |c002 |
2 |c001 |
3 |c003 |
色テーブルにメンバーの所持(?)している色が入っています。
色コードc001を持っているメンバーを検索した時、
1 |山田|c001|
2 |田中|c001|
がヒットしますが、この時各メンバーのそれ以外の色コードもどうにかして取得したいと思っています。
この場合、山田の残りの c002 です。
一回のSELECTでこれを取得する事は出来るでしょうか?一度のSELECTに拘る訳ではないです。
試行錯誤してみたものの、まるで的外れな方法しか出来ません…。
どうぞお願いします(T.T)
0922デフォルトの名無しさん
NGNG簡単すぎて鼻痔がでそう。
相関名使ってTableBを2回使え。
0923デフォルトの名無しさん
NGNGLIMITを使わない。
SELECT文のオプションはつければつけるほど検索速度が遅く
なります。当たり前ですけれども。
速度を優先するならばこれらのオプションはできるだけ使わず
に自分で処理するのが賢明です。
たとえば、Cの埋め込み型SQLでこのSELECT文を使っている場合
は、最初の50レコード分の(BULK)FETCHして処理をやめるという
ことで対応ができるはずです。
0924デフォルトの名無しさん
NGNGエイリアス(相関名)だけはできない。
>>920
SELECT B.id,A.name,B.color
FROM TableB B,TableA A
WHERE B.id = A.id AND
B.id in (
SELECT id FROM TableB
WHERE color = 'c001'
)
0925デフォルトの名無しさん
NGNG0927920
NGNG有難うございます!!
しかし、私の情報提供不足で本当に申し訳ないのですが…
MySQLを使用している為、サブクエリーは使えないようです。
…と言う場合、ヒットしたidで再検索するしかないでしょうか?
0928デフォルトの名無しさん
NGNGMySQL でできるかとわからんけど...
select TableA.id, TableA.name, TableB2.color
from TableA, TableB as TableB1, TableB as TableB2
where TableA.id = TableB1.id and TableB1.id = TableB2.id
and TableB1.color = 'c001';
id | name | color
-----------------
1 | 山田 | c002
1 | 山田 | c001
2 | 田中 | c001
PostgreSQL 7.2.3 on i386-portbld-freebsd4.7, compiled by GCC 2.95.4 では動作した。
0930デフォルトの名無しさん
NGNGサブクエリ使えなく、一発でもってくるなら
それしか方法はないね。
でも、テーブルのレコード数がカナーリ多くなったときに
2回に分ける、もしくはサブクエリと比べると
結構処理速度がきつくなるかもしれない。
0931920
NGNG有難うございます(>ω<)
ほぼ、希望通りの結果を得る事ができました。
これを参考に、他にも色々な事に応用できればいいと思います。
あとは、プログラムの方で弄くって行きたいと思います。
>>930
現在のところ、それほどデータ数が増える予定はありませんが
今後増える傾向にあれば、再考したいと思います。
MySQLも時期Verでは、サブクエリが使えるようになるらしいので、それまでの辛抱でしょうか。
私、実はつい最近(昨日)正規化について覚えたばかりなんですが
テーブルを結合した場合、これは一時的に全てのパターンのレコードを作成する
ような解釈で良いのかな…?
本当に、ご助言有難うございました。
0932デフォルトの名無しさん
NGNG条件の値が文字列のい場合はシングルコーテーションでくくり
数値型の場合はくくらいないで記述しています
ですが、列の型がわからない場合、数値型も文字列型も関係なく
値をシングルコーテーションでくくって記述するのはまずいでしょうか
Oracle8でNUMBER型に対してシングルコーテーションでくくった記述
のSQLで望むとおりの検索が行えたのですが、これはOracleだけの
機能なんでしょうか
0933山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0934デフォルトの名無しさん
NGNG数値型に対してシングルクオートで括ったWhereを書くと、型の不一致が出るDBMSもある。
つか、事前に列の型が分からないってどういう状況やねん?
0935デフォルトの名無しさん
NGNGSQL文ではどう書けば宜しいのでしょうか?
0936デフォルトの名無しさん
NGNGある日付から1日づつDATEADDし、
ある日付の曜日に対して(DAYNAME=日曜)だったらカウントを
上げある日付までループさせ、カウント値を返すストアドプロシージャ
もしくはファンクションをつくる。
0937デフォルトの名無しさん
NGNG何週間経ったか、なら、
TRUNC( (ある日付 - ある日付) / 7 )
とかで行けるけどな。(for Oracle)
日曜日が何回、はSQL文だけでは無理ぽ。
FUNCTION作れば?
0938935
NGNGありがとうございます。
やはりSQL文だけでは無理ですか、、、、、。
素直にPHPでスクリプト書きます。
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNG('日' は、NLS_PARAMETER によっては 'Sun')
0941940
NGNG0942デフォルトの名無しさん
NGNGTRUNC使ってるから、Oracleだな?
NEXT_DAYって何?
0943935
NGNGうっ、するどい。
0944932
NGNGありがとうございました。
やっぱり、DBMSによっては不一致になるものもあるんですね。
ちなみに、状況は汎用で使うDBアクセス系ツールの作成中です。
*そうそう手抜きはできないか……。
0945デフォルトの名無しさん
NGNGSQL SERVER 2000でTABLE1に
ユーザID 分類1 分類2 日付
M0010 AAA BBB 2003/07/17 15:00
M0010 BBB CCC 2003/07/17 15:50
M0020 AAA BBB 2003/07/18 08:00
M0020 BBB CCC 2003/07/17 10:50
M0050 FFF BBB 2003/07/18 08:00
M0050 WWW CCC 2003/07/17 10:50
M0050 WWW CCC 2003/07/17 12:50
となっていた場合
ユーザID 分類1 分類2 日付
M0010 AAA BBB 2003/07/17 15:00
M0020 AAA BBB 2003/07/18 08:00
M0050 WWW CCC 2003/07/17 12:50
と、データが出現する順番で各ユーザIDの先頭レコードを返すように
クエリを作りたいのですが、こんなことできますでしょうか?
0946デフォルトの名無しさん
NGNG出現する順番がわからない
日付順?
0947デフォルトの名無しさん
NGNGTTSSH、TeraTerm Pro をインストールして、接続までできたんですが、
文字が全く入力出来ないんです。
キーボードの設定が悪いのでしょうか?
どうすれば文字が打てるようになるのか教えて下さい。
0948デフォルトの名無しさん
NGNGそうです。日付時間の若い順です。
関数があればベストなのですが。できないですかね。
0949デフォルトの名無しさん
NGNGSELECT ユーザID,MIN(日付)
FROM hoge
GROUP BY ユーザID.
分類1と分類2も必要なら結合しる。
0950デフォルトの名無しさん
NGNGSqlServerではどのように表現すればいいのか教えてください。
お願いします。
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNGこれではだめなのです。
SQL SERVER 2000でTABLE1に
ユーザID 分類1 分類2 日付
M0010 AAA BBB 2003/07/17 15:00
M0010 BBB CCC 2003/07/17 15:50
M0020 AAA BBB 2003/07/18 08:00
M0020 BBB CCC 2003/07/17 10:50
M0050 FFF BBB 2003/07/18 08:00
M0050 WWW CCC 2003/07/17 10:50
M0050 WWW CCC 2003/07/17 12:50
これ自体もSQLクエリの値でORDER BYしております。
分類1.2を含めたらGROUP BYできないのでは?
0953デフォルトの名無しさん
NGNG未検証。
同一ユーザに同じ日付が複数合ったら知らん。
SELECT h1.* FROM hoge h1
INNER JOIN(
SELECT ユーザID,MIN(日付) AS 日付
FROM hoge
GROUP BY ユーザID) AS h2
ON h1.ユーザID = h2.ユーザID AND h1.日付 = h2.日付
ORDER BY h1.ユーザID
0954デフォルトの名無しさん
NGNGupdateやinsertはどうですか?
一度の複数のテーブルのレコードを変更できたりしますか?
自分でやってみたらダメだったんですが。
0955デフォルトの名無しさん
NGNGだめです
0956デフォルトの名無しさん
NGNGだめです
0957デフォルトの名無しさん
NGNGだめです
0958954
NGNG0959デフォルトの名無しさん
NGNGワロタ
0960デフォルトの名無しさん
NGNGSQLで指定しているのが普通でつか_?
0961デフォルトの名無しさん
NGNGPostgresなら、LIMIT,OFFSETがあるから、SQLで指定するのって楽勝なんだけど、
オラクルとかって、どうするんだろうな。
0962デフォルトの名無しさん
NGNGROWNUMで無理やり
0963デフォルトの名無しさん
NGNG何がやりたいかと言えば、TBLからCD毎に件数の一番多いVLを取得、です。よろしくお願いします。
SELECT a.CD,a.VL FROM
(SELECT CD,VL,COUNT(VL) CNT FROM TBL GROUP BY CD,VL) a,
(SELECT CD,MAX(CNT) MCNT FROM
(SELECT CD,VL,COUNT(VL) CNT FROM TBL GROUP BY CD,VL)
GROUP BY CD) b
WHERE a.CD = b.CD AND a.CNT = b.MCNT
0964932
NGNG#SQLでなければ、できるようなフリーソフトを教えていただいても
#ありがたいのですが
0965デフォルトの名無しさん
NGNGある。
が、DBMSにより方法は異なる。
おまいさんの使ってるDBはなんじゃらほい。
0966デフォルトの名無しさん
NGNGBLOBでググれ
0967964
NGNGBLOB、ぐぐってみましたが、うまくヒットしません。
#うー、キーワードの組み合わせが悪いのだろうか。溺れそうだ。
0968デフォルトの名無しさん
NGNG「BLOB」か「image データ型」で調べてみなよ。
っていうか google でも、ちゃんと該当するよ。
あんた調べる気ないんだろ?
0970デフォルトの名無しさん
NGNGレシートに記載されてる項目を表にした。
<表1>
レシート 日付 時間 商品名 単価 数量 小計 税金 預かり金 お釣
番号
1 2003.6.17 11:30 ホットケーキ 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスコーヒー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGレシートに記載されてる項目を表にした。
<表1>
レシート 日付 時間 商品名 単価 数量 小計 税金 預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
0973デフォルトの名無しさん
NGNGレシートに記載されてる項目を表にした。
<表1>
レシート 日付 時間 商品名 単価 数量 小計 税金 預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
0974デフォルトの名無しさん
NGNG位置がずれていますが、スペースで何とかわかってもらえますでしょうか・・・。
レシート番号、日付、時間、小計、税金、預かり金、お釣りのデータが入ってるのは、
1行目と三行目だけです。
上の続きなのですが、
「問題1」
表1を以下の表2と表3に分解した。
(1)表2、3の主キーを示せ。
(2)この分解は、無損欠結合分解か?
(3)表2、表3は第一正規形か?
<表2>
レシート番号 日付 商品名 単価 数量
1 2003-6-17 ホットコーヒー 300 1
1 2003-6-17 チーズケーキ 300 1
2 2003-6-17 ジンジャエール 300 1
2 2003-6-17 ホットコーヒー 300 1
2 2003-6-17 ハムトースト 400 1
2 2003-6-17 シフォンケーキ 400 1
<表3>
レシート番号 日付 時間 小計 税金 預かり金 お釣り
1 2003.6.17 11:30 600 30 1000 270
2 2003.6.17 12:01 1400 70 2000 530
<問題2>表3は、第三正規形でない。その理由を示せ。
この問題の答えを教えて下さい。お願いします。
(上の二つの表もずれていたらすみません)
0975デフォルトの名無しさん
NGNGレシートに記載されてる項目を表にした。
<表1>
レシート 日付 時間 商品名 単価 数量 小計 税金 預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
0976デフォルトの名無しさん
NGNGもうちょっとで次スレっすね。
0977デフォルトの名無しさん
NGNG問題1
(1)
表2 レシート番号 日付 商品名
表3 レシート番号 日付
(2)
情報無損失分解である。
(3)
表2 第一正規形(繰り返し項目はないが部分キーである「商品名」に「単価」が部分関数従属しているため)
表3 第二正規形(繰り返し項目はない。部分関数従属していない。「お釣」が「小計、税金、預かり金」に対して推移関数従属しているため)
問題2
問題1(2)表3の解説によるため
0978デフォルトの名無しさん
NGNGやべ間違えた。思いっきり
> ●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
てかいてあるじゃん。
問題1
(3)
表3 第二正規形(繰り返し項目はない。部分関数従属していない。「税金」が「小計」に対して推移関数従属しているため)
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNGいいのよ〜。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
これ↑が仕様だ。
0981デフォルトの名無しさん
NGNG早く、次スレ立てろよ?
0982デフォルトの名無しさん
NGNGここじゃだめ?w
SQL質疑応答スレ
http://pc2.2ch.net/test/read.cgi/db/1056973582/
0983デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。