powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
13 сообщений из 13, страница 1 из 1
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34100009
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытался уже задать этот вопрос... но видимо меня не поняли.

Работаю из Excel/VBA через ADO/OLEDB с базами в DBF. Т.е. синтаксис запросов, как я понимаю, OLE DB-шный (где найти по нему доки?).

Можно ли сделать такую вещь, как я написал в сабже?
Т.е. вывести все поля из таблицы, но отобрать записи различающиеся по трем полям.

Какой SQL-конструкцией возможно реализовать такой функционал?
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34100445
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DISTINCT выбирает уникальные ЗАПИСИ!!! а не поля в записях.
Вам больше подойдет GROUP BY + агрегатные функции.
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34100760
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал. Не выходит.
Дело в том, что нельзя написать
Код: plaintext
1.
2.
3.
4.
5.
SELECT 
    F1,F2,F3,F4,sum(F5) 
FROM 
    TABLE1
GROUP BY
    F4
Потому что драйвер будет ругаться что поля F1,F2,F3 должны входить в GROUP BY.

Как обойти эту ситуацию - я не придумал.
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34100930
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем вас не устраивает такой запрос?:
Код: plaintext
1.
2.
3.
4.
5.
SELECT 
    F1,F2,F3,F4,sum(F5) 
FROM 
    TABLE1
GROUP BY
    f1, f2, f3, f4
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34101352
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
savosin_sergeyа чем вас не устраивает такой запрос?:
Код: plaintext
1.
2.
3.
4.
5.
SELECT 
    F1,F2,F3,F4,sum(F5) 
FROM 
    TABLE1
GROUP BY
    f1, f2, f3, f4


А зачем мне группировать еще и по f1,f2,f3?
Мне ж их просто вывести надо.

Я не знаток SQL, и тем более не знаток тонкостей работы его реализаций. Посему я себе совершенно не представляю эффект от подобного запроса.

Сейчас проэксперементирую.

Мне тут подсказали функцию first(field), предназначенную чтобы взять значение первой записи в группировке. Да только все равно запрос считает цифры как-то не так :(
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34101391
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал. Не подходит :( Похоже что он сгруппировал вообще все записи, в которых хоть какие-то поля совпадают. Или что-то в этом роде :(
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34102676
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
point212Попробовал.Ты бы показал небольшую табличку для пояснения что у тебя есть и что ты хочешь получить, может и другие смогут попробовать...
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34102975
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AsPiro point212Попробовал.Ты бы показал небольшую табличку для пояснения что у тебя есть и что ты хочешь получить, может и другие смогут попробовать...
Да вот в этой теме пытался.

Таблички у меня две:REPORT и SUMMARY_DATA.
SUMMARY_DATA собирается из 4х UNION'ами.
В обоих табличках есть по три поля для связи. Плохо только то, что в обоих таблицах комбинации этих трех полей не уникальный. То есть могут быть две записи одинаковые по всем трём полям. Причем как в первой таблице, так и во второй.

Надо сделать что-то вроде этого:
(в голове все сразу не могу уместить, синаксис SQL не соблюдён)
SUMMARY_DATA=SELECT NOMK_LS,CPFS,SERNUMB,SUM(KO_ALL),SUM(FS_ALL) FROM (тут UNION'ы...) GROUP BY NOMK_LS,C_PFS,SERNUMB
(с этим вроде бы проблем нет)
REPORT=SELECT * FROM REPORT GROUP BY NOMK_LS,CPFS,SERNUMB
( но так вроде бы нельзя, поэтому я и пытаюсь выяснить как сделать сабж )
Теперь значится я хочу получить
RESULT=SELECT REPORT.*, SUMMARY_DATA.KO_ALL,SUMMARY_DATA.FS_ALL FROM
REPORT JOIN SUMMARY_DATA ON REPORT.NOMK_LS=SUMMARY_DATA.NOMK_LS,REPORT.CPFS=SUMMARY_DATA.C_PFS,REPORT.SERNUMB=SUMMARY_DATA.SERNUMB
Ну и напоследок надо как-то объеденить REPORT с RESULT, чтобы все записи были показаны, но только в первом вхождении каждой были данные в полях KO_ALL и FS_ALL.

Вот. Все бы так, да только не работает :( Потому что синтаксис SQL такого не позволяет или я не знаю как написат.
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34103565
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
point212А зачем мне группировать еще и по f1,f2,f3?
Мне ж их просто вывести надо.Просто так, наверное. Тебе говорят уже в который раз, а ты лбом в стену упёрся.
"Просто вывести" без группировки? А если в этих полях РАЗНЫЕ значения, то что делать? Брать первую? Меньшую? Но это агрегаты. Значит, наверное, списком через запятую?
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34103973
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery point212А зачем мне группировать еще и по f1,f2,f3?
Мне ж их просто вывести надо.Просто так, наверное. Тебе говорят уже в который раз, а ты лбом в стену упёрся.
"Просто вывести" без группировки? А если в этих полях РАЗНЫЕ значения, то что делать? Брать первую? Меньшую? Но это агрегаты. Значит, наверное, списком через запятую?
Да вроде бы нигде не упирался. Первое надо. Первое.
Да только вот first(fn) не катит. Совсем не те цифры получаются. Что-то он не то сворачивает, имхо :(
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34104493
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запросом можно так
Код: plaintext
1.
2.
3.
4.
5.
select t.F4, sum(t.F5),
       (select first  1  F1 from Table1 where F4 = t.F4),
       (select first  1  F2 from Table1 where F4 = t.F4),
       (select first  1  F3 from Table1 where F4 = t.F4)
  from Table1 t
  group by  1 
Синтаксис зависит от сервера SQL который используешь.
Если поддерживается select from select, то ещё проще.
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34108318
point212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боже мой, как страшно то. А если полей штук 20... это каким же тормозом станет запрос :(
...
Рейтинг: 0 / 0
SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
    #34109444
g11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если делаешь запросы из dbf, то логично и спрашивать на форуме FoxPro, а не у тех, кто в этом ничего не понимает.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / SELECT * DISTINCT F1,F2,F3 FROM TABLE1. Возможно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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