berkut
Новичок
count() и несколько таблиц
подскажите с запросом для подсчёта количества записей из нескольких таблиц. упрощённая до минимума структура
Нужно выбрать всех пользователей(users) и при этом подсчитать, сколько у этого пользователя "items" и сколько "friends". Естественно, таблицы users-items и users-friends связанны отношением один ко многим. Из-за этого и вся проблема. Такой запрос не правильно работает:
подскажите с запросом для подсчёта количества записей из нескольких таблиц. упрощённая до минимума структура
Код:
CREATE TABLE users (
id mediumint(9) unsigned NOT NULL auto_increment,
PRIMARY KEY (id)
) ENGINE=MyISAM;
CREATE TABLE friends (
user_id mediumint(9) unsigned NOT NULL default '0' COMMENT 'внешний ключ для users.id',
friend_id mediumint(9) unsigned NOT NULL default '0'
) ENGINE=MyISAM;
CREATE TABLE items (
id int(11) unsigned NOT NULL auto_increment,
owner_id mediumint(9) unsigned NOT NULL default '0' COMMENT 'внешний ключ для users.id',
PRIMARY KEY (id)
) ENGINE=MyISAM;
Код:
SELECT u.*, COUNT(f.user_id) AS friends, COUNT(i.owner_id) AS items
FROM users u
LEFT JOIN friends f ON u.id = f.user_id
LEFT JOIN items i ON u.id = i.owner_id
GROUP BY u.id