2014-01-05 3 views
1

У меня есть 2 запросов для таблиц 2MySql присоединения 2 запросов без общего поля

select something,something2 from database.table1 where id=1 

select something from database.table2 where id=2 

Как я могу присоединиться результаты от этого 2 запросов?

Мне нужно это, потому что я хочу получить результаты всего за 1 mysqldatareader.

Редактировать: 2 запроса не имеют равного количества столбцов. Извините

Заранее спасибо.

+0

Присоединяйтесь к ним с использованием союза –

+0

выбрать комментарии имеют разное количество столбцов/ – xitnesscomplex

+0

Вам может понадобиться, чтобы выбрать пустые поля, поэтому столбцы выравниваются –

ответ

-1

Если имеется одинаковое количество столбцов и они содержат одни и те же типы данных, вы можете использовать «СОЮЗ» для их объединения.

select something from database.table1 where id=1 
UNION 
select something from database.table2 where id=2 

http://dev.mysql.com/doc/refman/5.0/en/union.html

+0

use select comments имеет различное количество столбцов – xitnesscomplex

+0

Вы можете уменьшить выбор столбцов в таблице с большим количеством столбцов. Соответствуют ли типы данных? –

+0

'UNION' не присоединяется. –

-2

если у вас есть разное количество столбцов затем добавить дополнительные столбцы в нуль для таблицы, имеющей меньше столбцов, как

Select Col1, Col2, Col3, Col4, Col5 from Table1 
Union 
Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2 

Reference

+0

причина внизу. см. это http://stackoverflow.com/questions/2309943/unioning-two-tables-with-different-number-of-columns – Zeeshan

+0

Я не сделал ни одного другого, что вы сделали. В то же время тестирование вашего ответа – xitnesscomplex

+0

+1. Технически даже вам не нужно иметь псевдоним нулей, поскольку имена столбцов из первого 'SELECT' в' UNION' будут использоваться для всего набора результатов, а последующие значения будут размещаться там, где они появляются, по порядковой позиции. Нули могут быть вставлены в любую позицию, в которой они нужны. –

-2

Ваш стол не равное поле , поэтому вы не можете использовать UNION , так что это может вам не помочь:

(select clm1 from database.table1 where id=1) 
    UNION 
    (select clm2 from database.table2 where id=2); 

но, возможно, это ваш ответ:

SELECT t1.*,t2.* from table1 as t1,table2 as t2 where t1.id=1 AND t2.id=1; 
+0

'СОЮЗ' не присоединяется. –

-1

Есть много способов объединения таблиц. Вы не уточнили, какой результат вы ожидаете. Таким образом, я думаю, декартово произведение:

SELECT t1.something, t1.something2, t2.something 
    FROM table1 t1, table2 t2 
    WHERE t1.id=1 AND t2.id=2; 

Это будет выбрать один кортеж, как это:

("something from t1", "something2 from t1", "something from t2") 
+0

Маркус, вы не смогли правильно прочитать вопрос. Возможно, в следующий раз перед тем, как опросить всех, у кого есть хорошее понимание прочитанного, вы можете перечитать вопрос, чтобы убедиться, что знаете, что происходит. ОП специально пытался присоединиться к РЕЗУЛЬТАТАМ, а не ТАБЛИЦАМ. Это именно то, для чего СОЮЗ. –

+0

Не могли бы вы объяснить, почему вы считаете, что существует разница между таблицами и наборами результатов? В [моем понимании] (http://en.wikipedia.org/wiki/Relational_algebra) нет никакой разницы в операции соединения. –

+0

Ну, если у меня есть таблица с 10 полями, и я выбираю только 3 из них, это мои результаты, а не таблица. Вы можете увидеть разницу здесь ... http://www.sqlfiddle.com/#!2/07d5f/4 –

Смежные вопросы