Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нужна идея - SQL Browser

Ответить
Настройки темы
C/C++ - Нужна идея - SQL Browser
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Изменения
Автор: pva
Дата: 25-02-2012
начится так. Вот минипрограмка, которая отображает запросы SQL в виде дерева. Для запуска:
1. Соберите (Borland C++ Builder 6.0)
2. Тыкните на tree_table.udl и введите настройки соединения
3. Отредактируйте файлик tree_table.sql с запросами. Файл состоит из 2-х списков, ограниченных тэгами <root>..</root>. Внутри тэг <key>..</key> задаёт название, <sql>..</sql> запрос. Текст мезду тегами воспринимается "буквально", т.е. без пропуска пробелов и переводов строк. Первый список задаёт корни дерева, второй - все остальные ветки. Запрос должен возвращать поля:
1. Ключ следующей записи <key> во втором списке <root>, либо пустая строчка, если не раскрывать
2. ИД записи (используется declare @parent_id integer; set @parent_id=ИД; перед запросом, взятым по ключу <key>)
3. Картинка, соотвествующая ветке (игнорируется)
4. Текст, соответсвующий ветке
В тексте запроса во втором списке <root> можно применять переменную @parent_id. Перед <key> и <sql> можно оставлять комментарий
Код: Выделить весь код
<root>

  <key>Тип поиска 1</key>

  <sql>
    select
        'table2.table1_id' as next,
        id as id,
        '1.bmp' as image,
        text as text
    from
        table1
    order by
        text
  </sql>

  <key>Тип поиска 2</key>

  <sql>
    select
        'table2.table3_id' as next,
        id as id,
        '1.bmp' as image,
        text as text
    from
        table3
    order by
        text
  </sql>

</root>
<root>

  <key>table2.table1_id</key>

  комментарий

  <sql>
    select
        'table4.table2_id' as next,
        id as id,
        '2.bmp' as image,
        text as text
    from
        table2
    where
        table1_id = @parent_id
    order by
        text
  </sql>

  <key>table3.table1_id</key>

  <sql>
    select
        '' as next,
        id as id,
        '3.bmp' as image,
        text as text
    from
        table3
    where
        table1_id = @parent_id
    order by
        roomOrd
  </sql>

  <key>table4.table2_id</key>

  <sql>
    select
        '' as next,
        id as id,
        '4.bmp' as image,
        text as text
    from
        table4
    where
        table2_id = @parent_id
    order by
        text
  </sql>
</root>
Всё замечательно, но теперь вопрос: хочу сделать возможность двигаться по различным направлениям, а не по одному только. Например: пусть есть пользователи, у которых группа, должность, и рабочее место. Чтобы можно было:
1. выбрать "должность", "группа" или "рабочие места" (как в верхнем выпадающем списке в программе выше)
2. допустим выбрали должность. И выбрали из списка какую
3. выбрать "группа" или "рабочие места"
4. допустим выбрали "группа" и из списка групп с такой должностью выбрали одну группу.
5. осталось "рабочие места" - выбрали рабочее место
6. получили список пользователей
Как соединять запросы SQL? Нужна идея, желательно хитрая

Отправлено: 13:58, 28-11-2008

 
pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


пока остановился на условной трансляции SQL с тасканием за собой параметров трансляции. Типа того:
Код: Выделить весь код
select <top>top <top_value></top>
  <count>count(*)</count>
  <no_count>
        '' as next,
        id as id,
        '4.bmp' as image,
        text as text
  </no_count>
from
   table4
where
  <field1>field1=<field1_value></field1>
  <field2><field1>and</field1> field2=<field2_value></field2>
В качестве меток транслятора пока подобие тегов, хотя можно было директивы сишного препроцессора. Или может урезанное подобие php лучше сделать, или ещё как? Критерий: чтобы читалось легко.

Отправлено: 12:10, 01-12-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


остановил выбор всё же на тэгах типа html,xml. Причёсываю "язык". Возник такой вопрос: сколько раз sql-сервер сделает проверку @parentId is null и @like is null в следующием коде, который вываливает табличку из 1000 строчек:
Код: Выделить весь код
declare @parentId integer; --set @parentId=397;
declare @like varchar(10);

select top 11
    'waresGroup.parentId' as next,
    str(id,8,0) as id,
    '1.bmp' as image,
    name
from
    waresGroup
where
    ((@parentId is null and parentId is null) or parentId=@parentId) and enabled=1
    and (@like is null or name like @like)
union
select top 11
    '' as next,
    'W' + str(id,8,0),
    '2.bmp' as image,
    name
from
    wares
where
    ((@parentId is null and waresGroupId is null) or waresGroupId=@parentId) and enabled=1
    and (@like is null or name like @like)
один раз или 1000 в каждой строчке? Если догадается, что это условие не меняется, то оставлю запрос как есть, если это не оптимизируется, то буду допридумывать, чтобы уходил уже оптимизированный запрос

Отправлено: 12:14, 23-01-2009 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нужна идея - SQL Browser

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Государственная идея ALLY Флейм 23 03-01-2009 04:00
новая идея Mozilla Desktop Environment must die Новости и флейм из мира *nix 3 27-03-2007 22:02
Есть идея устроить ethernet в масшатабах райнов. Oikio Хочу все знать 4 19-02-2007 23:59




 
Переход