![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
связка SELECT FROM WHERE ORDER BY выдает ошибку! [D5, dBase, FoxPro]
LAndreyV © (2004-04-01 11:43:00)Привет всем. Помогите плз.
SELECT * FROM base1 WHERE name='abc' GROUP BY name
выдает такую ошибку:
`When GROUP BY exists, every simple field in projectors must be in GROUP BY`
В чем проблемс????
TL (2004-04-01 13:28:00) [1]Если верно понял то тебе, LAndreyV, надо наверно вот что :
SELECT *
FROM base1
WHERE name in
(select name
from base1
where name= 'abc'
GROUP BY name)
LAndreyV (2004-04-01 12:13:00) [2]Всем спасибо, кажись я понял в чем был не прав!
LAndreyV (2004-04-01 12:09:00) [3]> sniknik © (01.04.04 12:04) [20]
они не полностью одинаковые, но у этих 50 записей поля name1, name2одинаковые
LAndreyV (2004-04-01 12:05:00) [4]запрос
`SELECT name1 FROM base1 GROUP BY name2`
отлично работает, но он выбирает записи изо всей БД,
а мне надо чтобы он делал тоже самое, но с записями отобранными с помощью WHERE
sniknik (2004-04-01 12:04:00) [5]> через WHERE он мне выдаст 50 одинаковых записей, а зачем мне смотреть 50 одинаковых записей, если нужна одна???!!!
если они полностью одинаковы то может тебе нужен DISTINCT ?
Соловьев (2004-04-01 12:04:00) [6]
> LAndreyV © (01.04.04 11:58) [15]
тогда определитесь с критерием - возможно вам и нужна будет групировка, опишите таблицу и что надо получить.
Anatoly Podgoretsky (2004-04-01 12:04:00) [7]Если нужна одна, то надо использовать предикат DISTINCT
А если серьезно, то тебе надо временно отложить программирование и все усилия направить на изучения должного диалекта SQL, в данном случае LocalSql если ты используешь БДЕ, иначе тебе удачи не видать. Также не помешает прочитать, что либо по теории реляционных баз данных, Дейт, Грабер и других достойных авторов.
LAndreyV (2004-04-01 12:03:00) [8]блин пардон! сабж не правельный
Курдль (2004-04-01 11:59:00) [9]Так Вы определитесь, группировка или сортировкаВам нужна?
А то в сабже одно, а в теле Вашего вопроса - другое.
Агрегатные функции извлекают единственное значение из множества данных (сумму, максимум, количество и т.п.).
Напрselect CUSTOMER, sum(PRICE) from TABLE1 group by CUSTOMER
LAndreyV (2004-04-01 11:58:00) [10]через WHERE он мне выдаст 50 одинаковых записей, а зачем мне смотреть 50 одинаковых записей, если нужна одна???!!!
LAndreyV (2004-04-01 11:57:00) [11]Мне не надо сортировать (ORDER BY), а нужно выбрать только по одному экземпляру(именно GROUP BY).
SELECT name3 FROM base1 WHERE name1='abc' and name2='dfg' GROUP BY name4
Соловьев (2004-04-01 11:55:00) [12]Мда, не вьехал сначала - а зачеи собственно было where?
> LAndreyV © (01.04.04 11:43)
что нужно то? если where есть - ты уже и так отобрал записи
LAndreyV (2004-04-01 11:54:00) [13]Кто-нть может объяснить что не так делаю.
2Курдль : Что значит `заагрегированы`?
2Anatoly Podgoretsky: Какой `агрегать`?
Соловьев (2004-04-01 11:53:00) [14]Пошаманим...
SELECT * FROM base1 WHERE name='abc' ORDERBY name
LexusR (2004-04-01 11:52:00) [15]GROUP BY используется для агрегации данных
при применении COUNT,SUMM,AVG,MIN,MAX
вопрос на засыпку : зачем он воткнут в данном запросе
вы наверно хотели ORDER BY
bushmen (2004-04-01 11:52:00) [16]Кстати, если работаете с базой через ADO, то надо бы update поставить :)
Курдль (2004-04-01 11:51:00) [17]И какой высокий смысл группировать по полю из условия WHERE?
bushmen (2004-04-01 11:50:00) [18]>такая же ошибка!!
Не верю - чудес не бывает.
Anatoly Podgoretsky (2004-04-01 11:50:00) [19]Где агрегат?
Johnmen (2004-04-01 11:49:00) [20]Проблемы с аглицким ? Или со словарём ?