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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Сто раз обсуждалось. Для атрибутов применяется EAV и связывающие таблицы, для больших массивов данных так же добавляют фасетный поиск.
    Ответ написан
    Комментировать
  • Если БД две, то к какой из них будет обращение?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Т.е. я не указываю конкретную БД в запросе. Из какой именно я вытащу данные?
    Выбор бд происходит при создании объекта драйвера бд как обязательный аргумент, соответственно либо вы не выбрали базу и не создали коннект - тогда будет ошибка выполнения, либо база уже выбрана и соответственно даные будут взяты из указанной в драйвере базы.
    Ответ написан
    Комментировать
  • Как составить SQL запрос для подставления значения по времени?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) У вас во всех таблицах нарушен принцип уникальности записи. Айди, который должен однозначно идентифицировать запись, у вас означает что угодно кроме уникального айди.
    2) Так как ваш лог не привязан к сущности сообщения через соответствующее отношение, то выборка будет показывать что угодно, кроме того что вам нужно.

    Вывод: идите учите 1, 2 и 3 нормальные формы для начала. Потом нормально создайте таблицы. Потом скорее всего все вопросы сами отпадут, но если нет - вернетесь с нормальным вопросом.
    Ответ написан
    2 комментария
  • Функция SUM в sql запросе не работает почему?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Владею: Html, Css, Php, bd msql, сложные запросы SQL
    Рили???

    Ок, на самом деле решение очевидное, и весьма простое. Во втором запросе вы выбираете не столбец, имя которого будет ассоциироваться с ключом в соответствующем массиве (о чем вам и говорит ошибка), а результат агрегирующей функции, которое в массиве будет иметь совершенно другое имя. Что легко проверяется через var_dump($row).

    Решение - добавить алиас для агрегированного поля.
    Ответ написан
    Комментировать
  • Как исправить "Input string was not in a correct format."?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) Стоит добавить тег C#, проблема явно не в бд, а в формировании запроса.
    2) Неплохо бы проверить что возвращает string.Format("%{}%", txtSearch.Text), думаю лажа именно там.
    Ответ написан
    2 комментария
  • Как избавляться от ненужных записей в бд?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    В дальнейшем это повысит нагрузку на бд при поиске записей.
    Когда записей будет под миллион, запустите 1 раз удаление старых неактивированных аккаунтов и выиграете еще аж 500 (а может даже 5тыщь!) записей, это сильно поможет...
    Ответ написан
    Комментировать
  • Можно ли делать запрос к промежуточной таблице многие-ко-многим для извлечения конкретной информации?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Можем ли мы сделать запрос к БД и извлечь из промежуточной таблицы (book_author) информацию по конкретной книге?
    Из "промежуточной" можно извлечь только связи, она для этого и нужна.

    Т.е. у нас для работы есть только информация о книге и теперь нужно извлечь информацию о её авторе (авторах).
    В чем вопрос? Как сделать джоин с 3 таблицами? Так же как с двумя, только с тремя.

    Приемлемо ли вообще делать такие запросы к промежуточным таблицам?
    Какие - "такие"? У вас вообще ни одного запроса не написано.
    Ответ написан
    7 комментариев
  • Как вернуть NULL если ничего не найдено в SQL?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    А есть какая-то адекватная причина, по которой вам требуется получать такой странный результат?
    Ответ написан
    Комментировать
  • Увеличение записи на некоторое число по предыдущей записи?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Похоже что задача сводится к удалению всех айди и заполнения автоинкрементом с шагом 10.
    SET GLOBAL auto_increment_increment=10;
    SET GLOBAL auto_increment_offset=1;
    ALTER TABLE example DROP COLUMN id;
    ALTER TABLE example ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (id);
    Вообще задача странная, и попахивает очередным "гениальным" решением...
    Ответ написан
    1 комментарий
  • Что я неправильно сделал в связях таблиц?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Вангую что в запросе что-то типа селект * , соответственно айди тупо переписывается. Создайте алиас для нужного поля, типа comments.id as comment_id, users.id as user_id

    Если используется построитель запросов, укажите какие поля нужны и выставите алиасы через встроенные методы.
    Ответ написан
    6 комментариев
  • Как загрузить в моём случае несколько фото в базу данных?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Мой инпут содержит всего 1 название фото, из-за в базу данных и отправляется 1 фото
    Для загрузки большого количества файлов из одного инпута используется тег multiple.
    Для того чтобы понимать что приходит в пхп делайте print_r($_FILES); и смотрите что там пришло.
    Естественно для обработки более 1 файла нужен будет цикл, перебирающий $_FILES.
    Ответ написан
    Комментировать
  • Как правильно сформировать такой запрос?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Проще всего рут комментарию давать парент_ид равный своему ид, тогда все становится элементарным - ордер по парент_ид, креатед_эт. При выводе просто проверять если парент = ид. А все коментарии которые ответы на ответы все равно писать как ответ на рут коментарий, так как они будут тупо по дате строиться, и разницы в принципе нет. Разве что вы хотите чтобы ветвление было бесконечным, тогда проще ввести рут_ид.
    Ответ написан
    Комментировать
  • Как составить запрос sql?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Такое делается на уровне приложения. БД это отдельный слой - хранения, вполне нормально получить пустое значение при отсутствии значения в хранилище, он (слой) не должен оперировать логикой замены или подстановки. Логика подстановки может поменяться, и при этом у вас не должно быть изменений нигде, кроме как в конкретной точке логики приложения. Хранилище с этим никак не связано.
    Ответ написан
    Комментировать
  • Как сгрупировать запрос в Laravel?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Что-то типа:
    $a = Model::orderBy("id", 'desc')->limit(3);
    $b = Model::latest()->union($a)->get();
    Ответ написан
    Комментировать
  • Как в базе данных хранить информацию о нескольких периодах?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Имеется телеграмм бот, который должен отсылать отчеты о состоянии оборудования по периодам (Сейчас, Прошлая неделя, эта неделя и т.д)
    Если репорт - отдельная запись, то достаточно даты создания репорта. Никакой отдельной таблицы не нужно, так как это во первых будет нарушать 3 нормальную форму и соответственно вносит денормализацию в бд, и во вторых избавляет от множества лишних телодвижений по созданию странных таблиц. Селект с битвин или "дата < N энд дата > M" будет достаточно.
    Ответ написан
  • Почему не работает $_SESSION?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Файл подключения:
    Зачем? Тут нет никакой логики связанной с логином.

    Что у вас в сессии смотрели?
    var_dump($_SESSION);
    if (isset($_SESSION['logged_user']))...
    Ответ написан
  • Как получить значение по id в связанных таблицах в бд?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Как реализовать такое код?
    да, код
    нужны ли для это joins?
    Да, нужны

    id: 1, name: 'a', author: 1
    желательно соблюдать рекомендации по именованию полей и таблиц:
    1) так как поле author очевидно является связью по id с таблицей author, ее название должно быть author_id,
    2) таблица с авторами должна называться во множественном числе - authors.
    Ответ написан
  • Как сделать категории в интернет магазине?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    очевидным решением в лоб выглядит добавление поля root_id, что поможет быстро вытащить нужную ветку. А дальше уже логикой приложения ограничить вывод...

    Где-то тут давно пробегало решение с рекурсивным запросом, но сейчас уже не вспомню как там было, но оно и так вроде гуглится. С другой стороны не уверен что запрос будет эффективнее пересчета на бэкенде...
    Ответ написан
  • Надо ли что-то еще делать для избежания SQL инъекций?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    (не знаю как называется)
    Называется подготовленные выражения/prepared statements, почитать можно тут.
    Ответ написан
    Комментировать
  • Как эффективно настроить связь между записями в бд?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Первое - разнести папки и файлы в разные таблицы.

    в бд записи папки хранится массив id-шников на файлы
    Это не нужно (нарушает 3 нормальную форму), достаточно этого
    в самих файлах поле parentId указывает на папку, в которой он хранится


    и путь до файла
    Зачем? У вас есть папка и файлы, зачем дважды дублировать эту информацию? И опять же, нарушает 3 нормальную форму.

    Файлы хранить без пути, просто названия и parentId (хотя правильнее называть поле по сущности, например folder_id, и нотация через андерскор), соответственно папки просто id, user_id, name.
    Ответ написан