人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLについて質問です。

テーブルに含まれている文字を探して、カウントしたいと考えています。

例えば 2つのテーブルがあり

テーブル1: TEST1

項目: KOUMOKU1


テーブル2: TEST2

項目: KOUMOKU1 KOUMOKU2 KOUMOKU3


例えばテーブル1の KOUMOKU1 に

一行目:りんごは果物である

二行目:りんごは果物で赤色をしている

三行目以降:・・・・・・・

という文字データが入っているとします。

テーブル2の一行目には

KOUMOKU1に りんご KOUMOKU2に 果物 という文字が入っているのですが

SQL命令を実行すると

KOUMOKU1のりんごとKOUMOKU2の果物が入っている文字列がテーブル1のKOUMOKU1にいくつあるのか?というのをカウントして この場合は テーブル2の一行目のKOUMOKU3に

りんご 果物 2 という数字が入ります。

上記のような命令をDBで行いたいのですがそのような事は可能でしょうか?

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:dB SQL りんご カウント データ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● komamitsu
●60ポイント

こんなんでどうでしょう。

mysql> select * from test1;
+--------------------------------------------------------------------+
| koumoku1 |
+--------------------------------------------------------------------+
| りんごは果物で赤色をしている | 
| りんごは赤色をしている | 
| みかんは果物である | 
| みかんは果物でオレンジ色をしている | 
| オレンジ色のみかんが売られている | 
| オレンジ色のみかんがりんごと共に売られている | 
| りんごは果物である | 
+--------------------------------------------------------------------+
7 rows in set (0.00 sec)

mysql> select * from test2;
+-----------+-----------------+----------+
| koumoku1 | koumoku2 | koumoku3 |
+-----------+-----------------+----------+
| りんご | 果物 | 0 | 
| みかん | オレンジ色 | 0 | 
+-----------+-----------------+----------+
2 rows in set (0.00 sec)

mysql> UPDATE test2 SET koumoku3 = (
 -> SELECT COUNT(*) FROM test1
 -> WHERE test1.koumoku1 LIKE CONCAT('%', test2.koumoku1, '%') 
 -> AND test1.koumoku1 LIKE CONCAT('%', test2.koumoku2, '%')
 -> )
 -> ;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0

mysql> select * from test2;
+-----------+-----------------+----------+
| koumoku1 | koumoku2 | koumoku3 |
+-----------+-----------------+----------+
| りんご | 果物 | 2 | 
| みかん | オレンジ色 | 3 | 
+-----------+-----------------+----------+
2 rows in set (0.00 sec)
◎質問者からの返答

とても丁寧にご回答ありがとうございます^^。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