Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сложная выборка. как сделать??? 
:(
    Опции темы
Swatch
Дата 24.1.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 453
Регистрация: 2.7.2007

Репутация: 1
Всего: 1



Добрый день.

Есть 3 таблицы: авторы, категории и сообщения. автор может писать в разных категориях по многу сообщений. 

Вопрос в следующем: как построить дерево вида категория1 -> список авторов, у которых есть сообщения в этой категории; категория2 -> список авторов, у которых есть сообщения в этой категории ...???

я знаю, как можно выбрать все сообщения  из одной категории. вот так:
Код

public Criteria createCriteria1(Session session) {
        Criteria c = session.createCriteria(statements.class);
        c.add(Expression.eq("category_id", _category_id));
        c.addOrder(Order.asc("id"));
        return c;
    }


после этого я знаю всех авторов, которые писали в эту категорию. но они могут по несколько сообщений писать... а как построить дерево, чтобы авторы не повторялись??? smile 
PM MAIL   Вверх
hamsterKSU
Дата 25.1.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 3
Всего: 11



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

Добавлено @ 01:17
второй способ, правда не знаю правильный или нет но он есть

TreeMap - хештаблица - уникальных обектов. (не добавит елемент который у него уже есть)
потом получаешь из нее список значений и все.
Код

TreeMap< ... , ... > m = null;
m.values();


Это сообщение отредактировал(а) hamsterKSU - 25.1.2008, 01:18
PM MAIL ICQ   Вверх
Swatch
Дата 25.1.2008, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 453
Регистрация: 2.7.2007

Репутация: 1
Всего: 1



Видимо, я не совсем корректно и до конца сформулировала вопрос. мне такой список авторов нужен будет не только для построения дерева, но и в других ситуациях... поэтому мне надо какой-то метод получения списка авторов для каждой категории ... 

кто-нибудь знает, как такую выборку сделать... в виде SQL-запроса что-то, видимо, такое будет:
Код

select distinct * from Author where Message.author_id = Author.id and Category.id = Message.category_id and Category.id = ?


а как это сделать программно????? smile 
PM MAIL   Вверх
Swatch
Дата 25.1.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 453
Регистрация: 2.7.2007

Репутация: 1
Всего: 1



кто знает HSQ, помогите, пожалуйста, правильно составить запрос!!!!
PM MAIL   Вверх
iluvatar
Дата 25.1.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 17.9.2007

Репутация: 4
Всего: 4



distinct на критериях работает очень плохо. надо использовать hql
я где-то здесь уже писал про мой опыт работы с distinct-criteria. поищи.

Это сообщение отредактировал(а) iluvatar - 25.1.2008, 17:29
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.