powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
14 сообщений из 39, страница 2 из 2
Помогите с запросом
    #32479571
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мим Очень любопытно посмотреть на такую SP

Дикая выборка получается, но работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  CREATE PROCEDURE WILD_SELECT (TYPE INTEGER )
RETURNS (WILD_ID INTEGER, NAME VARCHAR( 255 ))
AS 
BEGIN
  WILD_ID= 0 ;
  FOR SELECT NAME FROM TABLE1 WHERE TYPE = :TYPE INTO :NAME DO BEGIN
    WILD_ID=WILD_ID+ 1 ;
    SUSPEND;   
  END
END

А далее самое страшное:

Код: plaintext
1.
2.
SELECT W1.NAME NAME1, W2.NAME NAME from  WILD_SELECT W1 FULL JOIN
WILD_SELECT W2 ON (W1.WILD_ID=W2.WILD_ID)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32479591
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нижний запрос неверен.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32479612
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нижний запрос неверен.
Не придирайся.

Код: plaintext
1.
2.
3.
SELECT W1.NAME NAME1, W2.NAME NAME from  WILD_SELECT( 0 ) W1 FULL JOIN

WILD_SELECT( 1 ) W2 ON (W1.WILD_ID=W2.WILD_ID)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32479628
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С чего ты взял, что я придираюсь?
...
Рейтинг: 0 / 0
Помогите с запросом
    #32479644
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, при некоторой модификации SP можно FULL заменить на INNER и запрос будет работать гораздо быстрее.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32479710
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество записей с TYPE = 1 и TYPE = 0 заранее неизвестно.
Каким макаром собираешься делать INNER ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480197
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неохота объяснять. Споры возникнуть насчет производительности, а мне некогда, проект надо здавать.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480486
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты "на палцАх" поясни, мы догадливые, мы поймём
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480538
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
  CREATE PROCEDURE WILD_SELECT (TYPE INTEGER )

RETURNS (WILD_ID INTEGER, NAME VARCHAR( 255 ))

AS

BEGIN

  WILD_ID= 0 ;

  FOR SELECT NAME FROM TABLE1 WHERE TYPE = :TYPE INTO :NAME DO BEGIN

    WILD_ID=WILD_ID+ 1 ;

    SUSPEND;  

  END
  FOR SELECT NAME FROM TABLE1 WHERE TYPE <> :TYPE INTO :NAME DO BEGIN
    NAME = null;
    WILD_ID=WILD_ID+ 1 ;

    SUSPEND;  

  END

END



Код: plaintext
1.
2.
3.
SELECT W1.NAME NAME1, W2.NAME NAME from  WILD_SELECT( 0 ) W1 FULL JOIN
WILD_SELECT( 1 ) W2 ON (W1.WILD_ID=W2.WILD_ID) WHERE W1.NAME IS NOT NULL AND W2.NAME IS NOT NULL



Вот такая идея. Как работает не проверял, некогда.
Это универсальный способ. Но если известно кол-во типов заранее, то ХП можно оптимизировать.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480550
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй запрос не так написал.
Надо так:
Код: plaintext
1.
2.
3.
SELECT W1.NAME NAME1, W2.NAME NAME from  WILD_SELECT( 0 ) W1 INNER JOIN

WILD_SELECT( 1 ) W2 ON (W1.WILD_ID=W2.WILD_ID) WHERE W1.NAME IS NOT NULL OR W2.NAME IS NOT NULL
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480741
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох и могуч ты извращизмы писать
Замечу, что корректная работа данного метода возможна только в SNAPSHOT'е.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480758
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так задача изначально была извратная.
Иного решения не могу придумать (да и времени нет), извиняйте.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480764
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не нужно ничего придумывать.
Изначально было сказано - в сад с такой задачей.
...
Рейтинг: 0 / 0
Помогите с запросом
    #32480783
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я для прикола.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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