REEXAM PREP QUESTION - DOUBLE COUNT
Понеже поправката на курса MYSQL наближава и съм се захванал да решавам старите изпити, имам един въпрос по задачка от изпита през СЕПТЕМВРИ 2017
ЗАДАЧАТА Е 11-ta MOST POPULAR USER
Extract from the database, the most popular user – the 1st in terms of count of followers.
Required Columns
- id (users)
- username
- posts (count of posts)
- followers (count of followers )
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT u.id, u.username, COUNT(p.user_id) AS post, COUNT(uf.follower_id) AS followers
FROM users AS u
RIGHT JOIN users_followers AS uf ON uf.user_id=u.id
RIGHT JOIN posts AS p ON p.user_id=u.id
GROUP BY u.id
ORDER BY followers DESC LIMIT 1 ;
ТОВА Е МОЕТО РЕШЕНИЕ - имам проблем при групирането и затова COUNT(post.id) не излиза правилно. Ще се радвам ако някой даде едно рамо :)
Да предположенията са ти точни.
Има 3 таблици - users, posts , users_followers като последната е mapping tabele (users_id , followers_id ) са свързани към users.id със fk. Posts също има сръзка с users по fk
Няма постове без user_id такаче това не би трябвало да е проблем. НО групировката не се получава... пробвах това с МAX(COUNT(...)) и преди, но не тръгва. Казва че е неправлно използване на функции.
ИНАЧЕ това е базата. ДАТА-та е в джъдж - изпит СЕпетември 2017
CREATE DATABASE instagraph_db;
USE instagraph_db;
CREATE TABLE pictures (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
path VARCHAR(255) NOT NULL,
size DECIMAL(10,2) NOT NULL
);
CREATE TABLE users (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) UNIQUE,
password VARCHAR(30) NOT NULL,
profile_picture_id INT(11),
CONSTRAINT fk_users_picktures
FOREIGN KEY (profile_picture_id) REFERENCES pictures(id)
);
CREATE TABLE posts (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
caption VARCHAR(255) NOT NULL,
user_id INT(11) NOT NULL,
picture_id INT(11) NOT NULL,
CONSTRAINT fk_posts_users
FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_posts_pictures
FOREIGN KEY (picture_id) REFERENCES pictures(id)
);
CREATE TABLE comments (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255) NOT NULL,
user_id INT(11) NOT NULL,
post_id INT(11) NOT NULL,
CONSTRAINT fk_comments_users
FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_comments_posts
FOREIGN KEY (post_id) REFERENCES posts(id)
);
CREATE TABLE users_followers (
user_id INT(11),
follower_id INT(11),
CONSTRAINT fk_user_users
FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_user_followers
FOREIGN KEY (follower_id) REFERENCES users(id)
);