Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть две почти одинаковых базы:
Неактивен
1. Как-то Вы странно пользуетесь COALESCE() — он уже сам по себе нужен для
того, чтобы проверять на NULL.
2. Попробуйте мысленно представить себе следующую ситуацию. У Вас есть две
корзины яблок — «красные» и «зеленые».
а. Первая задачка — выбирать по одному яблоку из каждой корзины и приклеить
на каждое из них бирочку «яблоко».
б. Вторая задачка — выбирать по одному яблоку из каждой корзины и приклеивать
на каждое бирочку «яблоко», а потом разложить пары в порядке возрастания
размера того, что подписано, как «яблоко».
Очевидно, что «а» Вы решите легко, а при решении «б» у Вас возникнет когнитивный
диссонанс — Вы можете сортировать или по размеру красных яблок или по размеру
зеленых. А вот по размеру абстрактных яблок — не можете. Так же и MySQL: пока
Вы явно не скажете, по размеру каких яблок ему сортировать, он будет отказываться
это делать (что не мешает ему выдавать и то, и другое за яблоки, пока Вы не пыта-
етесь устраивать сортировки).
Добивайтесь уникальности названий колонки (например, через AS) или явно указывайте,
по колонке какой таблицы нужно сортировать.
Неактивен
paulus написал:
Так же и MySQL: пока
Вы явно не скажете, по размеру каких яблок ему сортировать, он будет отказываться
это делать
почему тогда работает первый запрос?
Неактивен
Потому что колонка status уникальна.
Неактивен
AvtoNom написал:
CREATE TABLE IF NOT EXISTS `news` (..
`status` int(1) default '0', ....
SELECT `news`. * , .... AS `status`
как видно не уникальна
Неактивен
Одна называется `news`.`status`, вторая `status`. Какая по Вашему больше похожа
на `status`?
Неактивен
AvtoNom написал:
Есть две почти одинаковых базы:
CREATE TABLE IF NOT EXISTS `news` (...
`news_inv_id` int(6) default NULL, ...
SELECT `news` . * ,
`news`.`news_id` AS `news_inv_id`
FROM `news`
order by news_inv_id
в чём тогда отличие этого от предыдущего?
то же `news`.`news_inv_id` и `news_inv_id`
Неактивен
Хм, и правда… ну, в любом случае, я бы на месте MySQL и на первый вариант
обиделся
Пишите изначально без допущения неоднозначности, тогда всё будет хорошо.
Неактивен
хорошо. тогда как посоветуешь сделать сортировку? в идеале я думаю мне нужно получить результат выборки который уже был бы не привязан к какой ниб таблице и его сортировать.
Просто я заранее не знаю по полю какой таблице пользователь захочет отсортировать данные.
Неактивен
ORDER BY 1. Будет сортировать по первой колонке.
Неактивен
paulus написал:
ORDER BY 1. Будет сортировать по первой колонке.
мягко говоря, не универсально.
Неактивен
Придумайте универсальный способ выбора столбца в таком запросе:
SELECT a, b as a FROM tablename ORDER BY a;
Как только придумаете — это и будет универсальным ответом на Ваш вопрос.
Неактивен
Страниц: 1