0

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

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

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

4

2 に答える 2

1

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

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
于 2012-01-02T22:14:21.987 に答える
0

IDとparent_IDがテーブル内で重複していないと仮定します。そうでない場合、IDごとに2行を取得できます...その場合、parent_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
于 2012-01-02T22:03:18.723 に答える