Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 08.02.2010, 16:54   #1
lola_lola
Новичок
 
Регистрация: 08.02.2010
Сообщений: 1
Репутация: 10
По умолчанию Не получается запрос

Здравствуйте! Помогите, пожалуйста.
Есть таблицы table1(поле field1) и table2(поле field2).
Код:

SELECT a.field1, b.field2 
FROM table1 as a, table2 as b
WHERE a.field1=b.field3 
GROUP BY a.field1;

Выводится ошибка "Попытка выполнить запрос, не включающий field2 как часть статической функции". в чем ошибка?

Последний раз редактировалось Stilet; 08.02.2010 в 17:29.
lola_lola вне форума   Ответить с цитированием
Старый 08.02.2010, 17:19   #2
Sparky
Профессионал
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Адрес: Пермь
Сообщений: 1,222
Репутация: 674

icq: 437149801
skype: Ustyugova1990
По умолчанию

Код:

SELECT a.field1, b.field2 
FROM table1 as a, table2 as b
WHERE a.field1=b.field3 
GROUP BY a.field1,b.field2 ;

__________________
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума   Ответить с цитированием
Старый 11.02.2010, 20:16   #3
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
Репутация: 221
По умолчанию

Интересно, зачем в запросе это предложение GROUP BY?
Цитата:
Использование предложения GROUP BY имеет смысл только при наличии в списке возвращаемых элементов предложения SELECT хотя бы одного вычисляемого столбца или агрегатной функции.
Скандербег вне форума   Ответить с цитированием
Старый 12.02.2010, 01:21   #4
soleil@mmc
SQL-коддинг
Профессионал
 
Регистрация: 16.01.2009
Сообщений: 1,192
Репутация: 601
По умолчанию

Цитата:
Сообщение от Скандербег Посмотреть сообщение
Интересно, зачем в запросе это предложение GROUP BY?
как вариант, можно вывести список уникальных значений или уникальных сочетаний (то же самое можно сделать без группировки + указать после слова select distinct)
soleil@mmc вне форума   Ответить с цитированием
Старый 12.02.2010, 07:55   #5
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
Репутация: 221
По умолчанию

Тем не менее, предложение CROUP BY в приведенном запросе ничего не делает, как ему и предписано - не "выводит список уникальных значений или уникальных сочетаний". Проверено на MS SQL и Firebird.
По поводу DISTINCT присоединяюсь, здесь возразить нечего.
Скандербег вне форума   Ответить с цитированием
Старый 12.02.2010, 11:11   #6
soleil@mmc
SQL-коддинг
Профессионал
 
Регистрация: 16.01.2009
Сообщений: 1,192
Репутация: 601
По умолчанию

Цитата:
Сообщение от Скандербег Посмотреть сообщение
Тем не менее, предложение CROUP BY в приведенном запросе ничего не делает, как ему и предписано
чтобы говорить предметно - уточни сам запрос
а то в теме их 2 и оба кривоватые
а еще лучше привести данные для проверки
soleil@mmc вне форума   Ответить с цитированием
Старый 12.02.2010, 12:01   #7
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
Репутация: 221
По умолчанию

Текст запроса без привязки к базе и ее таблицам не имеет смысла. Я проверил работу GROUP BY по поводу возврата "уникальных значений" в двух СУБД - результат отрицательный, мне этого достаточно.
Если есть сомнения, нет ничего проще сделать такую проверку самому на своем материале.
А "кривоватость" приведенных запросов только в ненужном предложении ORDER BY.
Кстати, наличие этого предложения в запросах, похожих на приведенные, при тестирование дает ошибку (Firebird):
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Скандербег вне форума   Ответить с цитированием
Старый 12.02.2010, 13:45   #8
soleil@mmc
SQL-коддинг
Профессионал
 
Регистрация: 16.01.2009
Сообщений: 1,192
Репутация: 601
По умолчанию

в принципе, такой разговор ни о чем получается

Оракл 10ка
тестовый набор данных (можете реализовать в любой субд через вьюху, оракл позволяет это делать на лету)

Код:

with
  table1 as (
  select 1 field1 from dual union all
  select 2 from dual union all
  select 3 from dual union all
  select 4 from dual union all
  select 5 from dual union all
  select 6 from dual union all
  select 2 from dual
  ),
  table2 as (
  select 1 field3, 'xxx' field2 from dual union all
  select 2, 'axx' from dual union all
  select 3, 'abx' from dual union all
  select 2, 'abx' from dual union all
  select 3, 'acx' from dual union all
  select 4, 'acx' from dual union all
  select 5, 'aex' from dual union all
  select 2, 'azx' from dual union all
  select 2, 'awx' from dual
  )

поскольку ТС не приводил типов полей, то я себе позволил такую трактовку типов полей

теперь запрос
Код:

select 
  a.field1, 
  b.field2 
from 
  table1 a, 
  table2 b
where a.field1 = b.field3
group by a.field1, b.field2
order by 1

нормально выполняется и выдает след.результат
Цитата:
field1 field3
1 xxx
2 abx
2 awx
2 axx
2 azx
3 abx
3 acx
4 acx
5 aex
теперь убираем предложение групбай и смотрим на результат
Код:

select 
  a.field1, 
  b.field2 
from 
  table1 a, 
  table2 b
where a.field1 = b.field3
order by 1

Цитата:
field1 field3
1 xxx
2 axx
2 axx
2 azx
2 abx
2 awx
2 awx
2 azx
2 abx
3 abx
3 acx
4 acx
5 aex
разница заметна невооруженным взглядом

Последний раз редактировалось soleil@mmc; 12.02.2010 в 14:40. Причина: сделал раскраску
soleil@mmc вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается выполнить запрос artemavd БД в Delphi 14 06.08.2009 20:44
БД, Запрос на приход/расход, не получается задействовать несколько обьектов kvadratnt Помощь студентам 0 06.06.2009 15:23
не получается запрос с inner join :mad: Только_Учусь SQL, базы данных 16 21.07.2008 09:40
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Не получается..... Delpher HTML и CSS 2 25.12.2007 14:17


23:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


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