Проблем с where clause в MySQL

5 отговора 389 прегледа
#1

Проблем с where clause в MySQL

Здравейте,

Имам таблица, в която има date колона, казваща се start. В нея винаги се съхраняват дати от последователни години. Искам да извадя всички редове с по-ниската година.

Досега съм измислил следното:

select min(year(start)) as minyear, start, description from calendar where year(start) = minyear;

но получавам грешка unknown column in where clause.

Къде греша и какво мога да направя по въпроса?

Предварително благодаря!

Ники

Отговор
в отговор на nmk #2

Какво е "последователни" години

Може би трябва да напишеш някаква част от таблицата - за пример.

Отговор
в отговор на NikB #3

Re: Какво е "последователни" години

Част от датите:

2004-05-17
2004-06-19
2005-11-06
2005-11-19

Демек сега има само дати с 2004 и 2005. Догодина ще има само данни с 2005 и 2006, и т.н.

Отговор
в отговор на nmk #4

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);


Аре

Редактирано от Иpъпшънa на

Отговор
в отговор на nmk #5

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
Отговор
в отговор на nmk #6

Re:х Хайде да хрълим по един боб ..

.. и да погадаем.

Понеже на никого не е ясно какво се опитваш да направиш аз ще взема та да предхоложа, че искаш висчки редове от лани. (т.е. от миналата година - това за тези дето са забравили български)

SELECT start, description FROM calendar
WHERE start < DATE_FORMAT(NOW(), '%Y-01-01');

Забележи, че това може да използва и индекс върху (start)

salle.online.bg/sig
Отговор