Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Вниз

Синтаксис SQL. Проблема при использованиии групировки   Найти похожие ветки 

 
SergP   (2003-12-09 11:44) [0]

Нужно выполнить поиск по форуму (прога-клиент форума) например всех топиков где общался vasyaPupkin.

Запрос такого типа:

select a.topic_id,a.uid,a.forum_id,a.title
from topics as a,posts as b,users as c
where a.topic_id=b.topic_id and b.uid=c.uid and c.login="vasyaPupkin"
group by a.topic_id order by a.top_time desc

не проходит, так как вылезает ругательство на то что не используются статистические функции. (ругается естественно на все поля кроме a.topic_id). Если не использовать группировку то я получаю по несколько одинаковых записей. Все это понятно.
Поэтому чтобы получить остальные поля таблицы в моем запросе, приходится применять вложенный запрос:

select a.*
from topics as a,(
select a.topic_id
from topics as a,posts as b,users as c
where a.topic_id=b.topic_id and b.uid=c.uid and c.login="vasyaPupkin"
group by a.topic_id
) as b"
+" where a.topic_id=b.topic_id order by a.top_time desc";

т.е. сначала я "достаю" только поле topic_id и делаю по нему группировку. А потом используя ту же таблицу достаю остальные поля.
Но мне кажется что я чего-то не знаю, поэтому приходится использовать вложенный запрос. Можно ли обойтись одним простым запросом?
Можно ли при групировке по одному полю, "вытягивать" также и другие поля без статистических функций? Или какие функции можно использовать, если групируемые записи полностью одинаковые. Т.е. просто нужно избавиться от дублирования.
ну насчет чисел в крайнем случае можно можно поставить функцию максимума или минимума (все равно они все одинаковые). А что делать с строковыми полями и полями memo?


 
Alex_Bredin   (2003-12-09 11:47) [1]

а что мешает внести эти самые поля в раздел GROUP BY?


 
Silver Alex   (2003-12-09 12:01) [2]


> Т.е. просто нужно избавиться от дублирования.

distinct не подходит?


 
SergP   (2003-12-09 12:08) [3]

Кстати забыл указать: юзаю АДО, провайдер:
Microsoft.Jet.OLEDB.4.0


> Silver Alex © (09.12.03 12:01) [2]
>
> > Т.е. просто нужно избавиться от дублирования.
>
> distinct не подходит?


А как им пользоваться?


 
Silver Alex   (2003-12-09 12:15) [4]

select distinct a.topic_id,a.uid,a.forum_id,a.title
from topics as a,posts as b,users as c
where a.topic_id=b.topic_id and b.uid=c.uid and c.login="vasyaPupkin"


 
Alex_Bredin   (2003-12-09 12:19) [5]

2 SergP
в данном случае без разницы чем пользуешься
вот так примерно

select a.topic_id,a.uid,a.forum_id,a.title
from topics as a,posts as b,users as c
where a.topic_id=b.topic_id and b.uid=c.uid and c.login="vasyaPupkin"
group by a.topic_id,a.uid,a.forum_id,a.title
order by a.top_time desc

а в твоем случае ругается потому, что

When a GROUP BY clause is used, all table columns in the SELECT clause of the query must meet at least one of the following criteria, or it cannot be included in the SELECT clause:

Be in the GROUP BY clause of the query.
Be in the subject of an aggregate function.


 
sniknik   (2003-12-09 12:30) [6]

> Можно ли при групировке по одному полю, "вытягивать" также и другие поля без статистических функций? Или какие функции можно использовать, если групируемые записи полностью одинаковые. Т.е. просто нужно избавиться от дублирования.
First(), Last()


 
SergP   (2003-12-09 12:33) [7]

ну почему оно ругается то я понимаю.

А насчет остального - спасибо всем. Попробую оба варианта.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.028 c
1-11977
selena
2003-12-19 08:53
2004.01.05
Найти файл


1-11851
Morgan128
2003-12-18 17:14
2004.01.05
Работа с текстом


1-11991
real_dimedrol
2003-12-19 01:32
2004.01.05
функция format


7-12179
genek84
2003-10-24 12:42
2004.01.05
Проблема с отображение JPEG в Image


4-12205
ZEE
2003-11-04 15:09
2004.01.05
TextHeight без TCanvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский