Проблем с where clause в MySQL
5 отговора
389 прегледа
Проблем с where clause в MySQL
Здравейте,
Имам таблица, в която има date колона, казваща се start. В нея винаги се съхраняват дати от последователни години. Искам да извадя всички редове с по-ниската година.
Досега съм измислил следното:
select min(year(start)) as minyear, start, description from calendar where year(start) = minyear;
но получавам грешка unknown column in where clause.
Къде греша и какво мога да направя по въпроса?
Предварително благодаря!
Ники
Имам таблица, в която има date колона, казваща се start. В нея винаги се съхраняват дати от последователни години. Искам да извадя всички редове с по-ниската година.
Досега съм измислил следното:
select min(year(start)) as minyear, start, description from calendar where year(start) = minyear;
но получавам грешка unknown column in where clause.
Къде греша и какво мога да направя по въпроса?
Предварително благодаря!
Ники
Какво е "последователни" години
Може би трябва да напишеш някаква част от таблицата - за пример.
Re: Какво е "последователни" години
Част от датите:
2004-05-17
2004-06-19
2005-11-06
2005-11-19
Демек сега има само дати с 2004 и 2005. Догодина ще има само данни с 2005 и 2006, и т.н.
2004-05-17
2004-06-19
2005-11-06
2005-11-19
Демек сега има само дати с 2004 и 2005. Догодина ще има само данни с 2005 и 2006, и т.н.
Re: Проблем с where clause в MySQL
minyear не е колона.
пробвай нещо като:
select min(year(start)) as minyear, start, description from calendar where year(start) = min(year(start)) ;
Обаче
аз бих пробвал нещо с Now ебаси. примерно
where year(start) = year(NOW);
Аре
пробвай нещо като:
select min(year(start)) as minyear, start, description from calendar where year(start) = min(year(start)) ;
Обаче
аз бих пробвал нещо с Now ебаси. примерно
where year(start) = year(NOW);
Аре
Редактирано от Иpъпшънa на
Re: Проблем с where clause в MySQL
Имаш 2 проблема в заявката ;-)
Освен unknown column in where clause след това ще имаш
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Я си уточни какво точно искаш да направиш с заявката и тогава ще ти е ясно и на теб и на сървъра ;-)
Или поне на нас, че да ти помогнем да я натвориш ;-)
П.С. Става дума, че аз лично не разбирам това :
Искам да извадя всички редове с по-ниската година
Какво значи по-ниската година ? По-ниската година на кого, на кое и защо ?
Защо просто не си ги ордернеш по year(start) асцендинг с LIMIT 1?
В смисъл :
SELECT year(start) AS minyear, start, description FROM calendar ORDER BY year(start) asc LIMIT 1
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Освен unknown column in where clause след това ще имаш
Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
Я си уточни какво точно искаш да направиш с заявката и тогава ще ти е ясно и на теб и на сървъра ;-)
Или поне на нас, че да ти помогнем да я натвориш ;-)
П.С. Става дума, че аз лично не разбирам това :
Искам да извадя всички редове с по-ниската година
Какво значи по-ниската година ? По-ниската година на кого, на кое и защо ?
Защо просто не си ги ордернеш по year(start) асцендинг с LIMIT 1?
В смисъл :
SELECT year(start) AS minyear, start, description FROM calendar ORDER BY year(start) asc LIMIT 1
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re:х Хайде да хрълим по един боб ..
.. и да погадаем.
Понеже на никого не е ясно какво се опитваш да направиш аз ще взема та да предхоложа, че искаш висчки редове от лани. (т.е. от миналата година - това за тези дето са забравили български)
SELECT start, description FROM calendar
WHERE start < DATE_FORMAT(NOW(), '%Y-01-01');
Забележи, че това може да използва и индекс върху (start)
salle.online.bg/sig
Понеже на никого не е ясно какво се опитваш да направиш аз ще взема та да предхоложа, че искаш висчки редове от лани. (т.е. от миналата година - това за тези дето са забравили български)
SELECT start, description FROM calendar
WHERE start < DATE_FORMAT(NOW(), '%Y-01-01');
Забележи, че това може да използва и индекс върху (start)
salle.online.bg/sig