2012-01-21 6 views
0

私は2つのテーブルからデータを取り出す私のサイトの簡単なフォーラム検索を行っています。それは両方のテーブルに用語を見つけた場合には、重複を引っ張っています単純な検索でのSQLのダブルレコード

SELECT ft.id, ft.title, ft.date 
    FROM forum_topics ft 
    WHERE ft.title LIKE '%" .$search. "%' OR ft.body LIKE '%" .$search. "%' 
UNION SELECT fr.topic, ft.title, fr.date 
    FROM forum_replies fr 
    INNER JOIN forum_topics ft ON fr.topic=ft.id 
    WHERE fr.body LIKE '%" .$search. "%' 
ORDER BY date DESC 

結果のidが同じであれば、それは文句を言わない重複したレコードを表示して、どのように私はそれを作ることができます。

答えて

0

あなたは別の選択でUNIONをラップしてみてください、そしてすべての列にGROUP BYを追加することができます。

SELECT g.id, g.title, g.date 
FROM (
    SELECT ft.id, ft.title, ft.date 
    FROM forum_topics ft 
    WHERE ft.title LIKE '%" .$search. "%' OR ft.body LIKE '%" .$search. "%' 
    UNION 
    SELECT fr.topic as id, ft.title, fr.date 
    FROM forum_replies fr 
    INNER JOIN forum_topics ft ON fr.topic=ft.id 
    WHERE fr.body LIKE '%" .$search. "%' 
) g 
GROUP BY g.id, g.title, g.date 
ORDER BY g.date DESC 
0

あなたは(上記のクエリ)FROM SELECT DISTINCT ID、タイトル、日付でそれをラップすることができます。

また、select-from-ftのWHERE句に、idがfrに存在しない行を追加することもできます。

関連する問題