Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по циклу?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
greenzlat
Отправлено: 04 Марта, 2009 - 20:50:22
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




Мне нужно посчитать кол-во строк в базе с определенным id. Но так как id очень много, то вручну писать долго очень
Примерно должно это быть так:


CODE (text):
скопировать код в буфер обмена
  1. <?
  2.  
  3. $result1 = mysql_query ("SELECT * FROM pesni  WHERE id_author=1",$db);
  4. $row_count = mysql_num_rows($result1);
  5.  
  6. $result2 = mysql_query ("SELECT * FROM pesni  WHERE id_author=2",$db);
  7. $row_count = mysql_num_rows($result2);
  8.  
  9. $result3 = mysql_query ("SELECT * FROM pesni  WHERE id_author=3",$db);
  10. $row_count = mysql_num_rows($result3);
  11. ......................................................
  12. $result1000 = mysql_query ("SELECT * FROM pesni  WHERE id_author=1000",$db);
  13. $row_count = mysql_num_rows($result1000);
  14. ?>
 
 Top
valenok
Отправлено: 04 Марта, 2009 - 21:29:13
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




SELECT `id_author`,COUNT(`id_author`) as cnt FROM `pesni` GROUP BY `id_author`


-----
Truly yours, Sasha.
 
My status
 Top
CodeWarrior
Отправлено: 04 Марта, 2009 - 21:54:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009  
Откуда: Албания


Помог: 0 раз(а)




Ему похоже нужны определенные ID... Если это, то внесите ID в массив и сделайте перебор циклом, но в этом случае запросов к базе будет угрожающе много. А если не то смотрите пост выше.
 
 Top
valenok
Отправлено: 04 Марта, 2009 - 22:38:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




CodeWarrior есть простой оператор WHERE `id` IN ( 1, 2 , 3)
но раз уж он собрался вывести информацию о тысяче оперторов, то вариант выше будет гораздоо удобней.


-----
Truly yours, Sasha.
 
My status
 Top
CodeWarrior
Отправлено: 05 Марта, 2009 - 01:20:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009  
Откуда: Албания


Помог: 0 раз(а)




valenok пишет:
но раз уж он собрался вывести информацию о тысяче оперторов

На этот вопрос только он даст ответ... Будем ждать что скажет аффтар темы. Я думаю так: изъясняться нужно сразу и точнее... Хотя можно конечно упустить кое какие моменты. Никто от этого не застрахован.

(Отредактировано автором: 05 Марта, 2009 - 01:22:43)

 
 Top
Stierus Супермодератор
Отправлено: 05 Марта, 2009 - 09:01:24
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Вариант валенка единственно адекватный
 
My status
 Top
greenzlat
Отправлено: 05 Марта, 2009 - 09:28:42
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




У меня есть 2 таблицы связанные между собой. Вот мне нужно посчитать в таблице pesni кол-во строк с определенным id_author и для этого id_author записать эту цифру в таблицу author
 
 Top
Champion Супермодератор
Отправлено: 05 Марта, 2009 - 09:35:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Мы поняли, тебе ж valenok написал всё.

Stierus пишет:
Вариант валенка единственно адекватный
Других вариантов и не предложил никто)
 
 Top
Stierus Супермодератор
Отправлено: 05 Марта, 2009 - 09:39:00
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Твои 2000 запросов трансформируются в 1 :

UPDATE `test2` SET `cnt` = (SELECT COUNT(`news_id`) FROM `term_in_news` where `news_id` = `id2` GROUP BY `news_id`)

добавь WHERE id IN () если нужно не всё обновлять
(Добавление)
Цитата:
Других вариантов и не предложил никто)
Другой вариант у автора топика ...
 
My status
 Top
greenzlat
Отправлено: 05 Марта, 2009 - 09:57:40
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




Делаю такой запрос
CODE (text):
скопировать код в буфер обмена
  1. UPDATE `author` SET `kol_pes_author` = (SELECT COUNT(`id_author`) FROM `pesni` where `id_author` = `2` GROUP BY `id_author`)


Мне нужно вставить в kol_pes_author - воличество строк из pesni с определенным id_author
 
 Top
Stierus Супермодератор
Отправлено: 05 Марта, 2009 - 09:59:20
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Если хочешь советами - они выше, если конкретный код - выкладывай структуру БД
 
My status
 Top
greenzlat
Отправлено: 05 Марта, 2009 - 10:03:33
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




Stierus пишет:
выкладывай структуру БД


таблица author (id, author, bukva, kol_pes_author)
таблица pesni (id, id_author,text)
 
 Top
Champion Супермодератор
Отправлено: 05 Марта, 2009 - 10:10:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




greenzlat, зачем в последнем твоем запросе GROUP BY?
 
 Top
Stierus Супермодератор
Отправлено: 05 Марта, 2009 - 10:16:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




UPDATE `author` SET `kol_pes_author` = (SELECT COUNT(`id_author`)FROM `pesni` where `id_author` = `author`.`id`)


Чемпион, вот задача :

Цитата:
У меня есть 2 таблицы связанные между собой. Вот мне нужно посчитать в таблице pesni кол-во строк с определенным id_author и для этого id_author записать эту цифру в таблицу author


А это вариант, если не всех авторов надо парвить, а только 1-го и 2-го :

UPDATE `author` SET `kol_pes_author` = (SELECT COUNT(`id_author`)FROM `pesni` where `id_author` = `author`.`id`) WHERE `author`.`id` IN (1,2)

(Отредактировано автором: 05 Марта, 2009 - 10:21:32)

 
My status
 Top
greenzlat
Отправлено: 05 Марта, 2009 - 10:44:34
Post Id


Новичок


Покинул форум
Сообщений всего: 59
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




Stierus, спасибо огромное получилось))!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB