Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выборка определенных строк из таблицы, субд oracle 
V
    Опции темы
casinosoftguru
  Дата 27.4.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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


вот запрос которым я выбираю одну строку какую то.. 

select t.rowid, t.*
from table_name t
where t.id = :id

а как бы сделать так чтобы можно было список этих id задать в рантайме ?
один id задается SetDataSetVariable(dataset1, 'ID', 123);
 smile

Добавлено через 6 минут и 8 секунд
я так понял мне нужно юзать WHERE id IN а как тут указать массив значений ну или стринглист например.. чтобы строки брались asVariant

з.ы. может тему все же в делфи перенести..
PM MAIL   Вверх
DimW
Дата 27.4.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(casinosoftguru @  27.4.2010,  16:05 Найти цитируемый пост)
когда пользователь у меня на форме выбирает что то из диалога я этот id хочу дополнительно сохранять в файл
получится у меня текстовичок такой где на каждой строке будет по id
как составить запрос чтобы он мне выбирал все строки у которых id совпадает с этим файлом


что за изврат с текстовичком?!

быть может временная таблица подойдет + запрос:
Код

select t.rowid, t.*
from table_name t
where t.id in (select id from "ВРЕМЕННАЯ_ТАБЛИЦА")


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

Добавлено через 9 минут и 26 секунд
Цитата(casinosoftguru @  27.4.2010,  16:05 Найти цитируемый пост)
з.ы. может тему все же в делфи перенести.. 

может и лучше, только вряд ли вам там предложат что нить кроме динамического SQL. smile
PM MAIL ICQ   Вверх
casinosoftguru
Дата 27.4.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



какая временная таблица ? требуется сделать систему хранения наиболее часто используемых строк из бд и вынести их в шаблоны
есть форма на ней можно выбрать что-то из бд
как только выбор был сделан, ID сохраняем себе локально куда то 
и затем есть combobox который должен выдавать все строки из бд которые сохранены "локально куда то"

Добавлено через 1 минуту и 17 секунд
временная таблица работает от старта до завершения программы ? т.е. она в памяти ? лучше бы надо чтобы она на диске сохранялась
PM MAIL   Вверх
Akina
Дата 27.4.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(casinosoftguru @  27.4.2010,  17:05 Найти цитируемый пост)
получится у меня текстовичок такой где на каждой строке будет по id

Имея сервер БД, ляпать "текстовичок" - это, конечно, могуче. Но через горло гланды удалять всё-таки проще.
Это должна быть таблица, содержащая id выбранных записей и штамп времени выборки. Соответственно в неё добавляются (insert ... on duplicate key update ...) записи последней выборки и удаляются самые старые по времени запроса записи.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DimW
Дата 27.4.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(casinosoftguru @  27.4.2010,  16:31 Найти цитируемый пост)
какая временная таблица ?

oracle create temporary table

Цитата(casinosoftguru @  27.4.2010,  16:31 Найти цитируемый пост)
требуется сделать систему хранения наиболее часто используемых строк из бд

Цитата(casinosoftguru @  27.4.2010,  16:31 Найти цитируемый пост)
и затем есть combobox который должен выдавать все строки из бд которые сохранены "локально куда то"

эти самые часто использоваемые данные храняться: 
1) на протяжении всей жизни БД?
2) быть может неделю?
3) только сеанс пользователя?

эти самые данные персонализированы или являются общей статистикой для всех пользователей?

ответьте на вопросы, тогда подумаем куда лучше их сохранять и как извлекать.

PM MAIL ICQ   Вверх
casinosoftguru
Дата 27.4.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

эти самые часто использоваемые данные храняться: 
1) на протяжении всей жизни БД?

да
Цитата

2) быть может неделю?

нет, независимо от времени
Цитата

3) только сеанс пользователя?

нет конечно.

Цитата

эти самые данные персонализированы или являются общей статистикой для всех пользователей?


персонализированы для каждого пользователя системы.. я планировал хранить массив значений в application data\..\..\папка настроек программы.. там где гриды хранят свои настройки например..




Это сообщение отредактировал(а) casinosoftguru - 27.4.2010, 17:04
PM MAIL   Вверх
DimW
Дата 27.4.2010, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



Цитата(casinosoftguru @  27.4.2010,  16:55 Найти цитируемый пост)
1) на протяжении всей жизни БД?
да

Цитата(casinosoftguru @  27.4.2010,  16:55 Найти цитируемый пост)
персонализированы для каждого пользователя системы.. 


исходя из этого могу предложить следующее:

1) создайте таблицу в БД сполями:
     - user_id
     - use_id

2) при выборе пользователем "чего то там" из формочки делаете запись в таблицу статистики

3) для комбобокса используете запрос:
Код

select t.rowid, t.*
from table_name t
where t.id in (select id from "ТАБЛИЦА_СТАТИСТИКИ" where user_id = :p_user_id)


как такой вариант?
PM MAIL ICQ   Вверх
casinosoftguru
Дата 27.4.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

как такой вариант?


