Покинул форум
Сообщений всего: 244
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
[+]
Добрый день. Столкнулся с такой проблемой. Нужно сделать регистрацию команды на турнир с 2 условиями. Первое реализовал, а вот со вторым беда. Суть такова. При регистрации должна идти проверка на заполненость двух полей у пользователей, которые относятся к этой команде. И если хотя бы у одного не заполены эти поля, то выводились списком игроки и какое(какие) поля не заполнены... Как такое реализовать?? Таблица юзеров состоит примерно так: uid user_name user_teamid user_steam user_ucp последние 2 как раз надо проверить...
Alho
Отправлено: 27 Сентября, 2012 - 11:50:45
Посетитель
Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Alho пишет:
SELECT user_name WHERE user_teamid=$curent_user_teamid AND user_sream=NULL AND user_ucp=NULL
Во-первых, не AND, а OR (следуя условиям задачи)
Во-вторых, сравнивать на NULL при помощи равенства бессмысленно (нельзя сравнить конкретное значение и отсутствие значения), поэтому в MySQL предусмотрен оператор IS NULL
В-третьих, нужно не просто выбрать пользователей, у которых что-либо не заполнено, но так же и получить список - у кого и что не заполнено, поэтому, я думаю, будет все же два разных запроса на эта два поля.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
ridvik
Отправлено: 27 Сентября, 2012 - 13:19:37
Частый гость
Покинул форум
Сообщений всего: 244
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
[+]
EuGen я вот тоже так думаю, первым сделать user_teamid а уже вторым выбирать пустые значения или нет... но все же как реализовать до конца мне не понятно...
EuGen
Отправлено: 27 Сентября, 2012 - 13:29:36
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
SELECT user_name WHERE user_teamid=$curent_user_teamid AND user_ucp ISNULL
- тех, у кого не заполнено второе.
Если оба запроса ничего не вернули - значит, все в порядке. Если вернули - то показывать список по каждому полю.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
ridvik
Отправлено: 27 Сентября, 2012 - 13:31:51
Частый гость
Покинул форум
Сообщений всего: 244
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
[+]
EuGen вы понимаете что у меня на простую проверку 100500 запросов будет?)
EuGen
Отправлено: 27 Сентября, 2012 - 13:56:11
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
ridvik
Вы сами так поставили задачу. Если важно избежать запросов, то можно использовать один (связывая условия через OR) - и затем анализировать данные в PHP. Однако следует помнить, что запрос, использующий OR, почти всегда не будет использовать индекс - даже если он построен по релевантным полям. Поэтому, вероятнее всего, следует проверять конкретную запись при внесении, сэкономив тем самым в производительности - ведь тогда данные априори не будут некорректными.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 27 Сентября, 2012 - 14:20:29
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 617 раз(а)
EuGen пишет:
почти всегда не будет использовать индекс
Или использовать сразу 2. index_merge, MySQL 5.0 и старше.
----- PostgreSQL DBA
ridvik
Отправлено: 28 Сентября, 2012 - 18:55:01
Частый гость
Покинул форум
Сообщений всего: 244
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
[+]
че то я не могу все же разобраться... с запросами понятно как в пхп условиями это сделать?? нужно что то типо этого...
короч нужно сделать ссылку, которая появлялась бы только если в базе данных пользователей с одинаковым user_teamid больше 5 и user_steam и user_ucp не были пустыми у всех... а если хотя бы у одного последние два пользователя не заполнены то выводился список с пользователем и что у него не списано... помогите кодом плиз...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.