Динамический запрос

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем FreeWay, 2 июл 2008.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. FreeWay

    FreeWay Гость

    Всем привет. С простенькими запросами нет проблемм, но тут понадобилось сделать в одном запросе выборку из нескольких таблиц, подскажите как правильно написать запрос. БД ASA9

    в Sybase Central этот запрос отрабатывает SELECT chan_name, Start,Stop FROM key_channels,KEY_public_gen WHERE chan_id= (SELECT chan_id FROM key_cross WHERE key_id=632

    а вот с билдера ругается на синтаксис( подправьте кто может)

    Код (Text):
    Query1->SQL->Add("SELECT chan_name, Start,Stop FROM key_channels,KEY_public_gen WHERE chan_id= (SELECT chan_id FROM key_cross WHERE key_id=632)");
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    0
    А вложенные запросы поддерживаются? А Вложенный запрос может возвращать более одной записи?
    Вообще, sax_ol прав, без текста сообщения говорить не о чем


    Кстати, Билдер не анализирует текст запросов. Для него это просто строка. Если Билдер ругается на этапе компиляции, то проблема не в запросе
     
  3. FreeWay

    FreeWay Гость

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

    Код (Text):
    SELECT chan_name FROM key_channels WHERE chan_id=668
    отрабатывает.

    запрос возвращает по одной записи:
    chan_name
    Start
    Stop
     
  4. FreeWay

    FreeWay Гость

    блин забыл ошибку выложить)
    вот:
     

    Вложения:

    • Динамический запрос
      error.jpg
      Размер файла:
      48,3 КБ
      Просмотров:
      11
  5. FreeWay

    FreeWay Гость

    да, если таким макаром [] сделать, то работает.
    а теперь хочу немного доработать:
    этот запрос выгребает много записей, так как для одного chan_name есть много start stop, поясню для ясности
    chan_name это имя юзера, start stop это дата начала действия ключа и соответственно конец действия. Все даты ключей хранятся, поэтому мне выдает около 30 строк с разными датами, но мне надо одну - текущий, действующий ключь, для этого делаю:

    Код (Text):
    SELECT chan_name, max([Start]),max([Stop]) FROM key_channels,KEY_public_gen WHERE chan_id= (SELECT chan_id FROM key_cross WHERE key_id=632)
    на что выдает:

    function or column reference to "chan_name" must also appear in a "GROUP BY"

    С ЭТИМ РАЗОБРАЛСЯ, записал так:

    Код (Text):
    SELECT chan_name, MAX([Start]),MAX([Stop]) FROM key_channels,KEY_public_gen WHERE chan_id= (SELECT chan_id FROM key_cross WHERE key_id=632) GROUP BY chan_name
    спасибо, темма закрыта :)
     
Загрузка...
Похожие Темы - Динамический запрос
  1. xbeetle
    Ответов:
    15
    Просмотров:
    995
  2. WingmanIX
    Ответов:
    2
    Просмотров:
    1.478
  3. Marazm
    Ответов:
    0
    Просмотров:
    1.311
  4. Mitya
    Ответов:
    6
    Просмотров:
    2.081
  5. Ruslan737
    Ответов:
    0
    Просмотров:
    1.118
Статус темы:
Закрыта.

Поделиться этой страницей