На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> запросы из виртуальных таблиц... , Delphi/ADO/SQL
    возможно ли делать запросы из виртульных (отображаемых, т. е. созданных командой SELECT) таблиц?
    т. е. что-то типа того:
    ExpandedWrap disabled
      SELECT *
      FROM (SELECT field_name1, field_name2
            FROM table_name
            WHERE field_name3 <> NULL)
      WHERE feild_name1 > 5

    я понимаю, что пример плохой, но всё же, возможно ли это?
      Да
        И не только select но и insert
          а можно создать имя для виртуальной таблицы...и работать с ней как с обычной?
          типа вот этого:
          ExpandedWrap disabled
             
            create table virtual_table_name
            (
              SELECT field_name3, field_name4
              FROM table_name
              WHERE field_name1 < field_name2
            );
            UPDATE virtual_table_name
            SET field_name5 = field_name6
            WHERE field_name7 <=
            (
              SELECT count (field_name3)
              FROM virtual_table_name <-----------------------------here
              WHERE field_name3 = field_name4
            );
            drop table virtual_table_name;
            Цитата
            archimed7592, 9.06.04, 17:18
            а можно создать имя для виртуальной таблицы...и работать с ней как с обычной?
            не можно, а нужно.
            Цитата
            SELECT *
            FROM (SELECT field_name1, field_name2
            FROM table_name
            WHERE field_name3 <> NULL)
            не будет работать, нужно писать
            Цитата
            SELECT *
            FROM (SELECT field_name1, field_name2
            FROM table_name
            WHERE field_name3 <> NULL) А(алиас)
              All как получить имя файла созданого оператором "select" (_Q?????)?
                Цитата
                archimed7592, 9.06.04, 17:18
                а можно создать имя для виртуальной таблицы...и работать с ней как с обычной?

                Для этого существуют представления (Views).

                2 Bas: не понял... :wacko: Какого файла, каким "select" (_Q?????)? ??!
                  InterBase не поддерживает такую форму запроса. :wacko:
                    Цитата Chow @ 10.06.04, 09:14
                    Цитата
                    archimed7592, 9.06.04, 17:18
                    а можно создать имя для виртуальной таблицы...и работать с ней как с обычной?

                    Для этого существуют представления (Views).

                    А я смогу в этот Views добавлять/изменять данные перед отправкой клиенту?

                    И еще: если прав, то views это виртуальные(не физические) таблицы, а следовательно они сами будут уничножаться после окончания выполнения процедуры. Или надо самому чистить?
                      View-представление, физически существует в виде уже скомпиленного запроса например[sql]select *
                      from таблица[/sql] и при вызове дает данные. вот и все

                      Добавлено в :
                      Цитата
                      DVP, 14.07.04, 09:08
                      А я смогу в этот Views добавлять/изменять данные перед отправкой клиенту?
                      добавить нет, но изменить для показа да.[sql]select Name + ' user' AS Name
                      from таблица [/sql]
                      правда существуют модифицируемые представления, но ета другая песня.
                        Цитата
                        DVP от 14.07.04, 06:08
                        они сами будут уничножаться после окончания выполнения процедуры. Или надо самому чистить?

                        чистить вот так:

                        ExpandedWrap disabled
                          if Active then Close;
                          with SQL do
                          begin
                                     Clear;
                                     Add('DROP VIEW Temper2, Temper3');
                          end;
                          ExecSQL;
                          А как проверить, что представления (view) существуеют в базе?

                          столкнулся с проблемой, что перед выполнением запросов необходимо прежде удалить представления, но не знаю проверить их наличие....
                            Разговор беспредметный... Вложенные запросы реализованы не во всех базах данных. Пожалуйста конкретезируйте с какой базой данных работаете...
                              сорри, даже и не знал, что по разному, думал, если пользоваться стандарт sql-92, то должно быть везде одинаково
                              конкретизирую
                              ADO/Delphi6/Access97-2000-2002
                                Цитата tomsksmile, 5.10.04, 21:47
                                столкнулся с проблемой, что перед выполнением запросов необходимо прежде удалить представления, но не знаю проверить их наличие....



                                Удаляй... система сама разберётся есть оно или нет...
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0425 ]   [ 16 queries used ]   [ Generated: 24.04.24, 10:44 GMT ]