• 締切済み

文字検索、列をまとめたい

以下のようなテーブルで「test_id」ごとに文字列(contents)をまとめたいのです。 [テーブル1] test_id | name 1 山田 2 佐藤 3 鈴木 [テーブル2] id | test_id | contents 1 1 東京は晴れです。 2 1 電車です。 3 2 埼玉は晴れです。 4 3 電車です。 検索処理でテーブル1と2を結合しの「name」を表示します。 contentsが「東京」「電車」でand検索をすると0件になり、or検索をすると3件(名前は2人)ヒットするのですが、 「東京」「電車」としたときtest_idの「1」をヒットさせたいのです。 test_idをgroup byでsum(数値)のように文字列を指定するには どのようにすればいいのでしょうか。concatを使ってみたのですが、 (contentsのみを指定したから?)結果は得られず、わかりませんでした。 $sql="SELECT id,test_id,concat(contents), FROM テーブル1 as t1 left join テーブル2 as t2 on t1.test_id=t2.test_id where $where group by t2.Itest_id"; MySQL:4.0.27です。 よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

見る限りテーブル1は関係ないのでは? こんなんでどう? SELECT DISTINCT `T2-1`.`test_id` FROM `テーブル2` AS `T2-1` INNER JOIN `テーブル2` AS `T2-2` ON `T2-1`.`test_id`=`T2-2`.`test_id` AND `T2-1`.`contents` LIKE '東京%' AND `T2-2`.`contents` LIKE '電車%'

mpban
質問者

お礼

yambejpさんありがとうございました。 上記を試させていただいたところ、期待した結果は得られました。 ありがとうございました。 また説明が足りなかったのですが、「東京」「電車」などの検索文字列は、 他のページで検索フォームに入力された値をもとにしています。 ですので2つ以上の場合等はさらにテーブルを結合するのかなと思いやってみたところできたのですが、 増やす方法でいいのかわかりませんでした。 テーブル1は検索には関係ないですが、名前を表示したいので使っています。