entryway
> в каком-то диалекте просто name is null не сработает?
не понимаю.. так:
order by name is null
?
в SQL-же нет концепции что bool выражение можно кастовать к 0 или 1 (not 0).
он заставляет писать case выражение
у меня работает, mysql
у тебя select 42 is null возвращет не 0 что ли?
MSSQL
select 42 is null
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'is'.
та же беда:
select cast((42 is null) as int)
PostgreSQL
сработал как ожидается - вернул false
SQLite
сразу кастанул результат в 0
учебник пишет
Когда создается запрос с использованием
SELECT*, гарантировано получение в результате запроса столбцов в порядке опреде-
ления.
если без звезды то гарантии нет.
пакет Microsoft SQL server
др пакеты наверно могут отличаться моментами
на это задание отводится полтора часа.
Rikk
> если без звезды то гарантии нет.
MSSQL - посылает без звезды (Incorrect syntax near the keyword 'from'.) select
SQLite - посылает без звезды
PostgreSQL - выдаёт пустой ответ (но количество пустых рядов соответствует реальности)
MySQL - посылает без звезды
Offtop
https://minyurov.files.wordpress.com/2014/10/microsoft-sql-server… 012-t-sql.pdf
учебник пробегите быстро до стр 140
стр 120 начинается соединения join
до стр 120 разные варианты стандартного select-from-where-group-order by
Rikk
> учебник пробегите быстро до стр
> если без звезды то гарантии нет.
а где про запрос без звезды вида:
SELECT FROM OPERAT
прочитать?
Учебник староват, потому что в нём, вроде бы не пишут нифига про window-function (аналитические функции), которые могут обрабатывать данные построчно.
для MSSQL это панацея и в каждой бочке затычка в 2020х
skalogryz
> обрабатывать данные построчно.
> для MSSQL это панацея
Неужели SQLite круче чем MSSQL, там всё работает?
Даже свои функции можно вносить находу.
flint2
> Неужели SQLite круче чем MSSQL, там всё работает?
в каком смысле? window функции не сразу завозили. просто сам учебник старый
flint2
> Хочется в виде DB.
просто сконвертируй весь html в бд
и что такое "обратные деревья"?
у тебя есть таблица с терминами. где хранится слово + описание к нему
есть дополнительная таблица которая связывает термины между собой. (многие ко многим)
skalogryz
> у тебя есть таблица с терминами. где хранится слово + описание к нему
> есть дополнительная таблица которая связывает термины между собой.
Никак нет!
Ну читай же между строк: https://disk.yandex.ru/d/xRNQaaevQXqfnA
skalogryz
> (многие ко многим)
Так точно!
На палцах:
"Шла девушка по улице с косой."
Элементы дерева до листа 'коса'(выборочно):
СОСТАВНАЯ ЧАСТЬ - ВЫСТУП, ВЫСТУПАЮЩАЯ ЧАСТЬ - МЫС БЕРЕГА - коса
ПОСТОЯННАЯ СУЩНОСТЬ - АБСТРАКТНАЯ СУЩНОСТЬ - СВОЙСТВО, ХАРАКТЕРИСТИКА - ФОРМА, НАРУЖНЫЙ ВИД - ПРИЧЕСКА (ФОРМА ВОЛОС) КОСА ВОЛОС - коса
ПОСТОЯННАЯ СУЩНОСТЬ - ФИЗИЧЕСКИЙ ОБЪЕКТ - ПРЕДМЕТ, ВЕЩЬ - ПРИСПОСОБЛЕНИЕ, ИНСТРУМЕНТ - СЕЛЬСКОХОЗЯЙСТВЕННОЕ ОРУДИЕ - коса
Понятно излагаю?
В тоже время, 'коса' является корнем дерева потомками которого являются элементы основного дерева, если идти вспять. Понятно, или где?
Как это оформить - ума не приложу, чтоб лаконично.
Пока n-связанные списки и из них деревья, но хочется-же DB!
flint2
Дерево можно представить в таблице просто, указав в записях id родительского узла. Проблема только, что в такой форме почти ничего нельзя сделать с этим деревом через sql. Чтобы операции стали возможны, формируют вспомогательную вторичную таблицу, в которую вносят все возможные комбинации связей узлов, включая транзитивные.
Да, это не соответствует правилам нормальных форм базы, создает уязвимость. Но на это вынуждены идти чтобы работать с деревьями.
Zab
Мне кажется, что ты, ты не услышал.
Но проблема стоит как из пистолета. , не только у меня...
Будем думать!
P.S.
что в такой форме почти ничего нельзя сделать с этим деревом через sql.
Наверно ты прав, я сам дурак!
Но мечтать ведь так приятно!
Отвлечённо:
Лучше ли по весне 17 соток вскопать лопатой, чем плуг придумывать(ведь каждую весну и 50 лет так - привыкаешь, а тем более трактор придумывать(купить(два не поднимутся и этот запорит - сын)) - сгниёт картошка на полях!
Виноват, исправлюсь, может быть.
Честь - имею!
Zab
> Дерево можно представить в таблице просто, указав в записях id родительского
> узла. Проблема только, что в такой форме почти ничего нельзя сделать с этим
> деревом через sql. Чтобы операции стали возможны, формируют вспомогательную
> вторичную таблицу, в которую вносят все возможные комбинации связей узлов,
> включая транзитивные.
> Да, это не соответствует правилам нормальных форм базы, создает уязвимость. Но
> на это вынуждены идти чтобы работать с деревьями.
Элита всё может:
ВЫБРАТЬ Товары.Ссылка, Товары.Артикул ИЗ Справочник.Товары КАК Товары ГДЕ Товары.Ссылка В ИЕРАРХИИ(&Группа)
vs
ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель = &Группа
Второе вернёт только товары в конкретной группе (по сути фильтрация по Parent/Родитель), первое же вернёт само все вложенные товары и подгруппы.
Или
ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура УПОРЯДОЧИТЬ ПО Наименование ИЕРАРХИЯ
В этом случае сортировка по наименованию будет произведена внутри сортировки по иерархии вложенности в группы.
А в таком варианте:
ВЫБРАТЬ УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура, УчетНоменклатурыОбороты.Номенклатура.Представление, УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты ИТОГИ СУММА(КоличествоОборот) ПО Номенклатура ИЕРАРХИЯ
В результат будут добавлены не только строки сумм по каждой номенклатуре, но и по всем группам и подгруппам в которых каждая номенклатура лежит.
Платформа сама конвертируя это в SQL добавляет промежуточные запросы чтобы выдёргивать и обрабатывать иерархию автоматически https://rarus.ru/publications/20220330-ot-ekspertov-postroenie-i-… ur-1c-525795/
=A=L=X=, ты насчёт TS?
Там всё просто.
Насчёт меня - ты не понял условия задачи.
Zab понял.
Как всё таки нас постояли, отмуштровали.