秘密基地、どこに作った?

複数テーブルからLIKE検索を行いたいのですが、うまくいかないので教えてください

■やりたいこと
・一つのキーワードで、MAINテーブル「hoge」カラムと、SUBテーブル「hoge」カラムを検索して、該当したレコードを表示したい

■テーブル構成
・MAIN … 「id」「main1」「hoge」…
・SUB… 「sub_id」「main_id」「sub1」「hoge」…
・1つの「id」に対して、対応する「sub_id」が複数(「id」1は一つだけ。対応する「sub_id」1は複数あります)

■試したこと1
SELECT a.* , r.*
FROM main a
LEFT JOIN sub r ON a.id = r.main_id
WHERE (
a.hoge LIKE '%キーワード%'
OR r.hoge LIKE '%キーワード%'
)
とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」カラムが2つ入ります)

■試したこと2
SELECT a.* , r.hoge as rhoge
FROM main a
LEFT JOIN sub r ON a.id = r.main_id
WHERE (
a.hoge LIKE '%キーワード%'
OR r.hoge LIKE '%キーワード%'
)
とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」と「rhoge」カラムになります)

■試したこと3
FROMで2箇所指定するのかと思ったのですが、
SELECT a.* , r.*
FROM (main a,sub r)
LEFT JOIN r ON a.id = r.main_id
WHERE (
a.hoge LIKE '%キーワード%'
OR r.hoge LIKE '%キーワード%'
)
結果は、#1066 - Not unique table/alias: 'r'になります

■試したこと4
LEFT JOINがいらないのかと思い、削除したら、2件ヒットするはずなのに、たくさんヒットしてしまいます

■質問
欲しいのは、キーワード検索した際、該当カラムにヒットした数だけのレコードなのですが、どうすれば良いのでしょうか?

■例
・東京で検索
・MAINテーブル「hoge」カラム(2レコード)で2ヒット
・SUBテーブル「hoge」カラム(3レコード)で3ヒット
・ヒットした該当5レコードを取得したい

A 回答 (1件)

MAIN、SUBともに1件だとしても、レコードとしては2件抽出したんですよね?


MAINとSUBをそれぞれ独立して抽出するならば、結合などせずUNION ALLすればいいのでは。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
「UNION ALL」知りませんでした。
おかげでうまくいきましたー

お礼日時:2012/10/02 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報