Здравствуйте уважаемые участники. Подскажите пожалуйста есть база данных my_bd в ней есть таблица stat. Задача не простая тем что мне ее трудно вам изъяснить, но я постараюсь. В таблице stat есть PRYMARY (ID_Client) - он уникальный и для каждого пользователя в базе имеет свое значение возьмем для примера "ID_001". Таблица должны уметь расширяться при определенных условиях, под "расширяться" я имею введу что в нее добавляется столбец "TIME_X" если необходимо сделать в его запись. Если необходимый столбец "TIME_X" уже есть, то надо в ячейке "ID_001" - "TIME_X" сделать запить "VALUE".. но если "TIME_X" нет то нужно есть создать и сразу сделать запись "VALUE" в ячейке "ID_001" - "TIME_X"... - задача была бы проста если бы не еще 1 условие. "ID_001" тоже может быть или не быть... и есть он или нет тоже нужно проверить.. если его нет то нужно его создать, а если он есть то просто сделать запись в ячейке "ID_001" - "TIME_X" (напомню что если "TIME_X" нет то ее тоже надо создать и сразу записать..) Параметр "ID_001" и столбец "TIME_X" может быть или не быть... если они оба есть то просто сделать запись. Если нет столбца "TIME_X" но есть параметр "ID_001" в столбце (ID_Client) то нужно создать столбец и сделать запись. Если нет параметра "ID_001" в столбце (ID_Client) но есть столбец "TIME_X" то нужно создать "ID_001" в столбце (ID_Client). Если нет "ID_001" в столбце (ID_Client) и нет столбца "TIME_X" то нужно их создать и сделать запись. Это все нужно сделать 1, по всей видимости длинным запросом..
Правильнее будет добавить новую таблицу, напр stat_values. связать её с таблицей stat через полt id_client. И потом уже при необходимости добавлять или обновлять значения в этой таблице, те работать со строками а не со столбцами.
@Naykon, для начала вам надо почитать книг на тему БД. Понять, что такое реляционная база данных и для чего же она нужна. Потом почитать о принципах построения архитектуры БД и в частности о правилах нормализации. А потом вернёмся к этому разговору.
Задача - сбор статистики посещаемости для игрового сервера. Статистика собирается онлайн с секундах. У каждого игрока есть свой уникальный ID и он сообщает его серверу в момент подключения. Я хотел сделать чтоб в каждое GetTime(мировое время в секундах) соответствовало TIME_X таким образом TIME_1234, TIME_12345 и т д каждую секунду. Но игроки подключаться к серверу не каждую секунду по этому я хочу чтоб TIME_X создавался только тогда когда игрок подключается или уходит с сервера. - чтоб не плодить столбцы (ибо зачем создавать столбец если туда нечего записывать). Предложите альтернативу если говорите что так не делают..
чем принципы построения БД противореят моим требованиям? да, решение не популярное то подобные действия не будут происходить 100 в секунду. Пожалуйста отвечайте предметно без отсылов куда-то там..
@Naykon просто нельзя создать просто так столбец, у вас он уже должен быть, и быть равен по умолчанию NULL . то есть пустой, и когда вам там что то надо записать , надо делать update этого столбца. И даже это не правильно. Вам надо когда пользователь входит в игру просто записывать в строку его id и время какое вы там хотите. А потом когда выходит записывать в строку id и время. И так каждый раз.