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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    в мускуле не допускается использование таблиц из delete в подзапросах (емнип как и в других РБД).
    Как вариант - обернуть запрос в дополнительный селект, тем самым организовав временную таблицу для внутренней выборки.
    На будущее, для лучшего понимания проблем в запросе:
    1) Аккуратно форматируйте запрос, разбивая на строки каждую конструкцию из запроса.
    2) Следите за номером строки выдаваемом в ошибке запросов, так вам будет легче локализовать проблему.
    3) Крайне не желательно вывод ошибок осуществлять на русском, старайтесь использовать англоязычные инструменты. Это позволит быстрее находить ошибки по тексту, не путаясь в переводах.
    Ответ написан
    Комментировать
  • Почему не запускается пример формы?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    3. Заливаю их в бд, а там только один из этих пабликов залит два раза.
    Вы не заливаете, а "обновляете имеющиеся".
    Читайте хоть какие-то базовые вещи перед использованием.
    Ответ написан
  • SQLSTATE[HY093] как исправить ошибку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $query = $conn->update('myapp_state')->
    set('prodid', '?1')->
    where('objid = ?2')->
    setParameter(1, $el['prod_id'])->
    setParameter(2, $el['object_id']);
    Ответ написан
  • Как организовать поиск по базе, находящейся на SQL Сервере?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Теперь мы переехали на SQL Server
    MS-SQL?

    код не хочет работать, я так понимаю синтаксис немного разный при работе с MySQL и SQL. Не могли бы подсказать в чем проблема?
    (ha-ha, classic %)) Тот самый гипотетический случай из примеров с уровнем абстракций - а вдруг мы сменим дб? Теперь вам вообще то нужно сменить драйвер подключения, как минимум, ну и возможно не все запросы будут работать с ожидаемым результатом. Готовьтесь к интересным приключениям, удачи.
    Ответ написан
  • Как вывести одинаковые значение полей через mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT u0.username, u1.*
    FROM users_auth AS u1, users_auth AS u2 
    LEFT join users AS u0
    on u0.id = u2.user_id
    WHERE u1.user_agent = u2.user_agent
    AND u1.screen = u2.screen
    AND u1.id != u2.id 
    ORDER BY u2.user_agent,u2.screen;
    Ответ написан
  • Как найти в базе похожие записи?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    разовая, когда из импорта приходят данные,
    Тогда достаточно банально,
    селект где pid = 0 и width = 0,
    затем уже в пыхе перебор строк,
    експлодим name пробелом,
    выбираем все строки где name теперь массив длинной 1(это будут корни) в отдельный массив
    и ключами в этом массиве делаем name.
    Еще один раз перебираем массив строк с проверкой или массив длинной более 1 в name,
    после чего из name[1] вытаскиваем чистую цифру(убираем скобки), записываем в width,
    из name[0] получаем ключ к массиву корней, из которого достаем id, и кладем в pid.
    Всё, строчки упдэйтнуть в базу.

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    после получения из гет номера страницы, ансетим пэйдж в гет, после чего в пэйджинге прибавляем
    <a class="page" href="?page=2&<?=http_build_query($_GET)?>">2</a>
    Ответ написан
    9 комментариев
  • Как выполнить LEFT JOIN с условием?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Если бы нужно было определить прочел ли пользователь сообщение, был бы смысл делать выборку именно как у вас, но указав в полях возврата mr.`user_id`, который был бы либо айди, либо нулл. Если же у вас МНОГО людей в чате - тогда правильнее будет сделать так:
    SELECT m.`id`, m.`message`, mr.`message_id` status
    FROM `messages` m
    LEFT JOIN (
          select `message_id` 
          from `messages_read`
          where `user_id` = 111
    ) mr 
    ON mr.`message_id` = m.`id` 
    WHERE m.`chat_id` = 12
    Ответ написан
    Комментировать
  • Как соединить четыре SQL-запроса в один?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) читать про join
    2) читать про индексы тут, тут и тут.
    3) составить запрос и прогнать его через explain.
    4) Настроить индексы...
    5) Profit
    Ответ написан
    Комментировать
  • Как правильно составить запрос MYSQL?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) * parent_id
    2) нестед сидс проще реализовать на клиенте
    Ответ написан
    Комментировать
  • Как правильно сформировать SQL запрос?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    записей в таблице products очень много ( около 1млн )

    это не много, это нормально
    и запросы типа JOIN не предлагать, так как оно существенно влияет на производительность

    а этот бред вы как догадались сюда приплести? У вас наоборот с выходом из внутренних джоинов выборка по ид будет сокращаться, в итоге по таблице продуктс будет только джоин нужных ид(что аналогично выборке where in, только с меньшими ограничениями, например ордер и лимит). По этому сджойнте мелкие таблицы, получите с них модел_ид, и по нему уже джоин продкут.
    Я бы денормализовал продуктс, внес бы еще брэнд_ид в него, но это так, мелочи.
    Ответ написан
    Комментировать
  • SQL LIKE поиск несколько значений?

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

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Неправильный ответ: Доставайте больше и обрезайте
    Правильный ответ: При сохранении создавайте в бд дополнительное свойство с уже почищенным текстом нужной длинны.
    Ответ написан
    3 комментария
  • Как написать sql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    https://stackoverflow.com/questions/17942508/sql-s...
    надо же, думал такой изврат может существовать только в 1 экземпляре...
    Ответ написан
    Комментировать
  • SQL. Выборка или все записи. Что быстрее?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Вопрос либо не полный/не точный, либо бессмысленный.
    на 1000 записей таблица - выборки по таким таблицам с любыми параметрами занимают 0,0001-0,001 , зависит от железа.
    Логично предположить что выборка 2 полей не будет занимать больше времени чем выборка всех полей.
    2 поля выберутся быстрее(бд "знает" где эти значения лежат из индекса, а 1000 полей подряд будет пихать в результат тупо дольше).
    Вопрос скорости встает при передаче данных от бд к приложению, и тут опять же очевидно что разница в размере - пару десятков байт против пару килобайт, (не критично, но разница есть) говорит в пользу выборки по условию.
    В целом на представленных условиях разница в скорости выборки за все время существования данной таблицы не превысит времени потраченного на написание этого ответа.
    Ответ написан
    Комментировать
  • Надо ли в sql-запросе писать or die?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мальчик, в какой библиотеке ты нашел этот древний зловещий манускрипт заклинаний черных колдунов?
    Ответ написан
    Комментировать
  • Селекты из таблицы на 5 млн строк. Если разбить её на 100 таблиц - будет выигрыш в производительности?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Поддерживаю longclaps, вы что, алиекспресс админите? откуда в таблице товаров 5М строк, вы что, спички поштучно учитываете? Это номер раз, второе - если фильтры такие забубенные - делайте в 2-3 запроса через бэк, что у вас там, пых, нода, джанга, ограничивайте по уму количество товаров в первой выборке по самому быстрому индексу и самой ограничивающей выборке, например все товары выбранной категории, далее филтр только на результат выборки по типу id in(1,2,3,4). И все же скажите, не мучьте, ОТКУДА СТОЛЬКО ТОВАРОВ БЛИН, я ж не засну теперь...
    Ответ написан
    14 комментариев