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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SET @@auto_increment_increment=2;
    SET @@auto_increment_offset=2;
    Ответ написан
    1 комментарий
  • Как сделать, чтобы неподходящие под условие не забивали лимит?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $string = '';
    while($row = mysql_fetch_assoc($request)) {
      if (file_exists('/www/ПУТЬ/'.$row['id'].'_100.jpg')) 
      {
         $string .= 'BODY';
      }
      else 
      {
         $string = '';
         break;
      }
    }
    echo $string;


    А вообще если у вас не контролируется наличие изображений, значит где-то что-то пошло не так...
    Ответ написан
  • Как оптимизировать запрос?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего нет индекса на fi.plugin_id. Более точно можно посмотреть в explain запроса.
    Ответ написан
    Комментировать
  • Как увеличить скорость SELECT, где нужно получить все строки, кроме одной?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    для начала explain, понять что и как, потом смотреть в сторону составных индексов. Еще слегка удивляет отсутствие limit, в таком ключе у вас выбирается все содержимое таблицы, что не может не сказаться на скорости выборки. Так же длина ключа по (очевидно) текстовому полю (укажите тип кстати, надеюсь там ограниченный варчар, а ни лонгтекст или блоб...) должна хорошо покрывать возможную длину логина.
    Ответ написан
  • Как починить авторизацию на сайте?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ошибки нет,данные верные,
    Святая наивность...
    1) Включите вывод ошибок
    2) 99% что все работает на свежей версии пхп, где давно забыли что такое mysql_query
    3)
    или еще что-то
    Да, наверняка еще что-то, смотрите п.1
    Ответ написан
  • Как получить данные таблицы SQL по нескольким условиям?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Можно ли в запросе получить сразу 2 записи, по параметру, который известен в 1?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    С учетом прослойки в виде какого-то серверного языка, коннекта и передачи параметров запроса - один запрос будет быстрее, не сильно, но да, быстрее.
    SELECT * 
    FROM mydata 
    WHERE id < '127' 
    AND mytarget = (
       SELECT mytarget 
       FROM mydata 
       WHERE id = '127' 
       ORDER BY id DESC 
       LIMIT 1
    ) 
    ORDER BY id DESC 
    LIMIT 1
    Ответ написан
    Комментировать
  • Как правильно составить SQL-запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    джоин выданные книжки с книжками и с авторами и сум(авторс.ид) груп бай авторс.ид
    Ответ написан
    Комментировать
  • Как правильно составить sql запрос?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) Зачем такие сложные телодвижения? Не проще при показе поста сразу добавлять ему просмотр?
    2) Нахрена такая... странная денормализованная система, где данные хранятся в 3(!) местах? Есть какой-то особый смысл хранить их в разных местах и содержать полностью неконсистентное состояние в любой момент времени?
    Ответ написан
  • Как правильно составить sql запрос?

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Сложил поаккуратнее
    SELECT  
      CASE WHEN LOWER(a.title) LIKE LOWER('%слово%') 
      THEN 5 ELSE 0 END  +  
      CASE WHEN LOWER(a.title) LIKE LOWER('%поиска%') 
      THEN 5 ELSE 0 END  AS relevance,
       a.title AS title, 
       a.metadesc, 
       a.metakey, 
       a.created AS created, 
       a.language, 
       a.catid, 
       CONCAT(a.introtext,a.fulltext) AS text,
       c.title AS section,  
      CASE WHEN CHAR_LENGTH(a.alias) != 0 
               THEN CONCAT_WS(':', a.id, a.alias) 
               ELSE a.id END as slug, 
      CASE WHEN CHAR_LENGTH(c.alias) != 0 
                THEN CONCAT_WS(':', c.id, c.alias) 
                ELSE c.id END as catslug, 
                '2' AS browsernav
      FROM db_content AS a
      INNER JOIN db_categories AS c 
      ON c.id=a.catid
      WHERE ((LOWER(a.title) LIKE LOWER('%слово%') 
      OR LOWER(a.introtext) LIKE LOWER('%слово%') 
      OR LOWER(a.fulltext) LIKE LOWER('%слово%') 
      OR LOWER(a.metakey) LIKE LOWER('%слово%') 
      OR LOWER(a.metadesc) LIKE LOWER('%слово%')) 
      AND (LOWER(a.title) LIKE LOWER('%поиска%') 
      OR LOWER(a.introtext) LIKE LOWER('%поиска%') 
      OR LOWER(a.fulltext) LIKE LOWER('%поиска%') 
      OR LOWER(a.metakey) LIKE LOWER('%поиска%') 
      OR LOWER(a.metadesc) LIKE LOWER('%поиска%'))) 
      AND a.state=1 
      AND c.published = 1 
      AND a.access IN (1,1,2,3,6) 
      AND c.access IN (1,1,2,3,6)
      AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2021-06-08 16:24:40') 
      AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2021-06-08 16:24:40')
      GROUP BY a.id, a.title, a.metadesc, a.metakey, a.created, a.language, a.catid, a.introtext, a.fulltext, c.title, a.alias, c.alias, c.id
      ORDER BY  relevance DESC, a.created DESC 
      LIMIT 20


    В такой каше и разобраться то сложно, тем более без таблиц, а что-то советовать - вообще хз...

    На первый взгляд - десяток вайлдкард лайков - идея на троечку с минусом... так же создается впечатление что кучу логики, которая могла быть легко исполнена со стороны пыха, вкинута в запрос, что тоже не добавляет скорости...

    Ну и гроуп бай по куче полей тоже так себе затея...

    Похоже что что-то пошло не так или на этапе проектирования хранилища, или такова сама по себе жумла...

    В любом случае - можно отсекать куски запроса, выясняя где у вас основной затык, а уже после этого смотреть что и где крутить.
    Ответ написан
  • Как вывести данные из БД по последней дате?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых код в вопрос нужно вставить как текст, в соответствующий тег, дабы можно было нормально цитировать ваш "код".
    Во вторых - неплохо было бы изучить хотя бы базовые основы sql
    В третьих - запросы нужно всегда создавать через подготовленные выражения, это должно быть на уровне привычки, кроме того - выносите код sql в отдельные строковые переменные, чтобы их можно было в любой момент вывести и посмотреть. Ну и нормальное форматирование для кода, в том числе и для строк запроса, очень помогает.

    Если хотя бы отформатировать сам запрос, скорее всего сразу увидишь ошибку, если хоть какое-то понимание sql есть.
    Ответ написан
    Комментировать
  • Почему не работает выборка WHERE в SQL запросе?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    первая подсказка - использовать подготовленные выражения
    вторая подсказка - вывести на экран ваш запрос, скопировать, вставить в консоль sql / пхпмайадмин и выполнить.

    выводит все записи из таблицы
    Могу предположить что данное поле не является уникальным значением и ничего удивительного что вы получаете ВСЕ записи, где категория = какому-то номеру.
    Ответ написан
    Комментировать
  • Как отобразить две строки в одну?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    distinct + concat, правда полей будет только 2
    Ответ написан
    Комментировать
  • Как передать дату в Firebird?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) DATE ключевое слово, если вы имеете такое поле в таблице, его нужно обрамлять обратными кавычками.
    2) По уму поля таблиц называют в нижнем регистре и через андерскор если имя содержит несколько слов
    3) Для скюэля есть NOW(), автоматически подставляющий текущую дату-время. Можно использовать функции даты для формирования подходящего формата, ту же DATE например.
    4) стандарт хранения даты, который понимает большинство бд - "Y-m-d".
    Ответ написан
    4 комментария
  • Как правильно создать представление базы данных MySQL с несколькими подстолбцами?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    хранить время в формате времени, а не какой-то непонятной фигни

    UPD:
    во первых - вынести номера маршрутов в отдельную таблицу, во вторых - вынести в отдельную таблицу остановки. И тогда таблица будет выглядеть так:
    id | route_id | station_id | arrival_time | departure_time
    Ответ написан
    5 комментариев
  • Как сделать поиск по регулярному выражению SQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    TL;DR: переписывайте базу пока не поздно. Приводите в 3 нормальную форму и будет вам "щастие".

    1) Хранение данных по которым идет поиск в таком виде - это сразу расписаться в своей проф. непригодности, никому не показывайте эту стыдобу.

    2) Разнесите данные нормально по таблицам, не думайте что вы прям "выкрутились" захерачив все в строку и у вас все в шоколаде. Нифига, теперь у вас по этому полю будут кошмарно тормозные запросы, так как самые медленные операции - это лайк и регексп. Тем более по полю с переменной длинной и без нормальных индексов. И все это вместо суперскоростного индекса по интежер полю.

    3) Кроме остальных проблем - теперь вместо просто апдейта поля вам сначала надо его считать, распарсить и только потом обновлять, чтобы не потерять информацию, то есть вы часть стандартной логики бд переносите в код, где ему не место.

    4) ну и на одну из проблем вы уже напоролись - поиск по нечетким данным даст нечеткий результат.
    Ответ написан
    8 комментариев
  • Как организовать sql запрос в таблицу базы данных с помощью php?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    PDO?
    Вообще как бы у вас там торчат уши от DLE, вы бы в тегах указали что цмс. Смотрите доки по ДЛЕ, как работать с запросами.
    Ответ написан