Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: count из одной таблицы плюс внесение результатов в другую
 
 автор: zeta777   (16.09.2008 в 19:06)   письмо автору
 
 

Есть две таблицы - table1 и table2.
В table1 внесены данные о статьях, опубликованных авторами, есс-но каждая статья (table1.field2) соотнесена с id автора (table1.field1). Нужно подсчитать сколько статей у каждого автора и внести эти данные в table2, чтобы table1.field1=table2.field1.


SELECT COUNT(field2) FROM table1
JOIN table2 ON table1.field2 = table2.field2
WHERE table1.field1 = table2.field1

Это то, до чего я смогла додуматься. Но по-моему явно неправильно додумалась :)

Там же еще нужно указать, что count нужно у тех field2, где field1 совпадают. Это как? При помощи group by field1?

То есть

SELECT COUNT(field2) FROM table1 GROUP BY field1
JOIN table2 ON table1.field2 = table2.field2
WHERE table1.field1 = table2.field1


Или

SELECT COUNT(table1.field2) FROM table1 GROUP BY table1.field1
JOIN table2 ON table1.field2 = table2.field2
WHERE table1.field1 = table2.field1

В любом случае все это не работает, а как сделать запрос, чтобы работал?

  Ответить  
 
 автор: Trianon   (16.09.2008 в 19:12)   письмо автору
 
   для: zeta777   (16.09.2008 в 19:06)
 

Я так не могу.
>Есть две таблицы - table1 и table2.
Есть две таблицы - articles(id, id_author) и authors(id, art_count)

>В table1 внесены данные о статьях, опубликованных авторами, есс-но каждая статья (table1.field2) соотнесена с id автора (table1.field1). Нужно подсчитать сколько статей у каждого автора и внести эти данные в table2, чтобы table1.field1=table2.field1.

Вторую строку дословно переводить не стал, поскольку Вы там насажали ошибок.

Сперва нужно получить таблицу с количеством статей каждого из авторов
- затем присвоить данные.

Как-то так:

UPDATE 
  authors
  LEFT JOIN 
   (SELECT
      aurthos.id AS aid, 
      COUNT(authors.id) as cnt
    FROM 
       articles JOIN authors ON articles.id_author = authors.id 
    GROUP BY aid
   ) as rcnt ON   authors.id = rcnt.aid
 SET   authors.art_count = COALESCE(rcnt.cnt, 0);

Внутренний запрос как раз получает таблицу с количеством статей.

  Ответить  
 
 автор: zeta777   (16.09.2008 в 20:08)   письмо автору
 
   для: Trianon   (16.09.2008 в 19:12)
 

Спасибо. Это я как-то сразу не могу переварить, обмозговать надо :).

  Ответить  
 
 автор: Trianon   (16.09.2008 в 20:17)   письмо автору
 
   для: zeta777   (16.09.2008 в 20:08)
 

варить начинать нужно отсюда:
SELECT
      aurthos.id AS aid, 
      COUNT(authors.id) as cnt
    FROM 
       articles JOIN authors ON articles.id_author = authors.id 
    GROUP BY aid


Будут вопросы - задавайте.

  Ответить  
 
 автор: zeta777   (17.09.2008 в 15:59)   письмо автору
 
   для: Trianon   (16.09.2008 в 20:17)
 

Спасибо большое, вроде все получается... Пока что :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования