powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP6 -> VFP8
5 сообщений из 5, страница 1 из 1
VFP6 -> VFP8
    #32908891
StasX4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот решил перейти на более новую версию и сталкнулся с такой проблеммой:

SELECT;
Table1.Name as Name,;
sum(Table2.bablo) as Sm;
FROM Table1 RIGHT OUTER JOIN Table2;
ON Table1.ID=Table2.ID;
WHERE group by Table1.ID

В VFP6 прокатывало, а вот в VFP8 нет...
Сообщает об ошибке...
SQL: GROUP BY clause is missing or invalid

Как я понял, что проблемма в том, что я групирую по индексу, который участвует в связи двух таблиц.

Подскажите пожалуйста, как можно это обойти...

Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
VFP6 -> VFP8
    #32908976
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT
Table1.ID, Table1.Name as Name,
sum(Table2.bablo) as Sm
FROM Table1 RIGHT OUTER JOIN Table2
ON Table1.ID=Table2.ID
WHERE group by Table1.ID, Table1.Name
...
Рейтинг: 0 / 0
VFP6 -> VFP8
    #32908989
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET ENGINEBEHAVIOR...
...
Рейтинг: 0 / 0
VFP6 -> VFP8
    #32909464
StasX4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@MasterZiv

К сожалению этот способ не дал результатов... :(

@Redrik

Все получилось...

Поставил SET ENGINEBEHAVIOR 70 и все чики...

Спасибо всем за помощь!!!
...
Рейтинг: 0 / 0
VFP6 -> VFP8
    #32909712
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
SELECT Table1.Name as Name, sum(Table2.bablo) as Sm ;
  FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.ID=Table2.ID;
 group by Table1.ID
*  (WHERE - здесь лишнее)
не будет работать без
Код: plaintext
SET ENGINEBEHAVIOR  70 
, потому что если в запросе хочешь видеть Name с агрегатной функцией, то и группировать надо по Name, а не по ID. То, что предлагал MasterZiv, а именно:
Код: plaintext
1.
2.
3.
SELECT
Table1.ID, Table1.Name, sum(Table2.bablo) as Sm ;
  FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.ID=Table2.ID ;
 group by Table1.ID, Table1.Name
, на самом деле - правильное решение. Почему этот способ не дал результатов? Ведь здесь все правильно (ну разве что WHERE убрал). ;-)))
С точки зрения формальной логики реляционной теории (и практики тоже) [;-)], результат любого твоего запроса должен подчиняться правилам построения реляционных сущностей точно так же, как и первичные таблички. Если у тебя может быть несколько ID, у которых одинаковый Name, то следует:
1. Или признать, что уже в табличках со структурой что-то не так (и Name не является кандидатным ключом в Table1), и делать по MasterZiv;
2. Или признать Name кандидатным ключом, и делать GROUP BY Name;
3. Или делать как допускалось в ранних версиях FoxPro, установив SET ENGINEBEHAVIOR 70, но тогда bablo по статье "ААА" (код 10) и статье "ААА" же (но с кодом 15) будут в выборке идти двумя разными строками. А пользователь разберется потом, что это на самом деле 2 разные статьи, хотя имя у них одинаковое?!
Это я к тому, что из трех вариантов выбран худший.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP6 -> VFP8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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