SQL объединяет 2 одинаковые таблицы - PullRequest
0 голосов
/ 01 сентября 2009

У меня есть две таблицы, которые используются для хранения сведений о различных типах событий. Таблицы практически идентичны, с такими полями, как дата, продолжительность и т. Д. Я пытаюсь выполнить объединение двух таблиц и отсортировать их по взаимному полю «дата».

Я знаю, что было бы проще просто добавить поле 'type' в одну таблицу и сохранить все это в одном месте, к сожалению, природа используемых мной cms не позволяет этого.

Есть ли способ выполнить это просто? Следующий запрос не возвращает результатов.

$sql = "SELECT * FROM Events_One a, Events_Two b WHERE a.Date > now() OR b.Date > now() ORDER BY Date ASC LIMIT ".$limit;

Ответы [ 3 ]

3 голосов
/ 01 сентября 2009

Вы должны посмотреть на UNION заявление. Он делает именно то, что вам нужно.

SELECT columns FROM t1
UNION
SELECT columns FROM t2

дает вам один набор, который вы можете позже отфильтровать или отсортировать по вашему желанию.

1 голос
/ 01 сентября 2009

Если у вас есть таблица для каждого типа события с одинаковыми полями для каждого, я бы сказал, что вам следует пересмотреть свой дизайн. Это нарушает правила нормализации. Это плохой дизайн, потому что он заставляет вас добавлять другую таблицу каждый раз, когда появляется новое событие. Лучше, если вы можете добавить новое событие, добавив данные, например, значение нового типа, в существующую таблицу.

0 голосов
/ 01 сентября 2009

Если вы хотите объединить две одинаковые таблицы, вы можете использовать Union или union all

Объединение: это как команда объединения. При использовании объединения все выбранные столбцы должны иметь одинаковый тип данных. Выбираются только разные значения.

Объединение всех: это почти как объединение. Отдельной операции нет, поэтому она будет принимать все значения.

select  * FROM Events_One a   WHERE a.Date > now() 
union 
select  * FROM Events_Two b   WHERE b.Date > now()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...