PostgreSQL - 2 оператора SELECT из 2 разных таблиц в 2 столбца? - PullRequest
0 голосов
/ 09 марта 2012

Я задал похожий вопрос вчера, но все еще имел небольшую проблему с выводом. Профсоюзы всегда объединяют его в один столбец, и нет никакого отношения к объединению. Вот что я хочу. Я не хочу комбинировать.

SELECT prd_id FROM products WHERE title LIKE %$var%;

AND

SELECT lst_id FROM lists WHERE title LIKE %$var%;

Я хочу получить оба из них в одном запросе и вывести найденные результаты в 2 столбца, ЕСЛИ есть результат для любого из них. Я также хотел бы использовать LIMIT в конце тоже.

Так, например, если в обеих таблицах есть элемент, который соответствует заголовку, он вернет что-то вроде. Обратите внимание, что значения будут соответствовать значениям в каждой таблице. Смысл в том, чтобы быть в 2 столбцах, а не в одном, как вывод Unions.

+-----------------+  
| prd_id | lst_id |   
+-----------------+   
|  value | value  |   
+-----------------+   

Я подхожу близко, но точно не могу.

Чтобы было понятно, вывод PHP print_r должен выглядеть следующим образом. Этот пример, если 2 элемента соответствуют только в таблице списка

Array ( [0] => Array ( [lst_id] => 100007 ) [1] => Array ( [lst_id] => 100008 ))

Этот пример, если 1 элемент из каждой таблицы соответствует

Array ( [0] => Array ( [prd_id] => 100006 ) [1] => Array ( [lst_id] => 100008 ))

Может быть любое количество совпадений из любой из таблиц.

1 Ответ

1 голос
/ 09 марта 2012

Самый простой ответ - объединить результаты в другой столбец, например:

SELECT prd_id, 0 lst_id FROM products WHERE title LIKE %$var%
UNION ALL
SELECT 0 prd_id, lst_id FROM lists WHERE title LIKE %$var%;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...