Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
Приветствую всех жителей этого форума! Прошу помочь с решением проблемы.
Знающие люди mysql и умельцы php! Подскажите как сделать правильный sql запрос подсчитывающий количество аккаунтов с одинаковым user_id!
Имеем базу данных "sitedb."
Содержимое таблицы "accounts" с аккаунтами базы "sitedb"
Есть модуль регистрации!
Нужно написать запрос, выполняющих подсчет количества аккаунтов у определенного "user_id". Если количество аккаунтов у определенного "user_id" равно 5 - возвращаем ошибку.
Пример выполнения запроса:
Код: //// Count Accounts in DB ////
$query = 'SELECT count(`login`) FROM #__accounts WHERE `login`= '.$db->Quote($Login);
$db->setQuery($query);
if ($db->loadResult()) {
JError::raiseNotice( '', 'REGISTRATION_COUNT_5' );
return false; /// STOP if Login = 5 ///
}
Сообщений: 566
Тем: 6
Зарегистрирован: Feb 2010
Репутация:
4,513
SELECT user_id,COUNT(*) FROM accounts GROUP BY user_id;
покажет сколько логинов у всех user_id
SELECT user_id,COUNT(*) FROM accounts WHERE user_id='11' GROUP by user_id;
так покажет кол-во логинов у user_id 11.
Сообщений: 1,317
Тем: 115
Зарегистрирован: Sep 2012
Репутация:
3,925
02-10-2013, 01:51 PM
(Сообщение последний раз редактировалось: 02-10-2013, 02:40 PM Dementor.)
Показывает кол-во аккаунтов, у которых user_id='5'
[SRC="sql"]SELECT COUNT(login) FROM accounts WHERE user_id='5'[/SRC]
Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
Все не так поняли суть запроса.
Необходимо сделать запрос выполняющих подсчет количества аккаунтов у определенного "user_id". Если количество аккаунтов (поле "login") у определенного "user_id" (поле "user_id") равно 5 - возвращаем ошибку.
Сейчас попробую что нибудь придумать из ваших подсказок
Сообщений: 1,317
Тем: 115
Зарегистрирован: Sep 2012
Репутация:
3,925
02-10-2013, 02:19 PM
(Сообщение последний раз редактировалось: 02-10-2013, 02:37 PM Dementor.)
Krasavella Написал:Все не так поняли суть запроса.
Необходимо сделать запрос выполняющих подсчет количества аккаунтов у определенного "user_id". Если количество аккаунтов (поле "login") у определенного "user_id" (поле "user_id") равно 5 - возвращаем ошибку.
Сейчас попробую что нибудь придумать из ваших подсказок
после своего поста, я понял, что я Вас не понял :redlol: Сейчас я напишу позже, сек. Просто без теста не могу такой запрос написать сразу, только настрою доступ к базе. Ждите... )
P.S. винду перебивал.
Добавлено через 18 минут
Krasavella;275149 Написал:Необходимо сделать запрос выполняющих подсчет количества аккаунтов у определенного "user_id". погодите. так мой запрос это и делает, вы ничего не путаете?
Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
РадужныйПони Написал:мой запрос это и делает, вы ничего не путаете? Мне нужно, чтобы запрос выполнял функцию подсчета логинов у одного и того же user_id, если логинов больше или равно 5 то возвращаем ошибку
Сообщений: 1,317
Тем: 115
Зарегистрирован: Sep 2012
Репутация:
3,925
Krasavella Написал:Мне нужно, чтобы запрос выполнял функцию подсчета логинов у одного и того же user_id, если логинов больше или равно 5 то возвращаем ошибку
ну, вы хоть проверяли мой запрос? Вы наверное не правильно толкуете, чего хотите.
Пример: считаем кол-во логинов, у которых user_id=5. результат с вашего скрина выйдет: 3
Не так?
Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
РадужныйПони Написал:ну, вы хоть проверяли мой запрос? Вы наверное не правильно толкуете, чего хотите.
Пример: считаем кол-во логинов, у которых user_id=5. результат с вашего скрина выйдет: 3
Не так?
Именно так! А как этот запрос укомпоновать в php скрипте? Чтобы выполнялся запрос и если количество логинов больше или равно 5 - return false; ?
Код: //// Count Accounts in DB ////
$query = 'SELECT count(`login`) FROM #__accounts WHERE `login`= '.$db->Quote($Login);
$db->setQuery($query);
if ($db->loadResult()) {
JError::raiseNotice( '', 'REGISTRATION_COUNT_5' );
return false; /// STOP if Login = 5 ///
}
Сообщений: 1,317
Тем: 115
Зарегистрирован: Sep 2012
Репутация:
3,925
02-10-2013, 02:59 PM
(Сообщение последний раз редактировалось: 02-10-2013, 03:10 PM Dementor.)
а по поводу возвращаем ошибку, это уже в запрос не входит, делайте сами типо что-то:
[SRC="php"]
if ($result >= 5)
{
return false; // возвращаем ошибку в виду булевого значения
}
[/SRC]
Добавлено через 48 секунд
Krasavella, тьфу так бы сразу и сказали... , ща отредактирую ваш отрывок скрипта.
Добавлено через 7 минут
уточнить кое-что надо, это Вы сами писали?:
PHP код: <?php
$query = 'SELECT count(`login`) FROM #__accounts WHERE `login`= '.$db->Quote($Login);
если нет, то покажите оригинал, а то не ясно кое-что. У меня мозг ломается от увиденного, как можно получать кол-во логинов где сам же логин = ... Бред какой-то. Структуру полную я не вижу, поэтому уточняйте.
Сообщений: 794
Тем: 31
Зарегистрирован: Dec 2012
Репутация:
2,838
РадужныйПони Написал:это Вы сами писали?
Это пример другого запроса, для проверки существует ли логин
|