Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

связка SELECT FROM WHERE ORDER BY выдает ошибку!   Найти похожие ветки 

 
LAndreyV ©   (2004-04-01 11:43) [0]

Привет всем. Помогите плз.
SELECT * FROM base1 WHERE name="abc" GROUP BY name
выдает такую ошибку:
`When GROUP BY exists, every simple field in projectors must be in GROUP BY`

В чем проблемс????


 
Nikolay M. ©   (2004-04-01 11:45) [1]


> SELECT * FROM base1 WHERE name="abc" GROUP BY name


> When GROUP BY exists, every simple field in projectors must
> be in GROUP BY



 
Курдль ©   (2004-04-01 11:47) [2]

Ни фига себе "проблема"!
Вешайтесь! Вы сути не поняли!
Ведь все поля, по которым не происходит группировка, должны быть заагрегированы! А у вас их вон сколько: "* - name"


 
LAndreyV ©   (2004-04-01 11:47) [3]

круто!!!
а что это значит???


 
LAndreyV ©   (2004-04-01 11:48) [4]

а так:
SELECT name FROM base1 WHERE name="abc" GROUP BY name

такая же ошибка!!


 
Johnmen ©   (2004-04-01 11:49) [5]

Проблемы с аглицким ? Или со словарём ?


 
Anatoly Podgoretsky ©   (2004-04-01 11:50) [6]

Где агрегат?


 
bushmen ©   (2004-04-01 11:50) [7]

>такая же ошибка!!

Не верю - чудес не бывает.


 
Курдль ©   (2004-04-01 11:51) [8]

И какой высокий смысл группировать по полю из условия WHERE?


 
bushmen ©   (2004-04-01 11:52) [9]

Кстати, если работаете с базой через ADO, то надо бы update поставить :)


 
LexusR ©   (2004-04-01 11:52) [10]

GROUP BY используется для агрегации данных
при применении COUNT,SUMM,AVG,MIN,MAX

вопрос на засыпку : зачем он воткнут в данном запросе
вы наверно хотели ORDER BY


 
Соловьев ©   (2004-04-01 11:53) [11]

Пошаманим...

SELECT * FROM base1 WHERE name="abc" ORDER BY name


 
LAndreyV ©   (2004-04-01 11:54) [12]

Кто-нть может объяснить что не так делаю.
2Курдль              : Что значит `заагрегированы`?
2Anatoly Podgoretsky : Какой `агрегать`?


 
Соловьев ©   (2004-04-01 11:55) [13]

Мда, не вьехал сначала - а зачеи собственно было where?

> LAndreyV ©   (01.04.04 11:43)

что нужно то? если where есть - ты уже и так отобрал записи


 
LAndreyV ©   (2004-04-01 11:57) [14]

Мне не надо сортировать (ORDER BY), а нужно выбрать только по одному экземпляру(именно GROUP BY).

SELECT name3 FROM base1 WHERE name1="abc" and name2="dfg" GROUP BY name4


 
LAndreyV ©   (2004-04-01 11:58) [15]

через WHERE он мне выдаст 50 одинаковых записей, а зачем мне смотреть 50 одинаковых записей, если нужна одна???!!!


 
Курдль ©   (2004-04-01 11:59) [16]

Так Вы определитесь, группировка или сортировка Вам нужна?
А то в сабже одно, а в теле Вашего вопроса - другое.
Агрегатные функции извлекают единственное значение из множества данных (сумму, максимум, количество и т.п.).
Напр select CUSTOMER, sum(PRICE) from TABLE1 group by CUSTOMER


 
LAndreyV ©   (2004-04-01 12:03) [17]

блин пардон! сабж не правельный


 
Anatoly Podgoretsky ©   (2004-04-01 12:04) [18]

Если нужна одна, то надо использовать предикат DISTINCT

А если серьезно, то тебе надо временно отложить программирование и все усилия направить на изучения должного диалекта SQL, в данном случае LocalSql если ты используешь БДЕ, иначе тебе удачи не видать. Также не помешает прочитать, что либо по теории реляционных баз данных, Дейт, Грабер и других достойных авторов.


 
Соловьев ©   (2004-04-01 12:04) [19]


> LAndreyV ©   (01.04.04 11:58) [15]

тогда определитесь с критерием - возможно вам и нужна будет групировка, опишите таблицу и что надо получить.


 
sniknik ©   (2004-04-01 12:04) [20]

> через WHERE он мне выдаст 50 одинаковых записей, а зачем мне смотреть 50 одинаковых записей, если нужна одна???!!!
если они полностью одинаковы то может тебе нужен DISTINCT ?


 
LAndreyV ©   (2004-04-01 12:05) [21]

запрос
`SELECT name1 FROM base1 GROUP BY name2`
отлично работает, но он выбирает записи изо всей БД,
а мне надо чтобы он делал тоже самое, но с записями отобранными с помощью WHERE


 
LAndreyV ©   (2004-04-01 12:09) [22]

> sniknik ©   (01.04.04 12:04) [20]

они не полностью одинаковые, но у этих 50 записей поля name1, name2 одинаковые


 
LAndreyV ©   (2004-04-01 12:13) [23]

Всем спасибо, кажись я понял в чем был не прав!


 
TL   (2004-04-01 13:28) [24]

Если верно понял то тебе, LAndreyV, надо наверно вот что :

SELECT *
FROM base1
WHERE name in  
(select name
from base1
where name= "abc"
GROUP BY name)



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.063 c
7-1077457486
HydraMarat
2004-02-22 16:44
2004.04.25
Распознавание текста


14-1081082762
Serious Sam
2004-04-04 16:46
2004.04.25
Что такое TRAY?


6-1078079135
LAndreyL
2004-02-29 21:25
2004.04.25
есть ли в Delphi7 аналог TNMHttp из Delphi5?


3-1080212110
DimaF
2004-03-25 13:55
2004.04.25
Мастера в двух соснах заблудился :(


1-1081343059
Ne_Vaszno
2004-04-07 17:04
2004.04.25
Взаимодействие нескольких TStringList