Задать вопрос
  • Как оптимизировать sql запрос?

    Delgus
    @Delgus Автор вопроса
    vman, Спасибо. Помогло) Надо будет мне теорию почитать) Оптимизацией не занимался никогда, хотя мечтал бы на highload проекты попасть
  • Как оптимизировать sql запрос?

    Delgus
    @Delgus Автор вопроса
    vman, Вот что выводит EXPLAIN
    +----+-------------+-----------+------+---------------+------+---------+------+--------+--------------------------------+
    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
    +----+-------------+-----------+------+---------------+------+---------+------+--------+--------------------------------+
    | 1 | SIMPLE | statement | ALL | NULL | NULL | NULL | NULL | 10689 | Using where |
    | 1 | SIMPLE | cd1 | ALL | NULL | NULL | NULL | NULL | 218679 | Using where; Using join buffer |
    | 1 | SIMPLE | cd2 | ALL | NULL | NULL | NULL | NULL | 218679 | Using where; Using join buffer |
    | 1 | SIMPLE | cd3 | ALL | NULL | NULL | NULL | NULL | 218679 | Using where; Using join buffer |
    | 1 | SIMPLE | cd4 | ALL | NULL | NULL | NULL | NULL | 218679 | Using where; Using join buffer |
    +----+-------------+-----------+------+---------------+------+---------+------+--------+--------------------------------+
    5 rows in set (0.00 sec)
  • Возможно ли подставить имена столбцов из таблицы?

    Delgus
    @Delgus Автор вопроса
    Варианты решения:
    1. Пишем все ручками
    SELECT
      cert_data.number,
      MAX(IF(prop = 'inn', value, NULL)) AS inn,
      MAX(IF(prop = 'snils', value, NULL)) AS snils
    FROM
      cert_data
    GROUP BY
      number

    2. Динамическое формирование запроса(у меня по времени занимает 8 секунд.печально )
    SET @sql = NULL;
    SET @@group_concat_max_len = 5000; 
    SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(prop = ''',prop,''', value, NULL)) AS `',prop,'`')) INTO @sql FROM cert_data;
    SET @sql = CONCAT('SELECT number, ', @sql, ' FROM cert_data GROUP BY number LIMIT 20');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;


    P. S. А что делать если атрибут prop может иметь несколько значений?
  • Возможно ли подставить имена столбцов из таблицы?

    Delgus
    @Delgus Автор вопроса
    Ну тут можно без join-ов, вот так например
    SELECT
      cert_data.number,
      MAX(IF(cert_data.prop = 'inn', cert_data.value, NULL)) AS inn,
      MAX(IF(cert_data.prop = 'snils', cert_data.value, NULL)) AS snils
    FROM
      cert_data
    GROUP BY
      cert_data.number
  • Как выводить json на страницу api?

    Delgus
    @Delgus
    Ты отправляешь на сервер запрос, а он отправляет ответ с необходимыми заголовками. (и да, через echo сработает).
    Вы знакомы с понятиями "фреймворк", HTTP-протокол...советовал бы изучить, очень помогает освободить голову)
    Если ваш уровень программиста хорош то вот серия видосов https://elisdn.ru/blog/113/psr7-framework-http которая объясняет как устроены современные фреймворки...мне очень зашла
  • Где можно показать код и обсудить его с другими разработчиками?

    Delgus
    @Delgus Автор вопроса
    Сергей Попов, в знакомых у меня нет знающих людей увы. а насколько корректно такие вопросы задавать например в Тостере не знаю. В основном все вопросы здесь - не работает то то, сломалось то-то, как сделать то то. Вопрос-ответ. Не знаю насколько корректно развивать здесь дискуссии например
  • Как правильно составить SQL-запрос?

    Delgus
    @Delgus Автор вопроса
    Rsa97, Boris Korobkov, Спасибо за ваши ответы. Весьма благодарен. Я недавно в одном месте использовал запросы вида

    SELECT `recipe_id`, COUNT(*) AS `count`
      FROM `recipe_product`
      WHERE (`product_id` = 1 AND `product_weight` > 100)
        OR (`product_id` = 2 AND `product_weight` BETWEEN 200 AND 400)
        OR (`product_id` = 3 AND `product_weight` < 10)
      GROUP BY `recipe_id`
      HAVING `count` = 3



    Знание таких команд как HAVING это круто, но такие запросы очень сложно формировать динамически и у меня сортировка ломалась(я еще там ORDER BY запихивал в запрос )))


    Если в таблице `recipe_product` пара (`recipe_id`, `product_id`) уникальная, то из данной таблицы можно удалить искусственный ключ `id` и сделать эту пару первичным ключом.


    Ну это что-то вроде БД для умного холодильника, ну тоесть найти подходящие рецепты исходя из продуктов и их веса, так что хороший вариант.
    Но кстати яйца в штуках например я вот подумал, и это печально...никто ж их не взвешивает)))

    Спасибо вам еще раз))) Очень помогли)))
  • Как правильно составить SQL-запрос?

    Delgus
    @Delgus Автор вопроса
    Ну эффективность страдает зато его вроде проще динамически построить, чем вариант который мне выше предложили) Мне он нравится больше однозначно. Спасибо большое за ответ)
  • Как сделать символьную ссылку на каталог с изображениями?

    Delgus
    @Delgus Автор вопроса
    vreitech, да мля...avd.test вместо adv.test. Часа полтора мучался из-за одной буквы(
  • Насколько плох такой проект?

    Delgus
    @Delgus Автор вопроса
    Алексей Ярков, я имел ввиду что в ридми не написал я об этом,что является моим косяком)) так то nginx + php-fpm я локально я использую))
  • Насколько плох такой проект?

    Delgus
    @Delgus Автор вопроса
    SmInc,

    А у вас не было мыслей, что на работу надо не только устроиться, но и работать там?
    А если вы не можете ни с нуля написать, ни имеющееся доделать\переделать, то зачем вы на работе?


    На работе платят.

    Ну к сведению я работаю чуть менее года в очень маленькой команде (backend на Yii2), но хочется расти далее (например сложно освоить Docker если на работе его не используют, сложно изучить JS и современные фреймворки, пока на работе JQuery и bootstrap и нет хороших фронтендеров), поэтому потихоньку собираю портфолио с мечтой поработать когда-нибудь в большой команде. И вот возник вопрос - потратить свободное время доводя этот тренировочный проект с чатом до ума, или попробовать еще что-то запилить.

    Спасибо за комментарий)
  • Насколько плох такой проект?

    Delgus
    @Delgus Автор вопроса
    Олег Муравейко, верно заметили. Спасибо)
  • Насколько плох такой проект?

    Delgus
    @Delgus Автор вопроса
    Алексей Ярков, Да. Необходимо веб-сервер настроить чтобы скрипты php из папки auth-server работали ,в Apache2 по умолчанию вроде работает, nginx надо настраивать. что совершено не объяснено нигде. ну пожалуй регистрация и авторизация - самые слабые места в проекте) Спасибо за комментарий