MYSQL запрашивает две таблицы с разными полями
Вот мой поисковый запрос, который выдает ошибку аргумента.
Что мне нужно сделать, чтобы исправить это. По сути, мне нужно собрать обе эти таблицы вместе и извлечь следующие 5 событий из двух таблиц start
Дата. Вы также заметите, что последнее поле в каждой таблице отличается друг от друга.
$CEsql = mysql_query("
SELECT id, title, start, end, allDay
FROM calendar
WHERE mem_id='$logOptions_id'
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
UNION ALL
SELECT id, title, start, end, allDay
FROM team_calendar
WHERE team_id IN ($team_array)
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
ORDER BY start ASC LIMIT 5");
Я использую MYSQL 5.0 и PHP.
Обновить
mysql_error
дисплеи:
1267: Неверное сочетание параметров сортировки для операции "СОЮЗ"
2 ответа
Запустите операторы SHOW CREATE TABLE для обеих таблиц. Найдите различия между двумя таблицами, проверьте кодировки и параметры сортировки, как предложил Leap Bun. Затем вы можете изменить поле charset/collation или просто попробовать использовать предложение COLLATE в вашем запросе SELECT. Что-то вроде этого -
SELECT id, title, start, end, allDay
FROM calendar
WHERE mem_id='$logOptions_id'
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
UNION ALL
SELECT id,
title COLLATE collation_name AS title, -- write your collation here
start, end, allDay
FROM team_calendar
WHERE team_id IN (1,2)
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
ORDER BY start ASC LIMIT 5
Пожалуйста, проверьте в ГДЕ пункт. Используйте mem_id, а не id2. id2 это просто псевдоним, а не имя поля.
$CEsql = mysql_query("
SELECT id, title, start, end, allDay, mem_id as id2
FROM calendar
WHERE mem_id='$logOptions_id'
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
UNION ALL
SELECT id, title, start, end, allDay, team_id as id2
FROM team_calendar
WHERE team_id IN ($team_array)
AND start >= DATE_SUB( CURDATE( ) ,INTERVAL 0 MONTH )
ORDER BY start ASC LIMIT 5");