Ответы пользователя по тегу MySQL
  • Как объединить несколько полей в базе данных?

    Delgus
    @Delgus
    У вас дерево категорий или как?
    вот здесь довольно подробно описано в решение - Хранение деревьев в Mysql какие есть способы?

    вбиваем в гугл - 'дерево mysql' - находим много полезной инфы.
    parent_id не хватает, так поменяйте тип столбца.
    ALTER TABLE table_name MODIFY column_name .....

    Вторую, третью и четвертую таблицу не надо


    которая уже заполнять не куда.....

    Видимо вы не видели таблиц на 50 миллионов строк, ваш пример - кроха
    Ответ написан
    2 комментария
  • Как создать переменную или массив в котором будут элементы которые можно занести в бд?

    Delgus
    @Delgus
    Нужен сервер и соответственно на нем
    1. веб-сервер(Apache или NGINX, лучше nginx) - установить, настроить
    2. php или php-fpm - установить, настроить
    3. mysql - установить, настроить

    Когда все готово и сервер готов слушать клиента, отправляем по протоколу HTTP запрос, в современном мире это делается используя чудную технологию ajax. Ну вы про фронтенд, про HTML и JS ничего не спросили, так что по-любому вы знаете что такое ajax, так ведь?

    Так вот при клике на кнопку добавить в корзину отправляется запрос на сервер, на сервере скрипт написанный на php обрабатывает параметры запроса, открывает соединение с mysql, сохраняет полученные данные, отдает клиенту ответ, что то типа {ok:true}(это формат json, знаете что это такое?)

    Создать переменную или массив на php, знаете как? про глобальные переменные в php слышали? Может Котерова PHP 7 в подлиннике читали, ну или хотя бы посмотрели часовой видос хауди хо "php за час"? Гуглом пользоваться умеете?

    В результате получится что то вроде этого https://github.com/rintoug/Simple-PHP-Shopping-Cart

    Достаточный толчок???
    Ответ написан
    Комментировать
  • Почему запрос объединяет не те строки?

    Delgus
    @Delgus
    Лучше Join'ы для таких запросов использовать
    SELECT 
        ships.sudovlad,
        s1.gruz_pass as summa,
        EXTRACT(YEAR FROM s1.data_vih_p_ot) as years,
        ((s2.gruz_pass - s1.gruz_pass) / s1.gruz_pass * 100) AS percent,
        s2.gruz_pass as summa2,
        EXTRACT(YEAR FROM s2.data_vih_p_ot) AS years2
    FROM ships
    LEFT JOIN ships as s1
    ON ships.sudovlad = s1.sudovlad AND EXTRACT(YEAR FROM s1.data_vih_p_ot)=2017 AND s1.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
    LEFT JOIN ships as s2
    ON ships.sudovlad = s2.sudovlad AND EXTRACT(YEAR FROM s2.data_vih_p_ot)=2018 AND s2.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
    GROUP BY sudovlad
    Ответ написан
    4 комментария
  • Почему Where IN выводит только одну строку?

    Delgus
    @Delgus
    Я не вижу строки 'Русфлот, ООО' 0 2018 0 0 2017 во втором выводе
    Я вижу 'Русфлот, ООО' 0 2017 0 0 2017 во втором выводе

    Может поэтому при первом запросе и не возвращает эту строку?

    Причина в
    GROUP BY EXTRACT(YEAR FROM data_vih_p_ot)
    Ты делаешь в первом подзапросе group by по году и он возвращает
    Русфлот, ООО 0 2017
    АрктикТранс ОИЛ, ООО 0 2018

    Есть такой вариант запроса, не знаю подойдет ли
    SELECT 
        reservtable.sudovlad,
        reservtable.summa,
        reservtable.years,
        ((reservtable2.summa2 - reservtable.summa) / reservtable.summa * 100) AS percent,
        reservtable2.summa2,
        reservtable2.years2
    FROM(
    SELECT sudovlad,gruz_pass as summa,EXTRACT(YEAR FROM data_vih_p_ot) AS years
    FROM ships
    WHERE EXTRACT(YEAR FROM data_vih_p_ot) = 2017 AND sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО')
    GROUP BY sudovlad) reservtable,
        (SELECT sudovlad,gruz_pass as summa2,EXTRACT(YEAR FROM data_vih_p_ot) AS years2
    FROM ships
    WHERE EXTRACT(YEAR FROM data_vih_p_ot) = 2018 AND sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО')
    GROUP BY sudovlad) reservtable2
    GROUP BY sudovlad
    Ответ написан
    2 комментария