powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Так все же как в 9-ке GROUP BY
21 сообщений из 21, страница 1 из 1
Так все же как в 9-ке GROUP BY
    #33058836
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме делай как в 7.
Что и в Help невразумительно, и Wizart при построении SQL запроса строит его с ошибкой "SQL: GROUP BY clause is invalid (Error 1807) "

Если можно самый примитивный пример правильного построения?
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33058847
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help SET ENGINEBEHAVIOR [ 70 | 80 | 90 ]
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33058922
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ведь я же сказал "Кроме делай как в 7."
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33058956
Samvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтоб не усложнить, коротко!
в select-е должны участвовать те поля, которые присутствуют в <group by ...>
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33058958
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select max(F1),f2 from t1 group by f2

Короче, если поля не участвуют в group by(как F1), они должны обрабатываться функциями: Sum(), Min(), Max(), Count() и т.п.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059000
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это неправильно:

SELECT Solution.key_tel, Solution.key, Solution.parent, Solution.otdel,;
Solution.korpus, Solution.text, Solution.image, Solution.type,;
Solution.file;
FROM solution;
GROUP BY Solution.parent

Ну и куда впендюривать функцию, которая по большому счету мне не нужна
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059013
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ведь я же сказал "Кроме делай как в 7."vic, а что еще Вы ждали? Приведите Ваш запрос, а я Вам скажу, чем он плох ;-)
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059026
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь привел.....
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059054
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123Вот это неправильно:

SELECT Solution.key_tel, Solution.key, Solution.parent, Solution.otdel,;
Solution.korpus, Solution.text, Solution.image, Solution.type,;
Solution.file;
FROM solution;
GROUP BY Solution.parent

Ну и куда впендюривать функцию, которая по большому счету мне не нужнаА, вот он ;-)

Ну, так он совсем плох. Групповые запросы являются непротиворечивыми только в том случае, если все поля, которые попадают в выборку, являются либо полями группировки, либо функциями агрегирования. У Вас же такого нет никак. И единственный способ, чтоб все заработало без переделки запроса - делать как в семерке. Ну а если не как в семерке...
Вот так, к примеру, будет нормально (в предположении, что key_tel - PK в этой табличке):

Код: plaintext
1.
2.
3.
SELECT key_tel, key, parent, otdel, korpus, text, image, type, file ;
 FROM solution ;
 WHERE key_tel IN (select min(key_tel) from solution GROUP BY parent)
При этом будут выбраны записи по одной для каждого parent, причем те, у которых key_tel будет минимальным (в предположении, что у Вас так же, как у меня - наиболее древние).
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059197
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
* Пример таблицы
CREATE CURSOR test (f1 I, f2 I, f3 I)
INSERT INTO test (f1,f2,f3) VALUES ( 1 , 2 , 3 )
INSERT INTO test (f1,f2,f3) VALUES ( 1 , 4 , 5 )
INSERT INTO test (f1,f2,f3) VALUES ( 9 , 8 , 7 )
INSERT INTO test (f1,f2,f3) VALUES ( 9 , 6 , 5 )

* Вот это НЕ правильно
SELECT f1,f2,f3 ;
FROM test ;
GROUP BY f1

* Вот это правильно
SELECT f1,f2,f3 ;
FROM test ;
GROUP BY f1,f2,f3

* Или так, тоже правильно
SELECT f1,MIN(f2),MIN(f3) ;
FROM test ;
GROUP BY f1

Неправильный запрос потому, что в общем случае неясно, какое именно значение полей f2 и f3 надо выбрать в пределах одной группы (одного значения) f1. Нет однозначности.

Просто в ранних версиях FoxPro такой синтаксис допускался. Вы предполагали , что в пределах одного значения поля f1 занчения полей f2 и f3 одинаковые, поэтому неважно, какое именно значение будет использовано.

НО! Это именно Ваше предположение . Нет никакой гарантии, что так и есть на самом деле. Поэтому вполне справедливо, что в старших версиях FoxPro синтаксис был ужесточен. Именно для того, чтобы преодолеть эту неоднозначность.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059253
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Целью группировки было исключить поворяющиеся значения parent
В примерах с одной стороны, когда я группирую по всем полям этого
не происходит и я добился желаемого результата во втором случае,
но у меня резонно возникает вопрос, а не потерял ли я что-либо
минимизируя или преобразуя какое-то поле в таблице
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059295
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за то, что Ваш пример провер позднее, в Вашем случае я не получил
требуемого (см. выше) по причине повторяющихся значений в полях.
И прошу не переводить в плоскость законов о нормировании, иначе утонем
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059327
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123
Это Вы кому отвечали?

Помоему, я в своем примере показал, какие проблемы могут быть если Ваша цель исключить дубли по одному полю - возникает неоднозначность в том, какие именно значения надо взять в других полях.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059328
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123Извините за то, что Ваш пример провер позднее, в Вашем случае я не получил
требуемого (см. выше) по причине повторяющихся значений в полях.
И прошу не переводить в плоскость законов о нормировании, иначе утонем

Вы не поняли самого главного о чем писал ВладимирМ, устранение группировки по всем другим полям приведет к заведомо НЕПРАВИЛЬНОМУ результату, поэтому надо изменить либо сам SELECT выборки значений либо смириться с тем, что возникнут повторяющиеся записи в поле Parent.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059361
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в первом случае я отвечал Вам ВладимирМ и действительно эта неоднозначность меня и напрягает.
To:Paulwist "устранение группировки по всем другим полям приведет к заведомо НЕПРАВИЛЬНОМУ результату" черезчур сильно сказано с остальным согласен
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059364
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123
Может быть, если Вы объясните цель , то легче будет предложить средство ...
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059401
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123

Ну так запустите тест предложенный ВладимирМ и убедитесь в результатах или лень даже это сделать?
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059427
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да цель-то ясна и прозрачна: Если раньше я пользовася группировкой как средством удаления повторяющихся значений в интересующем меня поле,
то сейчас придется искать другие варианты.
В данном случае в таблице сидят имена отделов, которые могут добавлятся или удалятся (ключ parent), идея была выгрести их оттуда и загнать в ComboBox через Курсор, чтобы ComboBox был всегда актуален, но не кишил повторяющимися именами.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059538
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vic123Да цель-то ясна и прозрачна: Если раньше я пользовася группировкой как средством удаления повторяющихся значений в интересующем меня поле, ...
У средств группировки иное назначение :)
А есть еще и SELECT DISTINCT ...
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059540
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для исключения дублирующих строк из результирующего запроса, обычно, используют SELECT DISTINCT...
С уважением, Алексей.
...
Рейтинг: 0 / 0
Так все же как в 9-ке GROUP BY
    #33059562
vic123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To:Paulwist Вы невнимательны. Я запустил и все здесь понятно.
To: Aleks.... Относительно SELECT DISTINCT Вы оба абсолютно правы есть такое замечательное средство. не всегда приходиться идти проторенным путем

В целом ВСЕМ большое mersi стало ясно как работает Group By и чего от него ждать и это главное
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Так все же как в 9-ке GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]