Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.04.2011, 17:27
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 1  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
По умолчанию Интересный запрос (помогите составить) Mysql

я делаю игру и мне нужен очень интересный для меня запрос!

и так, у нас есть таблица fon
вот её структура
id|user1|user2|user3|user4|user5


мне нужен запрос который бы нашёл строку с ид 5 и проверил на заполненность user1,user2,user3,user4,user5 и в первую свободную записал бы цифру 1

Старый 26.04.2011, 17:45
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 2  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
Проще (и правильнее) поменять структуру базы:
-у таблицы fon убрать столбцы user1|user2|user3|user4|user5
-создать таблицу fon_users со структурой
id|fon_id|user
-складывать в эту таблицу всех users

Если так хочется, чтобы обязательно было 5 users, то при вставке в fon можно добавить 5 записей в fon_users. Но это довольно коряво...

Старый 26.04.2011, 18:23
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 3  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
Цитата:
Сообщение от incoob Посмотреть сообщение
Проще (и правильнее) поменять структуру базы:
-у таблицы fon убрать столбцы user1|user2|user3|user4|user5
-создать таблицу fon_users со структурой
id|fon_id|user
-складывать в эту таблицу всех users

Если так хочется, чтобы обязательно было 5 users, то при вставке в fon можно добавить 5 записей в fon_users. Но это довольно коряво...
можете подсказать запрос под мой пример?

Добавлено через 3 часа 24 минуты
можете подсказать еще один запрос?
нужен почти такой-же только чтоб он выводил столько полей user свободных и сколько занятых.

Очень важный для меня момент!

Старый 27.04.2011, 00:07
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 4  
Ответить с цитированием
Crazy
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Код:
update fon set 
  user5 = if( isnull(user5) and not isnull(user4) and not isnull(user3) and not isnull(user2) and not isnull(user1), 1, user5),
  user4 = if( isnull(user4) and not isnull(user3) and not isnull(user2) and not isnull(user1), 1, user4),
  user3 = if( isnull(user3) and not isnull(user2) and not isnull(user1), 1, user3),
  user2 = if( isnull(user2) and not isnull(user1), 1, user2),
  user1 = ifnull(user1, 1)
where id = 5
Добавлено через 5 минут
Код:
select if(isnull(user1),0,1) +
       if(isnull(user2),0,1) +
       if(isnull(user3),0,1) +
       if(isnull(user4),0,1) +
       if(isnull(user5),0,1) as count
  from fon
  where id = 5
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 29.04.2011, 15:43
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Если поля свободны, то зачем вообще хранить их в базе?
Имеем таблицы:
Код:
+-----------+
|backgrounds|
+-----------+
|id         |
+-----------+

+-----------------+
|backgrounds_users|
+-----------------+
|id_background    |
|id_user          |
+-----------------+
Каждая запись в таблице backgrounds_users привязывает пользователя к фону (не могу даже представить, зачем это нужно). При помощи дополнительных ухищрений типа ON INSERT, можно сразу наложить ограничения на уникальность пары (id_background, id_user) и на максимальное количество юзеров для одного фона. В этом случае запросы заметно упростятся.

Получение количества игроков, привязанных к фону %ID%:
Код:
SELECT count(id_user) FROM backgrounds_users WHERE id_background=%ID%;
Добавление игрока %USER% к фону %BACKGROUND%:
Код:
INSERT INTO backgrounds_users SET id_background=%BACKGROUND%, id_user=%USER%;
__________________
тонкий тролль, осеянный благодатью

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.