Получение большего количества значений с помощью UNION ALL SQL Query - PullRequest
2 голосов
/ 04 января 2012

Я использую этот запрос для получения результатов из двух таблиц:

SELECT * FROM (
    SELECT parent_id as mID, count(*) as cnt
        FROM wp_forum_posts
        WHERE text LIKE '%{$word}%'
        GROUP by 1
        UNION ALL
            SELECT id, count(*)
            FROM wp_forum_threads
            WHERE subject LIKE '%{$word}%'
            GROUP by 1) x
ORDER BY 2, 1

Я хочу выбрать еще несколько значений из wp_forum_threads. Значения типа subject. Как я могу это сделать? Простое добавление за id не работает. тогда запрос не возвращает результата.

1 Ответ

3 голосов
/ 04 января 2012

Количество столбцов в списке выбора в обеих частях UNION ALL должно быть одинаковым. Это означает, что если, например, вы хотите добавить «субъект» во 2-ю часть запроса, вам необходимо добавить «заполнитель» в 1-ю часть запроса:

    SELECT * FROM (
SELECT parent_id as mID, NULL, count(*) as cnt
    FROM wp_forum_posts
    WHERE text LIKE '%{$word}%'
    GROUP by 1
    UNION ALL
        SELECT id, subject, count(*)
        FROM wp_forum_threads
        WHERE subject LIKE '%{$word}%'
        GROUP by 1) x
ORDER BY 2, 1

это должно работать.

...