SQL с подзапросами - PullRequest
       6

SQL с подзапросами

1 голос
/ 21 апреля 2011

Я помню, как делал это в классе DB, как будто давным-давно, но не могу вспомнить это и не могу найти нужные слова.

Я пытаюсь по существу перевернуть запрос, которыйсоздает foreach, а затем запускает другой запрос, основанный на информации из первого, в один запрос.Более понятно, у меня есть две таблицы членов и записей.Для наших целей участники имеют два столбца: member_id, member_name, а записи имеют entry_id, channel_id, author_id.Author_id - это FK to member_id.

Я хочу подсчитать количество записей каждого автора и сделать это в одном операторе SQL.Поэтому сначала мне нужен список идентификаторов членов, затем возьмите каждый идентификатор участника и запросите в таблице записей количество записей, где author_id = member_id.

Программно это будет выглядеть примерно так (не полный код obvi):

$mems = select member_id from members_table;
foreach($mems as $cur_mem) {
    $entry_count = select count(*) from entries_table where author_id=$cur_mem[member_id];
    echo $entry_count;
}

Это для MySQL и использования CMS под названием ExpressionEngine, что является причиной этой головной боли решения,Трудно описать эту проблему, поэтому я могу уточнить любые вопросы.

Спасибо!

1 Ответ

1 голос
/ 21 апреля 2011

Попробуйте этот запрос:

SELECT member_id, 
       COUNT(author_id ) 
FROM   members_table m 
       INNER JOIN entries_table 
         ON author_id = member_id 
GROUP  BY member_id 
...