Евгений Петряев, мой запрос возвращает строки из таблицы, где для строки любой строки R1(A1,B1,C1,D1) не существует такой строки RN(AN,B1,C1,D1), где A1 = AN, B1 = BN, C1 = CN, D1 = DN. Я понял вашу задачу так и предоставил один из способов решения, возможно, я что-то не так понял, поэтому и просил вас сформулировать то, что вы хотите, яснее.
Евгений Петряев, хорошо, по какому условию вы определяете, что строчка встречается один раз? Если A,B,C,D равны?
Тогда можно так посмотреть, при условии, что есть какое-то поле ID:
SELECT *
FROM T1
WHERE T1.ID IN (
SELECT MIN(ID)
FROM T1
GROUP BY A,B,C,D
HAVING COUNT(*) = 1
)
Можете поподробнее описать чего вы добиваетесь от запроса?
Если вам нужны строки, которые есть и в выборке, и в таблице, при том, что сама выборка строится из этой же таблицы, то... зачем вам еще раз проверять таблицу?
psiklop, все зависит от того как много операций производится с этими данными и где это чаще всего происходит. Исходя из этого уже можно думать как лучше поступить. Если у вас запись и изменение этого JSON происходит раз в день - то вообще никакой разницы как делать. Я вот вообще не могу представить почему порядок в JSON может быть важен: в UI компонентах нужно сортировать, а не БД и контроллеры мучить.
psiklop,
Вынося за скобки то, что JSON - это, грубо говоря, словарь ключ/значение, где порядок элементов не должен вообще ни на что влиять,
Правильнее будет делать сортировку в той же функции/процедуре, где вызывается JSON_REMOVE. Если не нравится - можно написать свою функцию, да, возможно она будет работать медленнее, но зато со своей логикой.
Еще можно написать триггер на таблицу BEFORE UPDATE на поле JSON и сортировать значение перед изменением там.
Ну или на клиенте изменить логику и перестать зависеть от сортировки в JSON (либо настроить сортировку там).
Ага, я тоже решил попробовать, но это реально воронка, где со сложностью проекта растет и количество фрейворков. За последние три недели, что я усиленно учу весь этот фронтенд, я познакомился и более/менее освоил:
1. Typescript - больше времени уходит на поиск названия нужного типа. Сам TS простой как две копейки;
2. React-dom - Тоже ничего сложного, за несколько часов учатся основы, потом идет оттачивание на примерах. Разве что с передачей состояний и хуками есть некоторые проблемы, но...
3. React-redux + RTK Query - решает вопрос хранения состояний для приложения. Едва ли не самая сложная часть лично для меня. Даже не в плане теории, тут все легко;
4. React-router - Красивый роутер для построения одностраничных приложений. Умеет многое как обычный браузер, но без лишних запросов к серверу;
5. Ant Design (antd) - Выбрал себе такой UI-фреймворк. Почему он? Да просто первое, что в гугле попалось, честно. Я так понимаю, что они все более-менее одинаковые.
6. faker.js - фреймворк для создания моков. Умеет даже в русский язык.
7. [в планах] json-server - чисто чтобы поднимать легкий api-сервер на том же клиенте.
Самый ад - это заставить все это гармонично взаимодействовать между собой. Опять же повторюсь, в теории ничего сложного нет, сложности начинаются в деталях реализации.
Не знаю, у меня Linux только по работе, поэтому только терминал, только хардкор. Когда увидел впервые UI (у Astra Linux) немного офигел как там все красиво... А потом открыл терминальное окно и продолжил работу. Но видел я там всякие установочники, подозреваю, что это что-то типа батников, "сахар" над баш-скриптом)
Вроде бы там и так по-умолчанию центрируется все в колонках. Может вы поверх чего переопределили?
Гляньте через консоль разработчика что там за классы есть на родительских элементах.
Bermut, к сожалению нет. Я его разворачивал уже настроенным из yaml (который мне предоставляли администраторы) и донастраивал интеграцию с AD по ldap. Примерно знаю что он умеет, но как его настраивать с нуля - увы.
Возможно я что-то и делаю не так, но я создал свой Input, затем HOC, который оборачивает этот Input и превращает его в InputWithSearch (добавляя компонент SearchArea). Смысл в том, что при клике на элемент внутри SearchArea должен перерисовываться и Input. Значения я храню в родителе, в котором отстраиваю InputSearchArea и обновлять его буду через props и, как я теперь понимаю, useEffect.
У вас есть алфавит (a,b,c) с основанием 3 и диапазон в этом алфавите.
Вся задача сводится к тому чтобы перевести первое число диапазона в десятичный uint (first), второе число в десятичный uint(second) и пройти циклом от first до second, переводя переменную-счетчик обратно в свою придуманную систему (с алфавитом (a,b,c) и основанием 3).
вы уверены, что у вас за 2 секунды отрисуется эта кнопка? поставьте time.sleep(30) перед нажатием кнопки и проверьте в этом ли дело.
Вроде бы в Selenium можно задать такое условие, что движок будет ждать отрисовки какого-то элемента и если выйдет время, то пойдет дальше или покажет ошибку.