2012-01-02 3 views
0

私は2つのSQLテーブルを検索するこのクエリを持っています。私は発生の結果を並べ替える方法を探しています。これは私の質問です:2つのテーブルで検索し、用語の出現順に並べ替えます。

SELECT `parent_id` 
FROM wp_forum_posts 
WHERE text LIKE '%{$term1}%' 
UNION 
SELECT `id` 
FROM wp_forum_threads 
WHERE subject LIKE '%{$term1}% 

結果を得るための最良の方法はどれですか?

+0

テーブルに関係なく? – xQbert

答えて

1

トリックその結果から選択し、(通常UNIONは重複を除去する)重複を保持れ、UNION ALLを使用する最初のものです。このクエリはそれを行う必要があります:

select * from (
    select parent_id as mID, count(*) as cnt 
    from wp_forum_posts 
    where text like '%{$term1}%' 
    group by 1 
    UNION ALL 
    select id, count(*) 
    FROM wp_forum_threads 
    where subject like '%{$term1}% 
    group by 1) x 
order by 2, 1 
0

IDとparent_IDはテーブル内で重複していないと仮定します。そうしないと、IDごとに2行を取得できます。親IDとIDが関連付けられていれば、合計したいでしょうか?

Select mID, cnt 
FROM 
(SELECT `parent_id` as mID, count(`parent_ID`) as cnt 
FROM wp_forum_posts 
WHERE text LIKE '%{$term1}%' 
Group by `parent_ID` 
UNION 
SELECT `id`, count(`id`) as cnt 
FROM wp_forum_threads 
WHERE subject LIKE '%{$term1}% 
GROUP BY `id`) 
Order by cnt ASC, mID 
+0

はい、idとparent_idは同じ値です。 – user998163

関連する問題