powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос на выод записей.
25 сообщений из 118, страница 4 из 5
Запрос на выод записей.
    #38104175
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexвот это похоже на помощь...
Больше это похоже на то как слепого кутёнка тычут в блюдце с молоком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104181
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже увидел, что некоторые тут так сильно кичатся своими знаниями, что могут только тыкать на мануалы...
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104188
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты спросил где найти-тебе указали. что не так

?
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104190
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexчто могут только тыкать на мануалы...
знаешь, как я сделал ibase.ru ? меня достало отвечать на одни и те же вопросы.
И в результате что? Ты приходишь, и опять долбишь теми же вопросами :-)

да еще и
sorockinalexв этом же мануале и прочитал про
читаешь кусками.
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104201
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может вам и кажутся вопросы однообразными... Между прочим, прежде чем здесь спрашивать всегда ищу на форумах, может подобные ситуации уже разобраны... не нахожу, спрашиваю тут...
Как буд-то все вы сразу сели и начали безошибочно писать. А головой долбиться об одно и то же, не понимая в чём проблема толку никакого не даёт, да и хелп слабенький!

Вот в ридми прочитал про common table expressions, вожусь, вожусь, никак не додолблю этот вложенный запрос, выдаёт ошибку -104....

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
BEGIN
  FOR
    with

    e0 as
    (
       select
            equipmenthistory.equipmentid,
            max(equipmenthistory.equipmentpardatetime) max_of_equipmentpardatetime0
        from equipmenthistory
        where
           (
              (equipmenthistory.equipmentparslistid = 13) or
              (equipmenthistory.equipmentparslistid = 14)
           )
        group by equipmenthistory.equipmentid
    ),

    e1 as
    (
       select
            e0.equipmentid,
            e0.max_of_equipmentpardatetime0,
            max(equipmenthistory.equipmentpardatetime) max_of_equipmentpardatetime1
        from e0
            left outer join equipmenthistory on (equipmenthistory.equipmentid = e0.equipmentid)
        where
           (
              (equipmenthistory.equipmentparslistid = 13)
           )
        group by e0.equipmentid
    )

    select
        e1.equipmentid,
        equipmentlist.shifr,
        equipmentlist.naim,
        equipmentlist.oboz,
        equipmenthistory.equipmentparvalue,
        e1.max_of_equipmentpardatetime0
    from e1
       left outer join equipmenthistory on (e1.equipmentid = equipmenthistory.equipmentid and e1.max_of_equipmentpardatetime=equipmenthistory.equipmentpardatetime)
       left outer join equipmentlist on (equipmenthistory.equipmentlistid = equipmentlist.id)
    where
    (
          (equipmentlist.shifr like '%' || :IN_SHIFR || '%' ) and
          (equipmentlist.naim like '%' || :IN_NAIM || '%' ) and
          (equipmentlist.oboz like '%' || :IN_OBOZ || '%' ) and
          (extract(year from equipmenthistory.equipmentpardatetime) like '%' || :IN_BIRTHYEAR || '%' )
    )
    order by e.max_of_equipmentpardatetime0 DESC
    INTO :EQUIPMENTID,
         :SHIFR,
         :NAIM,
         :OBOZ,
         :EQUIPMENTPARVALUE,
         :BIRTHYEAR
  DO
  BEGIN
    SUSPEND;
  END
END
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104204
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдобавок по некоторым ошибкам парсер не указывает на какой строке она, откуда ж мне знать в чём дело?
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104211
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
фу, блин...
вроде заработало...

вынес в процедуру LATESTCHANGESEQUIPMENT
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
BEGIN
  FOR
    select
                equipmenthistory.equipmentid,
                max(equipmenthistory.equipmentpardatetime) max_of_equipmentpardatetime
            from equipmenthistory
            where
               (
                  (equipmenthistory.equipmentparslistid = 13) or
                  (equipmenthistory.equipmentparslistid = 14)
               )
            group by equipmenthistory.equipmentid
            order by equipmenthistory.equipmentid
    INTO :EQUIPMENTID,
         :MAX_OF_EQUIPMENTPARDATETIME
  DO
  BEGIN
    SUSPEND;
  END
END



А затем второй процедурой
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
       select
            latestchangesequipment.equipmentid,
            latestchangesequipment.max_of_equipmentpardatetime,
            max(equipmenthistory.equipmentpardatetime) max_of_equipmentpardatetime1
        from latestchangesequipment
            left outer join equipmenthistory on (equipmenthistory.equipmentid = latestchangesequipment.equipmentid)
        where (equipmenthistory.equipmentparslistid = 13)
        group by latestchangesequipment.equipmentid, latestchangesequipment.max_of_equipmentpardatetime



В итоге получил ID оборудования с датой последней операции для этого оборудования, а вторым столбцом - дата последнего задания номера этого оборудования... Для чего это: оборудование имеет номер в формате 123-12, где 12 - это год выпуска...
НО! Год может меняться, в результате переконсервации изделия или других операций, влияющих на результирующий номер изделия.
Может кому будет в пользу...
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104223
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexМожет вам и кажутся вопросы однообразными... Между прочим, прежде чем здесь спрашивать всегда ищу на форумах, может подобные ситуации уже разобраны... не нахожу, спрашиваю тут...
А следовало бы начинать с чтения документации. Где - повторюсь вслед за остальными - все эти вопросы уже давно разобраны и разжеваны.
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104256
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalex,

