mysql выбирает данные из двух таблиц и разной структуры


Привет, я создаю своего рода повестку дня/веб-сайт с php/mysql. В этой повестке дня есть публичные мероприятия и личные заметки пользователей, упорядоченные по дате. Мне нужно загрузить все события из ТАБЛИЦЫ СОБЫТИЙ в базе данных и заметки из ТАБЛИЦЫ ЗАМЕТОК. Но эти две таблицы имеют совершенно разную структуру, и у них просто одно и то же поле: ДАТА и ВРЕМЯ.

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

Пожалуйста, помогите мне! =) спасибо, Лука

Author: luca, 2011-02-17

2 answers

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

SELECT  'events' As Tbl,
        datetime,
        location,
        organizer,
        NULL as notes
FROM    events
UNION
ALL
SELECT  'user_notes' As Tbl,
        datetime,
        NULL,
        NULL,
        notes
FROM    user_notes
ORDER
BY      datetime DESC
 2
Author: The Scrum Meister, 2011-02-17 18:53:29

Используйте UNION ALL с двумя запросами. Запрос каждой таблицы будет содержать только NULL во всех столбцах для другой таблицы. Например:

SELECT  'event' as type,
        datetime,
        location,
        organizer,
        NULL as notes
FROM    events
UNION
ALL
SELECT  'user_note',
        datetime,
        NULL,
        NULL,
        notes
FROM    user_notes
ORDER
BY      datetime DESC

Поле типа может быть строкой или целым числом, чтобы легко отличить, из какой таблицы взята строка.

 2
Author: Don Kirkby, 2011-02-17 23:05:56