Объедините два запроса SELECT с UNION, один из которых - JOIN - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу объединить два оператора выбора с помощью UNION, но это не работает.

$sql = "SELECT content
    FROM tbl_jokes 
    JOIN tbl_jokes_relationships ON tbl_jokes_relationships.rid_jokes = tbl_jokes.id_jokes
    WHERE tbl_jokes_relationships.rid_jokes_categories ='1'
    ORDER BY id_jokes DESC
    UNION
    SELECT * FROM tbl_jokes 
    WHERE rid_jokes_categories='blondinenwitze'
";

Это не работает, я проверил два select оператора без UNION, и они показывают результаты, которые я хочу, спасибо за помощь

1 Ответ

0 голосов
/ 02 ноября 2018

Вам нужно выбрать одинаковые столбцы. Примерно так:

SELECT j.*
FROM tbl_jokes j JOIN
     tbl_jokes_relationships jr
     ON jr.rid_jokes = j.id_jokes
WHERE jr.rid_jokes_categories = 1
UNION
SELECT j.*
FROM tbl_jokes j
WHERE j.rid_jokes_categories = 'blondinenwitze'

Кажется глупым использовать union для этого, если только это не соответствует некоторой цели производительности:

SELECT j.*
FROM tbl_jokes j LEFT JOIN
     tbl_jokes_relationships jr
     ON jr.rid_jokes = j.id_jokes
WHERE jr.rid_jokes_categories = 1 OR
      j.rid_jokes_categories = 'blondinenwitze';

Обратите внимание, что ORDER BY в подзапросе ничего не делает. Если вы хотите, чтобы результаты были упорядочены, вы должны указать ORDER BY для самого внешнего SELECT.

...