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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Join не присоединяет вложенный запрос, interbase 7.5 
:(
    Опции темы
FINANSIST
Дата 24.2.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Код

 select distinct p1.partnernumber as general_code, p.partnernumber as SubCode,
  p.partnername as Nm
from t_partner p inner join (select payerid, partnernumber  from  t_partner
where partnerid = payerid ) as p1 on p.payerid = p1.payerid
where p.kpartnerid = 3
order by 1 asc,  2 asc


Цитата

Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 28.
select.


Проверил такое
Код

select * from
(select payerid, partnernumber  from  t_partner
where partnerid = payerid ) as p1

То же самое
Хотя сам по себе вложенный запрос рабочий
Как мне переписать 1 запрос? (interbase 7.5)

Это сообщение отредактировал(а) FINANSIST - 24.2.2010, 14:11


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Deniz
Дата 24.2.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



FINANSIST, что-то я проблемы не вижу переписать все на обычный join.
Все выбирается из одной таблицы.
Код
select distinct 
  p.partnernumber as general_code, 
  p.partnernumber as SubCode,
  p.partnername as Nm
from t_partner p 
where (p.kpartnerid = 3)
  and (p.partnerid = p.payerid)
order by 1,  2



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Frees
Дата 24.2.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



в под запросе в данном случае нельзя использовать поля из основного запроса

Добавлено @ 21:38
Код

 SELECT DISTINCT P1.PARTNERNUMBER AS GENERAL_CODE, P.PARTNERNUMBER AS sUBcODE,
  P.PARTNERNAME AS nM
FROM T_PARTNER P 
    JOIN (SELECT PAYERID, PARTNERNUMBER  FROM  T_PARTNER
 )  P1 ON P.PAYERID = P1.PAYERID
WHERE P.KPARTNERID = 3
ORDER BY 1 ASC,  2 ASC


хотя под запрос в данном случае лишнее

Это сообщение отредактировал(а) Frees - 24.2.2010, 21:39


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
FINANSIST
Дата 25.2.2010, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Deniz @  24.2.2010,  14:51 Найти цитируемый пост)
FINANSIST, что-то я проблемы не вижу переписать все на обычный join.
Все выбирается из одной таблицы.

Если б так  было все просто, я бы не создавал себе трудностей, верно?
Фишка в следующем: Есть общекорпаративный код бизнес единицы(PARTNERNUMBER), есть
системно сгенерированный код бизнес единицы(partnerid ), и есть системно сгенерированный код плательщика бизнес единицы(PAYERID)
Фактически - бизнес единица это головное подразделение носящее имя всей сети (напр. Ашан) в случае, если PAYERID = partnerid . В этом случае PARTNERNUMBER такой записи - это головной код всех структурных подразделений. Записи, где текущие PAYERID = PAYERID головного подразделения но текущие partnerid отличны от текущих PAYERID  имеют общекорпоративные коды филиалов (напр Ф1 Ашан).
Необходимо получить 3 столбца : головной общекорпоративный код (т.е.не системный), филиальный общекорпоративный код (т.е.не системный), имя бизнес единицы.
Например при источнике 
PARTNERNUMBER | PAYERID | partnerid |partnername 
777                     |10001  | 10001| Ашан
111                     |10001  | 30005| Ашан Филиал 1
333                     |10001  | 30007| Ашан Филиал 2
Получить результат
general_code|SubCode|Nm
777               | 777       | Ашан 
777               | 111       | Ашан Филиал 1
777               | 333       | Ашан Филиал 2



Это сообщение отредактировал(а) FINANSIST - 25.2.2010, 09:55


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Deniz
Дата 25.2.2010, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(FINANSIST @  25.2.2010,  10:44 Найти цитируемый пост)
Если б так  было все просто, я бы не создавал себе трудностей, верно?
так и надо было сразу все рассказать, а по твоему первому select'у тебе ответили.
Цитата(FINANSIST @  25.2.2010,  10:44 Найти цитируемый пост)
Фактически - бизнес единица это головное подразделение носящее имя всей сети (напр. Ашан) в случае, если PAYERID = partnerid .
в примере нет ни одной такой записи.
Из текущего примера ничего на понял. Можешь привести нормальные данные?
Как я понял есть древовидная структура подчинений, но не видно кто кому подчиняется.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
FINANSIST
Дата 25.2.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Deniz @  25.2.2010,  09:41 Найти цитируемый пост)
в примере нет ни одной такой записи

косяк в примере отредактировал


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Deniz
Дата 25.2.2010, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Вот теперь имеем что-то похожее на дерево (опять же непонятно какая вложенность 2 или более).
Попробуй так (если уровень вложенности 2)
Код
select 
  p2.PARTNERNUMBER as general_code,
  p1.PARTNERNUMBER as Sub_code,
  p1.nm
from t_partner p1
  join t_partner p2 on p2.partnerid = p1.PAYERID
where ...
если там "нормальное" дерево, нужна рекурсия.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
FINANSIST
Дата 25.2.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Deniz @  25.2.2010,  11:46 Найти цитируемый пост)
Попробуй так (если уровень вложенности 2)

спасибо, так все просто оказалось!
А что ib не поддерживает объединения с алиасами запросов напрямую, как в Access? (первый select в Access нормально работает)


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Deniz
Дата 25.2.2010, 14:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Здесь большинство (и я в том числе) пользуется FireBird. А они с IB давно разошлись по функционалу, поэтому ...


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




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


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

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