|
|
|
| Есть две таблицы - 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
В любом случае все это не работает, а как сделать запрос, чтобы работал? | |
|
|
|
|
|
|
|
для: 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);
|
Внутренний запрос как раз получает таблицу с количеством статей. | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 19:12)
| | Спасибо. Это я как-то сразу не могу переварить, обмозговать надо :). | |
|
|
|
|
|
|
|
для: 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
|
Будут вопросы - задавайте. | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2008 в 20:17)
| | Спасибо большое, вроде все получается... Пока что :) | |
|
|
|