Подтвердить что ты не робот

Выбор Mysql из двух таблиц

Может ли кто-нибудь сказать мне, как выбирать данные из двух таблиц, без необходимости использовать join?

Что-то вроде этого:

SELECT t1.*, 
       t2.*
  FROM table1 t1, 
       table2 t2

Разъяснение

У меня эти две таблицы, которые имеют одинаковые поля. IE: table1 содержит данные с 2011 года, а table2 содержит данные в 2012 году. Я хочу получить их все.

Дальнейшие разъяснения:

Желаемый результат может быть получен:

(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions tr
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '') 
UNION 
(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions_bk_2012 tr 
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '')

и OP хочет посмотреть, есть ли альтернативные способы ускорить это ( "Я пытался использовать UNION между этими запросами, но скорость запроса заняла 0.1887 секунд, это немного медленнее." )

(@Jetoox: если это не ваше намерение, отредактируйте свой вопрос и уточните).

4b9b3361

Ответ 1

Просто поставьте условие соединения в предложение WHERE:

SELECT t1.*, t2.*
FROM table1 t1, table2 t2
WHERE t1.id = t2.t1_id

Это внутреннее соединение.

UPDATE

Посмотрев на ваши запросы: в этом конкретном случае нет связи между tbl_transactions и tbl_transactions_bk_2012 (т.е. присоединение их к person_key бессмысленно, потому что между двумя таблицами нет отношения к способу, который (скажем) tbl_transactions и лица связаны).

Затем вы должны использовать подход UNION. Попытка присоединиться к первому запросу ко второму, используя JOIN или FROM xx, yy WHERE xx.id=yy.id, не имеет смысла и не даст вам нужных результатов.

Кстати, в будущем поместите ваш текущий запрос/попытку в свой пост - как вы можете видеть, это помешает вам получить ответы, которые не подходят для вашего вопроса (как была моя первая попытка).

Ответ 2

Вы хотите UNION.

Ответ 3

select t1.*, t2.* from table1 t1, table2 t2
where t1.fkey = t2.pkey

Ответ 4

select t1.* , t2.*
from t1, t2 where t1.id=t2.id;

Ответ 5

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