неплохо, попробую, спасибо
PM MAIL   Вверх
Zloxa
Дата 27.4.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(Akina @  27.4.2010,  16:39 Найти цитируемый пост)
Имея сервер БД, ляпать "текстовичок" - это, конечно, могуче

хм, хранить MRU клиента на серверсайде вот это действительно могуче. /*Не, ну не спорю, елси это сервис чтото вроде айгугла, где персонализация пользовательского окружения являет собой бизнес функцию, но ведь наверняка не тот случай, ибо показывать все собираемся в "комбобоксе".*/
Обычно его хранят в реестре.
Можно и в файлике, например XML-е - оч удобно  smile 
Цитата(casinosoftguru @  27.4.2010,  16:05 Найти цитируемый пост)
как составить запрос чтобы он мне выбирал все строки у которых id совпадает с этим файлом

Не понятно от чего вы хотите именно один запрос. Обычно MRU редко содержит более десятка записей а десять запросов по PK это почитай и не нагрузка на сервер.

Если действительно есть необходимость с клиента выбраться по массиву данных, вот здесь я показывал как можно испльзовать в SQL коллекцию, которая передана как связанная переменная. /*второй пример не смотрите, то была шутка*/
Соответственно распарсить файло и сформировать коллекцию это для делфи - плевое дело.

Однко же проще (не значит правильнее) всего использовать XML как для формата файла хранения MRU, так и для выборки по нему:
Код

SQL> var c clob
SQL> begin
  2  :c := '<objects>
  3  <object_id>17911</object_id>
  4  <object_id>7533</object_id>
  5  <object_id>23348</object_id>
  6  <object_id>14197</object_id>
  7  <object_id>22913</object_id>
  8  <object_id>10147</object_id>
  9  <object_id>23554</object_id>
 10  <object_id>23609</object_id>
 11  <object_id>9823</object_id>
 12  <object_id>11733</object_id>
 13  </objects>';
 14  end;
 15  /

PL/SQL procedure successfully completed.

SQL> select o.object_Id,o.object_name
  2  from table(XMLSequence(extract(xmlType(:c),'/objects/object_id')))t
  3  inner join all_objects o on to_number(extractValue(value(t),'/object_id')) = o.object_id;

 OBJECT_ID OBJECT_NAME
---------- ------------------------------
      7533 DBA_REPCAT
      9823 WM_LDIFF
     11733 /3c8039bf_Resolver
     14197 /e6f503f7_RootClassResolverPri
     17911 HTTPClient/BasicCookieBox$1
     22913 /6c3b7ada_ServerHelper
     23348 org/omg/CORBA/BooleanSeqHelper
     23554 /d949d315_ObjectStreamClassUti
     23609 /687b93db_IdentityHashtableEnt

9 rows selected.





Это сообщение отредактировал(а) Zloxa - 27.4.2010, 17:58


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 27.4.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Zloxa @  27.4.2010,  18:32 Найти цитируемый пост)
хм, хранить MRU клиента на серверсайде вот это действительно могуче

Ну кто ж знал, что ему поклиентно... но и даже в этом случае - локальное хранение даёт не по клиенту, а по учётной записи конкретного компьютера. Пересел на соседний комп - и где там твои последние запросы? А если несколько сотрудников периодически юзают один комп под одной учёткой?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 27.4.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Akina, я прекрасно понимаю что ты имеешь в виду. Однако я преисполнен уверенностью что это вовсе не то, что нужно автору. 

Тут оно вишь, мои мысли больше на стороне серверсайда а твои больше на стороне клиентсайда. Бесспорно хранить эту информацию на серверсайде для разработчика фронтэнда было бы куда удобнее - единообразие внешних источников данных и способов доступа к ним. Только вот прикладной ценности эта информация не имеет никакой. Сделать turncate этой табличке никогда не будет жалко, а если данные не жалко терять - зачем их хранить, копить логи транзакций по ним,  быкапить? 

Это сообщение отредактировал(а) Zloxa - 27.4.2010, 18:39


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 27.4.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Zloxa @  27.4.2010,  19:38 Найти цитируемый пост)
прикладной ценности эта информация не имеет никакой

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 27.4.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(Akina @  27.4.2010,  20:42 Найти цитируемый пост)
 кто куда когда за чем лазил

делфевым комбобоксом?

Это сообщение отредактировал(а) Zloxa - 27.4.2010, 23:21


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 28.4.2010, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Zloxa @  28.4.2010,  00:20 Найти цитируемый пост)
делфевым комбобоксом?

Уж не хочешь ли ты сказать, что если я, к примеру, напишу свою оболочку для гуглевского поиска, гугель перестанет запоминать, что я запрашивал? и именно потому, что у меня клиент на дельфах?
По-моему, речь о возможности наличия смысла в хранении такого массива данных на стороне сервера - и я привожу пример оправданности такого хранения.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DimW
Дата 28.4.2010, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

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



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

думаю casinosoftguru, сюда еще заглянет и решит, что ему неоходимо, пищи для размышления предостаточно.  smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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