SQL質疑応答スレ 8問目 at DB
[2ch|▼Menu]
727:NAME IS NULL
09/07/29 20:18:59
一時テーブルかなー

728:725
09/07/29 22:29:26
ありがとうございます。
一文中では無理な感じでしょうか。
SELECTしか使えない環境なので、一文でなんとかしたかったのです。
PostgreSQLなのですが、DBMSはよく分かりません。


729:NAME IS NULL
09/07/29 22:32:00
SELECTしか使えない環境・・・? Accessか何かか?

730:NAME IS NULL
09/07/29 22:53:12
そこでSQLインジェクションですよ

731:NAME IS NULL
09/07/30 00:03:16
内容によってはなんかできるかもしれないけど、それだけだとちょっと難しいよね

732:NAME IS NULL
09/07/30 01:38:14
>>728
PostgreSQLは最新の8.4からWITH句をサポート

733:NAME IS NULL
09/07/30 02:25:50
初めて質問するので書き方が間違っていたらごめんなさい。

・MySQL 4.1


maintable
mid | field1 | field2
---------------
5 | 2 | 4
6 | 1 | 5
  ・
  ・
  ・

subtable
sid | tema
----------
1 | その1
2 | その2
3 | その3
4 | その4

field1=sid,field2=sidとして結合なり置換して

mid | tema1 | tema2
-------------------
5 | その2 | その4
6 | その1 | その5
   ・
   ・
   ・

としてselectすることはできるのでしょうか。どうかよろしくお願いします。

734:NAME IS NULL
09/07/30 03:10:34
>>733
SELECT T1.mid,T2.tema,T3.tema
FROM maintable AS T1
LEFT JOIN subtable AS T2 ON T1.field1=T2.sid
LEFT JOIN subtable AS T3 ON T1.field2=T3.sid;

735:nanasi
09/07/30 06:17:30 suQVAKTQ
URLリンク(kakaku.com)
都会系、受信局2km範囲。
光など不要。\
7ヵ月後2万円キャッシュバックって偉くない? ちなみにおいらは@nifty
何処かの糞みたいに高いプロバイダーが不要やねん。
 この世の中に。
 書類利用規約審査義務違反。あの画像さあ? 
 もっと改め直して?なっ?
書類不正利用規約義務違反 こっちそっちの手引きで免許証の裏に住所書いて、警察署でおしかり受けたがな。
なんで俺がそんなん喰らわなあかんねん?ヘボプロバイダーO○N。

736:NAME IS NULL
09/07/30 11:05:29 72K2TDMo
ほんと基本的な質問ですみませんが、テーブル定義書において、タイプ記述方法を調べたいのです。
CHAR,NUMERIC,DECIMALなどを書く方法もありますが、それ以外の方法(特に今回知りたいのは0,S,A,Oと書く方法)について、
教えていただけないでしょうか。
サイトの紹介でも結構です、よろしくお願いいたします。

737:NAME IS NULL
09/07/30 12:01:17
回答またはアドバイスをお願いいたします。
長文ですみません。

MySQLを使用しています。

[テーブルの項目]
・ID(主キー):数値(AUTO_INCREMENT)
・KEYWORD:文字列
・USER_ID:数値
・ENABLE_FLG:有効/無効設定フラグ (TRUE/FALSE)

[前提]
・ユーザはキーワードをデータベースにいくつでも登録できる。
・ユーザはそれぞれのキーワードに対して、有効/無効を設定できる。
・同じキーワードを別のユーザが登録することができる。
・1人のユーザが同じキーワードを2つ以上登録することはできない。

[取得したい情報]
・指定した複数のキーワードを全て登録しているユーザ(USER_ID)を知りたい。(AND検索)
(キーワードが有効になっていることが条件)
・条件を満たしている全てのUSER_IDを取得する。

検索するキーワードが'AA'と'BB'の場合は
↓のようになりますよね?

SELECT USER_ID FROM KEYWORD_TBL
WHERE KEYWORD == 'AA' AND ENABLE_FLG == 'TRUE'
AND USER_ID IN
(SELECT USER_ID FROM KEYWORD_TBL
WHERE KEYWORD == 'BB' AND ENABLE== 'TRUE');

キーワードが3つ以上だった場合(AA,BB,CC)は、
WHERE句と副問い合わせを伸ばすしかないでしょうか?
'AA','BB','CC'を登録してあるUSERを選ぶ、
という処理のスマートな書き方を教えてください。

738:NAME IS NULL
09/07/30 12:11:48
select user_id from keyword_tbl where keyword in ('AA', 'BB', 'CC')
group by user_id having count(*) = 3
とか?
実際に確認してないけれども。

739:NAME IS NULL
09/07/30 16:28:37
>>738
なるほど!その手がありましたか。
参考になりました。ありがとうございます。

740:NAME IS NULL
09/07/30 18:21:49
MySQLで、ある数値がカンマ区切りで数値の入っているフィールド
nums(text型)に含まれるかを判断するWHERE文を書きたいのですが、
どう書いたら良いでしょうか。
ANDで絞り込み条件として使いたいのですが、思いつきません。

イメージとしてはこんな感じです(128がnumsに含まれるレコード抽出)。

SELECT * FROM test WHERE 128 IN(nums);

どうか知恵をお貸しください。

741:NAME IS NULL
09/07/30 18:46:34
>>740
SELECT * FROM test WHERE nums REGEXP concat('(^|,','128','(,|$)');
かな? 自信なし。

742:NAME IS NULL
09/07/30 18:48:26
書き込んでから気づいた。直書きならわざわざconcatで連結する必要ないな。
nums REGEXP '(^|,)128(,|$)';

743:NAME IS NULL
09/07/30 20:57:26 EY3peTrf
postgreSQLで、
日付の差分を値の補正に使いたいのですが、
日付の差分を値に掛けると XXXX day みたいな日数表示になってしまいます。
この日数型を整数にするにはどうすればいいでしょうか。

744:NAME IS NULL
09/07/30 21:21:46
>>743
EXTRACT(DAY FROM INTERVAL型)

745:743
09/07/30 21:22:24
調べたらextractというのがありました。
(extract(year FROM age(日付1,日付2)) * 365) +
(extract(month FROM age(日付1,日付2)) * 31) +
(extract(year FROM age(日付1,日付2)))
これに月の日数と閏年の判定をいれれば、ゴリ押しでとれなくもないですが。。。

746:743
09/07/30 21:31:47
>>744
extract(day FROM (日付1-日付2)) で日数とれました。
ありがとう。

747:740
09/07/30 21:36:55
>>741-742
早速のレス有難うございます。
レスが遅くなり申し訳ありません。

ただいま確認したところ、期待通りに動きました。
大変助かりました。有難うございました。


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

5314日前に更新/207 KB
担当:undef