GROUP BY Clause проблем

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

GROUP BY Clause проблем

SELECT * from t1 WHERE cType IN ('1234567891'
,'BOX','PALLET') GROUP BY cType ORDER BY cID

(в МS SQL)
ми дава грешка "Column 't1.c1' is invalid in the select list because it
is not contained in either an aggregate function or the GROUP BY clause."
И същото за всички column-и.
A за синтаксиса на груп бай прочетох:

The SQL synthax emposes the restriction that,whenever the GROUP BY clause is used ,the attributes that can appear in the select list must be a subset of the attributes used in the group clause.Refferences to these attributes are possible because each tuple of the group will be characterized by the same values.

Tова значи ли че не мога да селектна всичко а да групирам само по едно???!!

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

Re: GROUP BY Clause проблем

Ами естествено. Нали го пише е документацията. А засмисли се че няма логика в заявката както си я написал.
Ти какво очакваш да ти върне тази заявката така написана?

Боже колко мъка има на този свят Боже!
Отговор
в отговор на RepeatableRead #3

Re: GROUP BY Clause проблем

Ми очаквам примерно да ми ги върне групирани по cType,t.e. в ресулт-а да не са разпилени отделните стойности на cType-a ами да са си събрани в групи4ки:)

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

Re: GROUP BY Clause проблем

като ги групира връща ЕДИН резултат за всяка стойност. това което искаш се прави с order by (cType, cID)

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #5

пояснение

SELECT * from t1 WHERE cType IN ('1234567891'
,'BOX','PALLET') GROUP BY cType ORDER BY cID

ще има точно 3 резултата за cType :
1234567891
BOX
PALLET

и случайни стойности за другите

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #6

Re: пояснение

Прави сте, благодаря много.

Отговор