powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, где ошибка?
14 сообщений из 14, страница 1 из 1
Подскажите, пожалуйста, где ошибка?
    #32203457
td
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
td
Гость
Подскажите, где я ошибся?

select lib.NAME as NAME_TOV,
T2.NAME AS NAME_GR1,
T3.NAME AS NAME_GR2,
T4.NAME AS NAME_GR3,
T5.NAME AS NAME_GR4
from LIB
join lib T2 on lib.ID=T2.PARENT
join LIB T3 on T2.ID=T3.PARENT
join LIB T4 on T3.ID=T4.PARENT full outer
join LIB T5 on T4.ID=T5.PARENT
where lib.flag=8;
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203488
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там и ошибся. Что за вопрос странный, какая ошибка - непонятно - цирк!
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203561
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рискну угадать

может быть, нельзя писать join on? а то что в on надо перенести в where?
и про full outer join в ibase я еще не проходил, не могу комментировать.

конечно трудно гадать без знания, какое выскочило сообщение об ошибке
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203581
td
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
td
Гость
Не правильно отображает и ошибки никакой нет. поля пустые почему-то ... кроме NAME_TOV и NAME_GR4
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203859
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To fedd
join ... on ... писать можно и более того было замечено что работает быстрее чем просто поместить в секцию where. Про full outer -- никогда не юзал.

To td отключи все join а потом по очереди добавляй их и смотри на результат...
да и помни что null сравнивать с любым числом будет некоректно
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203950
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ЧТО СОБСТВЕННО НУЖНО ПОЛУЧИТЬ ТО В РЕЗУЛЬТАТЕ?

full outer join ?
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203957
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо там хотелось проход по дереву до 5-го уровня ;)
в середине почему-то full outer join
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203962
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To fedd.

Насколько я знаю full outer join в данном случае полный тормоз всего запроса. При просто join будет работать номально, но не все записи попадают, а только те, где пять уровней. Если уровней меньше 5, то запрос не выдаст ничего.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203968
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот если использовать left join, то выводятся все записи таблицы. Естественно, где уровней меньше, то соответствующие поля = NULL.

Вот сообственно и все.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32203970
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже заметил,
но у него все поля пустые, кроме первых, а он left outer join вовсе не использует. ну че гадать-то, данных мы не видим, подождем td.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32204013
td
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
td
Гость
Привожу пример таблицы:

ID PARENT FLAG NAME
1 0 4 Периферия
2 1 4 Мониторы
3 2 4 LCD-мониторы
4 3 4 Мониторы 15”
5 4 8 Монитор 15" LCD CTX PanoView520
6 4 8 Монитор 15" LCD FineView LM 1570A
7 4 8 Монитор 15" LCD Hansol H530T Silver TCO99
8 4 8 Монитор 15" LCD LG Flatron 568LM
9 1 4 Принтеры
10 9 4 Лазерные принтеры
11 10 8 Принтер HP Laser Jet 1100
12 10 8 Принтер HP Laser Jet 2100

Хочу получить:
NAME_TOV NAME_GR1 NAME_GR2 NAME_GR3 NAME_GR4
Монитор 15" LCD CTX PanoView520
Периферия Мониторы LCD-мониторы Мониторы 15”
Монитор 15" LCD FineView LM 1570A
Периферия Мониторы LCD-мониторы Мониторы 15”
Монитор 15" LCD Hansol H530T Silver TCO99
Периферия Мониторы LCD-мониторы Мониторы 15”
Монитор 15" LCD LG Flatron 568LM
Периферия Мониторы LCD-мониторы Мониторы 15”
Принтер HP Laser Jet 1100 Периферия Принтеры Лазерные принтеры
Принтер HP Laser Jet 2100 Периферия Принтеры Лазерные принтеры
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32204044
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А посмотреть http://sdm.viptop.ru/articles/sqltrees.html
и другие документы лень?
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32204072
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно... То что было у тебя - не будет работать.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select

T1.NAME as NAME_TOV, 
T2.NAME AS NAME_GR1, 
T3.NAME AS NAME_GR2, 
T4.NAME AS NAME_GR3, 
T5.NAME AS NAME_GR4 

from LIB T1

join LIB T2 on T1.PARENT=T2.ID 
join LIB T3 on T2.PARENT=T3.ID 
join LIB T4 on T3.PARENT=T4.ID
join LIB T5 on T4.PARENT=T5.ID 

where T1.flag= 8 ;


В любом случае NULL будет появляться всегда при таком запрос.

Такую конструкцию можно постоить скорее всего через ХП. Вот там будет все ок.

Можно еще поизощряться с FB 1.5, но думаю ХП, будет эффективнее.
...
Рейтинг: 0 / 0
Подскажите, пожалуйста, где ошибка?
    #32204074
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Забыл не join а left join, а то работать не будет ...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите, пожалуйста, где ошибка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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