Захватить строки из нескольких таблиц как один результат? - PullRequest
1 голос
/ 07 октября 2008

У меня есть 2 таблицы. В Table1 есть поля A, B, C, D, а в Table2 есть поля A, B. Поля A и B обеих таблиц имеют одинаковый тип записи. Я хотел бы получить записи из обеих таблиц полей A и B как один результат.

Есть ли какой-либо запрос или функция в PHP + MySql?

Спасибо ...

Ответы [ 3 ]

8 голосов
/ 07 октября 2008

В SQL есть предложение объединения, которое делает то, что вы хотите:

select a,b from table1
    where <where-clause>
union all select a,b from table2
    where <where-clause>

или, если вы хотите, чтобы все поля (пробелы для таблицы2):

select a,b,c,d from table1
    where <where-clause>
union all select a,b,' ' as c,' ' as d from table2
    where <where-clause>

Пробелы во втором запросе, возможно, придется расширить, чтобы соответствовать размерам полей для c и d.

7 голосов
/ 07 октября 2008

Я предполагаю, что MySql делает это:

выберите a, b из таблицы 1, где your_criteria = test_value союз выберите a, b из таблицы 2, где your_criteria = test_value

5 голосов
/ 07 октября 2008

Решение для объединения подтверждено в версии MySQL Server: 5.0.51a-3ubuntu5.1 (Ubuntu)

create database foo;
create table bill(a int, b varchar(10));
create table ted(a int, b varchar(10), c datetime, d boolean);
insert into bill values (10, 'foo'), (20, 'bar');
insert into ted values (5, 'splot', now(), true), (10, 'splodge', now(), false);
select a,b from bill where a<=10 union select a,b from ted where a<=10;
+------+---------+
| a    | b       |
+------+---------+
|   10 | foo     |
|    5 | splot   |
|   10 | splodge |
+------+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...