Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

связка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.029 c
11-1063785981
<Falcon>
2003-09-17 12:06
2004.04.25
Текст в несколько строк в mdvXLGrid - КАК?


3-1080310297
ЁПРСТ
2004-03-26 17:11
2004.04.25
При закрытии ADO Query без закрытия ADOConnection идет ругань


3-1080719670
Olegka
2004-03-31 11:54
2004.04.25
Подключение к IB с использованием ролей


1-1081057964
Arturchik
2004-04-04 09:52
2004.04.25
Вопрос по TForm1.FormCreate


14-1080933735
Феликс
2004-04-02 23:22
2004.04.25
Траектория минометного снаряда?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский