Форум: "Базы";
Текущий архив: 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.49 MB
Время: 0.031 c