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

【MySQL 4.1】

[table p]
p_id
――
5
8

[table a]
a_id | p_id | text_field
――――――――
1 | 5 | あいうえお
2 | 5 | かきくけこ
3 | 8 | かきくけこ

[table b]
b_id | p_id | text_field
――――――――
1 | 5 | さしすせそ
2 | 8 | たちつてと

====================

table pは、親テーブルで、table aとtable bは子です。

この状態で、
"き"
かつ
"く"
かつ
"す"
かつ
"せ"
が子供のテーブルのtext fieldに含まれるp_idをSELECTしたいと思います。
(考え方が難しいのですが、求める答えは5のみです)

SQL文をお願いします。

●質問者: caster777
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:FIELD MySQL SELECT SQL あいうえお
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cicupo
●60ポイント

下記のものでいかがでしょうか。

SELECT
 p.p_id
FROM
 p,
 (SELECT p_id, Group_Concat(text_field Separator '') AS text_field
 FROM (SELECT * FROM a UNION SELECT * FROM b) AS temp1
 GROUP BY p_id) AS temp2
WHERE
 p.p_id = temp2.p_id AND
 text_field LIKE '%き%' AND
 text_field LIKE '%く%' AND
 text_field LIKE '%す%' AND
 text_field LIKE '%せ%'
;

この例だとテーブル p を使う必要はないのですが、あえて JOIN しています。実際にはテーブル p には他のカラムが入っていて、それも使いたいと考えられるからです。

(mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2)

◎質問者からの返答

おお!すごい。

何度考えても出口が見えなかったので、別の方法を考え出していました。

ありがとうございます。

Group_Concatというのを知りませんでした。

早速試してみます。

関連質問


●質問をもっと探す●



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