Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > сложная выборка. как сделать???


Автор: Swatch 24.1.2008, 14:58
Добрый день.

Есть 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 

Автор: hamsterKSU 25.1.2008, 01:10
во первых при добавлении автора можно проверять добавлен он в список или нет

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

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

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

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

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

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


а как это сделать программно????? smile 

Автор: Swatch 25.1.2008, 09:24
кто знает HSQ, помогите, пожалуйста, правильно составить запрос!!!!

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)