Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Народ, прошу помочь в следующей проблеме. Хочу сделать обычный запрос c GROUP BY, сгруппировав записи по имени: Код: plaintext 1. Так всё проходит на ура. Но есть ещё таблица "Authors", связанная с AuthorMoney, в ней есть поля "Name", "LastName"... Хочу их вывести от сгруппированного ID, то есть так: Код: plaintext 1. 2. То есть, чтобы группировка происходила по ID, а в конце просто дописывались остальные столбцы от этого айдишника, выбранные из другой таблицы, т.е. имя, фамилия и т.д. Ведь, айдишники уникальны, каждому принаджежит ОДНО имя. Но база на это ругается: ERROR: column "N.Name" must appear in the GROUP BY clause or be used in an aggregate function. Когда я включаю имя и фамилию из таблицы Authors в GROUP BY, ответ совершенно меняется и группировка происходит не так, как надо. Видимо, не по ID :( Заранее спасибо за помощь, за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2006, 15:06 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2006, 20:20 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Привет ZemA, ты пишешь: ZemA Код: plaintext 1. 2. Тебе незачет, ведь автор так делать пытался: J-Pro Когда я включаю имя и фамилию из таблицы Authors в GROUP BY, ответ совершенно меняется и группировка происходит не так, как надо. Видимо, не по ID :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 05:40 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
2 автор топика: Попробуй вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но у меня есть подозрение, что в таблице с авторами нарушена уникальность по ID. Вот такой запрос чего возвращает: Код: plaintext 1. 2. 3. 4. ----------------------------------------------------------------------------------------------------------------------------------------- З.Ы. Неспешно ищу работу, согласен на переезд в Москву или Питер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 05:47 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Владимор КоневПривет ZemA, ты пишешь: ZemA Код: plaintext 1. 2. Тебе незачет, ведь автор так делать пытался: J-Pro Когда я включаю имя и фамилию из таблицы Authors в GROUP BY, ответ совершенно меняется и группировка происходит не так, как надо. Видимо, не по ID :( и после этого ты пишешь Владимор Конев2 автор топика: Попробуй вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. тоже самое что и у меня только через ж*** ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 08:18 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
ZemAТебе незачет, ведь автор так делать пытался:... и после этого ты пишешь... тоже самое что и у меня только через ж*** неправда. У него как раз все идеологически правильно. Сначала он выбирает нужные ID-шники, а затем связывает с ними значения из авторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 08:29 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
ZemAи после этого ты пишешь . . . тоже самое что и у меня только через ж***Видимо ты ещё ни раз в жизни не сталкивался с различными глюками сервера, возникающими при сортировке, группировке полей с русским текстом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 08:52 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
SELECT A."ID",max(N."Name"),max(N."LastName"), sum(A."Money") FROM "public"."AuthorMoney" A JOIN "public"."Authors" N ON A."ID" = N."ID" GROUP BY A."ID" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:10 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
ZemA Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Кувалдин Роман ZemAтоже самое что и у меня только через ж***неправда. У него как раз все идеологически правильно. Сначала он выбирает нужные ID-шники, а затем связывает с ними значения из авторов.Может быть заметная разница в эффективности планов выполнения этих двух запросов, но имхо они оба "идеологически" правильные в предположении уникальности ID. Владимор КоневВидимо ты ещё ни раз в жизни не сталкивался с различными глюками сервера, возникающими при сортировке, группировке полей с русским текстом :)Я тоже видимо к счастью :) с такими глюками не сталкивался. Но в любом случае кажется что глюки связанные с русским текстом надо решать на админском уровне, а не sql-запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:19 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Эти два запроса в случае уникальности поля ID в Authors выдадут одинаковый результат. В случае неуникальности результаты могут получиться разными, но наверное ID должно быть уникальным.думаю, это неправильное утверждение. Хотя если уважаемый LeXa NalBat раскроет путь, приводящий к такому заключению, пожалуй попробую посмотреть на проблему более подробно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:34 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Владимор Конев ZemAи после этого ты пишешь . . . тоже самое что и у меня только через ж***Видимо ты ещё ни раз в жизни не сталкивался с различными глюками сервера, возникающими при сортировке, группировке полей с русским текстом :) Да ни разу т.к. у нас все сделано правильно и таких проблемм нет ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:35 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
ZemAДа ни разу т.к. у нас все сделано правильно и таких проблемм нет ;) Рад за вас от всей души!!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:38 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
4321 LeXa NalBat Эти два запроса в случае уникальности поля ID в Authors выдадут одинаковый результат. В случае неуникальности результаты могут получиться разными, но наверное ID должно быть уникальным.думаю, это неправильное утверждение. Хотя если уважаемый LeXa NalBat раскроет путь, приводящий к такому заключению, пожалуй попробую посмотреть на проблему более подробно.Это произойдет, если в таблице Authors есть строки с одинаковыми ID, Name, LastName. Превый запрос их схлопнет увеличив значение sum, а в результатах второго запроса они будут повторяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 10:44 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Превый запрос их схлопнет увеличив значение sum, а в результатах второго запроса они будут повторяться.понял. первый запрос возьмет сумму по ID, но с множителем "количество повторений" в (ID,Name,LastName). Второй выведет для каждой записи только однократную сумму по ID, но столько раз, сколько ID встретится в 1-й таблице. т.е. вопрос не о повторении ID , но в повторении всего мн-ва параметров группировки ((ID,Name,LastName)). Был не прав. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 12:27 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Спасибо, народ, за помощь. Простите, что долго не отвечал. Я совсем запутался в этих GROUP BY. С одной стороны, если группировка идёт по ID, плюс ещё по связанным с ним, ТОЖЕ уникальным полем, то всё будет ок. Но если, к примеру, есть два юзера с ИД = 1 и ИД = 2, но зовут обоих Юра, то фиг знает, как будет проходить группировка.... И ещё: делаю теперь так: всё, что необходимо, включаю в подзапрос, а остальные данные выбираю уже из получившихся результатов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Таким образом, группировка происходит по AF."ActualFundingID", а потом просто добавляю к каждой записи необходимые данные. Но всё равно мне кажется, что чего-то я недопонял :) А всем спасибо огромное за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 21:05 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
1. Есть вот такая проблема: Запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В таблице PQ есть поле "PerformDate". Хотелось бы выбрать только те, в которых дата находится в необходимом промежутке. Но, добавляя это поле в HAVING, база ругается, что оно должно быть либо в ф-ции суммирования, либо в GROUP BY. Но, добавляя его в GROUP BY, записей становится гораздо больше. Не знаю, как обойти проблему.... 2. Есть ещё одна проблема. С тем же запросом. Причём, тут вложенный запрос не проканает. Вот, к примеру, имея запрос выше, я хочу получить тот же запрос, только группируя по PQ."CLINID" и всё, а потом добавить к тем записям их таскИД и всё остальное. Что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Спасибо всем огромное заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 17:40 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
J-Pro добавляя это поле в HAVING, база ругается, что оно должно быть либо в ф-ции суммирования, либо в GROUP BY. Но, добавляя его в GROUP BY, записей становится гораздо больше. Не знаю, как обойти проблему.... Вы принципиально не используете WHERE в групповых запросах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 18:09 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Хм... как я понял ещё давно из доков, HAVING и есть WHERE, только в случае использования GROUP BY. Т.е. WHERE использовать с GRUOP BY нельзя. Это неверно? Насчёт второго пункта никто ничего не знает, народ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 11:26 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
J-ProХм... как я понял ещё давно из доков, HAVING и есть WHERE, только в случае использования GROUP BY. Т.е. WHERE использовать с GRUOP BY нельзя. Это неверно? Насчёт второго пункта никто ничего не знает, народ?Where - накладывается на результат выборки до группировки. HAVING же накладывает условия на результат группировки. Одно другому не мешает. В запросе может присутствовать как where, так и HAVING. Другое дело, что без GROUP BY не может быть и HEAVING. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 11:33 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
J-ProНасчёт второго пункта никто ничего не знает, народ?Что за второй пункт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 11:41 |
|
||
|
SELECT с дополнительными столбцами, не включёнными в GROUP BY
|
|||
|---|---|---|---|
|
#18+
Сорри, поставил тему на подписку при ответе, а мыло не приходит, блин. Извините за долгое отсутствие. Отвечаю: Уважаемый Владимир Конев, спасибо за разъяснение. Начинал и до сих пор иногда обращаюсь, с книги Мартина Грубера, так там было написано, цитирую: Martin GrouberПредположим, что в предыдущем примере, вы хотели бы увидеть только максимальную сумму приобретений значение которой выше $3000.00. Вы не сможете использовать агрегатную функцию в предложении WHERE ( если вы не используете подзапрос, описанный позже ), потому что предикаты оцениваются в терминах одиночной строки, а агрегатные функции оцениваются в терминах групп строк. Это означает что вы не сможете сделать что-нибудь подобно следующему: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. Фразу Martin Grouber ... если вы не используете подзапрос, описанный позже ... заметил только сейчас, тогда особого внимания не предал... В общем, спасибо за разъяснение! :) Второй пункт вот: J-Pro2. Есть ещё одна проблема. С тем же запросом. Причём, тут вложенный запрос не проканает. Вот, к примеру, имея запрос выше, я хочу получить тот же запрос, только группируя по PQ."CLINID" и всё, а потом добавить к тем записям их таскИД и всё остальное. Что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2006, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33856800&tid=2006191]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 368ms |

| 0 / 0 |
