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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Как можно вывести точно такой же результат, но с повторами ID 2, например?
    Если с самого начала проектировать бд в нормальной форме, а не то что получилось, то задача вполне нормально решается. Создается таблица отношений наборов к блюдам, и объединяется как многие ко многим, и всё будет нормально выбираться. А кажущаяся "оптимальность" хранения идентификаторов строкой в одном поле - ошибка почти всех новичков, тем не менее это отвратительная практика, рожденная некомпетентностью и ленью. Меняйте структуру, пока не поздно, на этапе разработки это сделать проще, чем когда уже внесете кучу данных в рабочий говнопроект. Делайте сразу хорошо, чтобы потом не страдать.
    Ответ написан
  • Как вывести данные из mysql за сегодня и с условием времени?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    По заданному вопросу верным ответом будет ответ Rsa97, с учетом комментария:
    мне надо что бы с переменными sql, тоесть не указывать самому дату, а надо что бы в запросе автоматом курдейт был, т е сегодня.
    будет что-то типа
    SELECT * 
    from `table`
    where DATE(dateTimeField) = DATE(now()),
    and TIME(dateTimeField) >= '18:30'
    and TIME(dateTimeField) <= '19:00'
    Ответ написан
    Комментировать
  • Как в одну строку через SQL вывести данные один ко многим?

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

    UPD: Должно быть что-то типа:
    SELECT concat(c.name,',',GROUP_CONCAT(e.name)) cn
    FROM `companies` c
    LEFT JOIN `employees` e
    ON c.id = e.company_id
    GROUP BY c.name
    Ответ написан
  • Как правильно составить SQL запрос SELECT PDO PHP для получения данных по двум строкам?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Питаюсь реализовать получение данных с БД по двум строкам
    Не по строкам, а по столбцам, обычно говорят "по полям". Самое очевидное и простое решение - проверять наличие переменной и соответственно добавлять нужное поле "вручную" конкатенацией строк запроса.
    Ответ написан
    Комментировать
  • Как увеличивать 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 комментария