Запрашивая MySQL с помощью UNION, я получаю сообщение об ошибке в одном из выбранных столбцов.
Запрос работает просто отлично, как:
$query = '(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';
$r = mysql_query($query) or die(mysql_error());
но не сработает, если я попытаюсь потянуть колонку. Все таблицы в базе данных используют столбец с именем. Я получаю эту ошибку: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'on, type, image, rating, date2, num_votes FROM videos) UNION (ВЫБЕРИТЕ contentty' в строке 1
Пример добавления мной запроса:
$query = '(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, on, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';
$r = mysql_query($query) or die(mysql_error());
Не имеет смысла для меня. Почему это произошло?
2 ответа
Избежать on
поле, поскольку это одно из зарезервированных ключевых слов MySQL
$query = '(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10';
ON
является зарезервированным ключевым словом в MySQL. Цитирование это должно работать. То есть:
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM videos)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM games)
UNION
(SELECT contenttype, id, title, type, `on`, image, rating, date2, num_votes FROM pics)
ORDER BY date2 DESC
LIMIT 10