я просто добавлю, что по многоэтажным запросам тут редко консультируют, а если и помогают, то обязательно с требованиями данных на входе, и желаемых на выходе. Иначе понять что у тебя есть, что надо, и что выводится - невозможно.
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104260
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну спасибо всем, кто реально помог!
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104276
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Куда смотреть, весь гугл облазил...В sql.extensions подсказки не нашёл...???
Есть таблица
ID___N1___N2
1____12___13
2____13___12
3____15___17
4____16___10
5____19___25

Столбец ID с уникальными идентификаторами

Нужно выбрать наибольшее значение в каждой строке между столбцами N1, N2
В результате должно получиться:
ID___N
1____13
2____13
3____17
4____16
5____25
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104280
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexКуда смотреть, весь гугл облазил...Какой-то странный гугл у вас.
Код: plaintext
1.
2.
1) select id, case when n1<n2 then n1 else n2 end from t
2) select id, iif(n1<n2, n1, n2) from t
3) select id, minvalue(n1, n2) from t

ЗЫ. Есть две пилюли, гарантированно облегчающие головную боль типа вашей.
Вот первая и вот вторая (принимать вместе, примерно в течение 2-3 месяцев, ежедневно, по 1-2 часа).
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104283
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, благодарствую! Я реально пару часов разными запросами к яндексу и гуглу обращался, типа:
SQL сравнение двух столбцов
SQL наибольшее значение из двух столбцов....
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104284
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё можно вот так:
begin
for select equipmentid, max_of_equipmentpardatetime
from latestchangesequipment
into :equipmentid,
:equipmentpardatetime1
do
begin
for select equipmentid, max_of_equipmentpardatetime
from latestnumberequipment
into :equipmentid,
:equipmentpardatetime2
do
begin
if :equipmentpardatetime1 > :equipmentpardatetime2 then :equipmentpardatetime = :equipmentpardatetime1
else :equipmentpardatetime = :equipmentpardatetime2
end
end

suspend;
end
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38104286
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexещё можно вот такМожно. Но лучше таки начать приём пилюль осваивать матчасть.
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106692
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят, помогите плиз, CAST не работает что ли...
Код: sql
1.
2.
3.
4.
5.
6.
      select employees.firstname,
             employees.lastname,
             employees.patronymic,
             employees.personalid
      from SPLITSTRING('1,2';',')
             left outer join employees on (employees.id = CAST(SPLITSTRING.part_of_the_string as NUMERIC))



процедура SPLITSTRING разделяет строку, разделённую запятыми на строки
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106709
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, sorockinalex!
You wrote on 11 января 2013 г. 16:30:07:

sorockinalex> ребят, помогите плиз, CAST не работает что
ли...тебе программист нужен
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106713
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexCAST не работает что ли...
Мозг не работает. Тип NUMERIC не имеет умолчательной точности.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106716
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался частично... процедура
Код: sql
1.
SELECT * FROM SPLITSTRING('1,2,3', ',')


не правильная... точнее, она выполняется при её запуске, копирую текст SQL процедуры, вставляю в редактор запросов - запускаться перестаёт с ошибкой:
Error Message:
----------------------------------------
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Dynamic SQL Error.
Input parameter mismatch for procedure SPLITSTRING.
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106723
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovsorockinalexCAST не работает что ли...
Мозг не работает. Тип NUMERIC не имеет умолчательной точности.

Да я изначально сделал as Integer, вылетела ошибка, потом начал читать где-то, увидел NUMERIC, решил подставить его... Дело в процедуре сейчас... входные параметры - VARCHAR оба
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106734
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот сама процедура SPLITSTRING
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
create or alter procedure SPLITSTRING (
    S varchar(100),
    SEPARATOR varchar(1))
returns (
    PART_OF_THE_STRING varchar(100))
as
declare variable I integer;
declare variable POS integer;
declare variable PART_OF_THE_STRING_TMP varchar(100);
BEGIN
  I = 0;
  POS = 0;
  PART_OF_THE_STRING = '';
  PART_OF_THE_STRING_TMP = '';
  WHILE (:I < CHAR_LENGTH (:S)) DO
    BEGIN
      I = :I + 1;
      PART_OF_THE_STRING_TMP = SUBSTRING (:S FROM :I FOR 1);
      IF (:PART_OF_THE_STRING_TMP = :SEPARATOR) THEN
        BEGIN
          POS = :POS + 1;
          suspend;
          PART_OF_THE_STRING = '';
        END
      ELSE
        BEGIN
          PART_OF_THE_STRING = :PART_OF_THE_STRING || :PART_OF_THE_STRING_TMP;
        END
    END
  suspend;
END
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106736
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexДело в процедуре сейчас...
+1 к МП.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106757
sorockinalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что значит МП?

запускаю процедуру на выполнение в IBExpert... В окне ввожу данные, нажимаю OK - выполняется...
Делаю то же самое, только на последнем этапе переключаю вкладку на SQL, беру этот текст запроса:
Код: sql
1.
SELECT * FROM SPLITSTRING('1,2,3', ',')


вставляю в построитель запросов - отказывается работать...
в чём дело?
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106883
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPLITSTRING('1,2' ; ',')
...
Рейтинг: 0 / 0
Запрос на выод записей.
    #38106963
Esperito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorockinalexвставляю в построитель запросов - отказывается работать...
в чём дело?В построителе запросов.
Не используй его, напиши запрос руками безо всяких визуализаций.
...
Рейтинг: 0 / 0
25 сообщений из 118, страница 4 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос на выод записей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]