The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Выборка данных в mysql., !*! Александр, 17-Ноя-11, 17:50  [смотреть все]
Здравствуйте.
Столкнулся с таким вопросом.
Есть таблица
ip_adress   |  group  | user_data
__________________________________________________________________________________________________
                      
127.0.0.1   |    2    | a:3:{s:7:"user_id";s:1:"1";s:8:"username";s:5:"User1";s:6:"status";s:1:"1";}  
__________________________________________________________________________________________________
                
192.168.0.3 |    1    | a:3:{s:7:"user_id";s:1:"2";s:8:"username";s:5:"User2";s:6:"status";s:1:"1";}
__________________________________________________________________________________________________
                
192.168.0.4 |    2    | a:3:{s:7:"user_id";s:1:"3";s:8:"username";s:5:"User3";s:6:"status";s:1:"1";}

Я не могу вывести id пользоваетелей (user_id находится в сериализованных данных user_data), которые состоят во вторых группах.
Т е SELECT user_id FROM table WHERE table.group = 2 и не имею пока представления, как user_id извлечь из user_data.
user_id находится  в строке после "user_id" в следующих двойных кавычках. т е a:3:{s:7:"user_id";s:1:"2"; ...  здесь, например, user_id = 2. Я с регулярками пытаюсь бороться.
Заранее благодарен.

  • Выборка данных в mysql., !*! Дядя_Федор, 19:08 , 17-Ноя-11 (1)
    > Т е SELECT user_id FROM table WHERE table.group = 2 и не
    > имею пока представления, как user_id извлечь из user_data

    Зачетный запросец, правда? :)))) Особенно после того, как Вы сами же описали структуру таблицы. В сильном душевном волнении составлялся, не иначе. А нужную Вам задачу можно решить при помощи функции substring. При условии, что количество знаков до user_id одинаково. У Вас вроде бы так и есть.

  • Выборка данных в mysql., !*! Square, 19:37 , 17-Ноя-11 (2)
    >[оверквотинг удален]
    > __________________________________________________________________________________________________
    > 192.168.0.4 |    2    | a:3:{s:7:"user_id";s:1:"3";s:8:"username";s:5:"User3";s:6:"status";s:1:"1";}
    > Я не могу вывести id пользоваетелей (user_id находится в сериализованных данных user_data),
    > которые состоят во вторых группах.
    > Т е SELECT user_id FROM table WHERE table.group = 2 и не
    > имею пока представления, как user_id извлечь из user_data.
    > user_id находится  в строке после "user_id" в следующих двойных кавычках. т
    > е a:3:{s:7:"user_id";s:1:"2"; ...  здесь, например, user_id = 2. Я с
    > регулярками пытаюсь бороться.
    > Заранее благодарен.

    Какой придурок догадался таким образом заполнять таблицы?
    Заполнить таблицы нормальным способом не дано?

    • Выборка данных в mysql., !*! DeadLoco, 03:45 , 20-Ноя-11 (5)
      > Какой придурок догадался таким образом заполнять таблицы?
      > Заполнить таблицы нормальным способом не дано?

      Да много кто так заполняет. Например, Roundcube WebMail так хранит клиентские настройки. Верней, дифф настроек относительно дефолтных. И еще попадался подобный подход пару раз. Так что не редкость.

  • Выборка данных в mysql., !*! ACCA, 07:57 , 18-Ноя-11 (3)
    > регулярками пытаюсь бороться.

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

    С существующей базой есть два варианта -

    1. Перегнать в PostgreSQL и написать методы для парсинга лизергинового поделия
    2. Написать на чём-нибудь парсер и разложить данные в 3NF

    Потом выполнить обычный SELECT.

    • Выборка данных в mysql., !*! Дядя_Федор, 08:34 , 18-Ноя-11 (4)
      Если человек всю жизнь работал в MySQL (что, впрочем, глядя на его SELECT вызывает серьезные сомнения) - зачем ему решать задачу такими кардинальными методами, как переход на другую СУБД??? Я не касаюсь вопроса - лучше Постгрес мускула или хуже. Это ДРУГАЯ СУБД (хотя и SQL), с другим инструментарием. Все вполне можно решить менее радикальными методами. Собственно, даже тот бардак, который устроили при наполнении этой таблицы - тоже вполне можно решить. Если знать "матчасть" (SQL). ;) А в данном случае это далеко не так, как Вы видите выше.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру