Ответы пользователя по тегу SQL
  • Order by distance. Как?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если вы не хотите заниматься достаточно сложным математическим расчетом, то проще будет завести отдельную таблицу с расстояниями: от, до и расстояние и уже по ней делать пересчет. Ну и соответственно каждый раз обновлять.

    На обновлениях конечно потеряете, зато select будет очень быстрым.
    Ответ написан
  • Как добавить в JOIN подзапрос?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Насколько мне известно, подобный запрос в 1 в битриксе не завернуть (минимум 2 независимых запроса).
    Дело в том, что Битрикс работает с entities, и у него нет queryBuilder'а, соответственно он может строить запросы только к известным сущностям.
    А далее начинается пляска, потому как часть запроса с IFNULL является ExpressionField, а join является ReferenceField и выражение expression нельзя применить для результата reference.

    У Вас будет ошибка:
    Expected ScalarField or ExpressionField in `*` build_from, but `Bitrix\Main\Entity\ReferenceField:*` was given. (0)
    Ответ написан
  • Как правильно создать фасетный велосипед?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Ваше решение вполне имеет место быть, а грабли будут те же самые, что и в Битриксе - перестроение кеша.
    Например у Вас добавилось поле, а это значит, что Вам нужно перестраивать кеш (т.е. удалять и заново строить), а на работающем сайте это занимает прилично времени.
    К тому же, для ускорения Вам придется либо исключить некоторые поля, либо дублировать записи из множественных списков, но с этим частично может помочь разгрузка базы.

    На ум приходят две мысли:
    - при mysql 5.7+ можно проверить как поведет себя json поля (чтобы не пересобирать каждый раз схему, а просто переписывать значения)
    - попробовать вынести куда-нибудь на mongodb это решение (дописывать поля там, не пересобирая).

    Но в целом, Ваш вариант вполне подходит (за исключением того, что вариант с перестроением кеша нужно все-таки проработать).
    Ответ написан
    Комментировать
  • MySql Tree comments + limit?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Я бы на Вашем месте попробовал бы Nested sets - www.getinfo.ru/article610.html
    Читается очень легко (можно как ветку достать, так и дерево сразу).

    Однако при добавлении записи придется пересчитывать все left/right
    Ответ написан
    Комментировать
  • Задачи и упражнения для SQL?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А чем sql-ex.ru не устраивает? Очень добротный и хороший ресурс.

    А вообще - Практика по SQL - вопрос уже задавался :)
    Ответ написан
    1 комментарий
  • Выборка из базы данных?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Если я Вас правильно понял, то что-то типо:

    SELECT page_title 
    FROM table 
    WHERE 
        ( page_title LIKE '*.php' ) 
        OR ( page_title LIKE '*.html' ) 
        OR ( page_title LIKE '*/' ) 
        OR ( page_title LIKE '*.phtml' ) 
        OR ( page_title LIKE '*.html' )
    Ответ написан
    Комментировать