我正在尝试显示提交文章最多的人的用户名,但我不知道如何使用MySQL& PHP,有人可以帮助我吗?
这是MySQL代码。
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(255) DEFAULT NULL,
pass CHAR(40) NOT NULL,
PRIMARY KEY (user_id)
);
CREATE TABLE users_articles (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED mNOT NULL,
title TEXT NOT NULL,
acontent LONGTEXT NOT NULL,
PRIMARY KEY (id)
);
这是我到目前为止的代码。
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT COUNT(*) as coun, user_id
FROM users_articles
GROUP BY user_id
ORDER BY coun DESC
LIMIT 1");
答案 0 :(得分:1)
如果您想获取用户名,您应该使用下一个查询:
SELECT users.name, COUNT(users_articles.id) AS coun
FROM users_articles
LEFT JOIN users_articles ON users.id=users_articles.user_id
GROUP BY users_articles.user_id
ORDER BY coun DESC
LIMIT 1
答案 1 :(得分:0)
SELECT COUNT(*) as coun, user_id
的, users.username
强>
FROM users_articles
,users
的WHERE users_articles.user_id = users.user_id
强>
GROUP BY user_id
ORDER BY coun DESC
LIMIT 1
答案 2 :(得分:0)
您要做的是join。
您需要的SQL查询是:
SELECT COUNT(*) as coun, users.user_id, username
FROM users_articles
INNER JOIN users
ON users_articles.user_id = users.user_id
GROUP BY user_id
ORDER BY coun DESC
LIMIT 1
我对此进行了测试并且有效 结果表包含用户的文章数,用户ID和用户名。
答案 3 :(得分:0)
选择u.user_id,将(ua.id)计为num_articles 来自用户你 left outer join users_articles ua 在u.user_id = ua.user_id上 由u.user_id分组 按num_articles desc排序
左外连接(与内连接相对)确保所有用户都在结果中表示,无论他们是否有users_articles
中的记录。
编辑:由于您只想要提交文章最多的人,因此您不一定需要左外连接(只要至少有一个用户撰写了任何文章)。但是,对于完整列表,它会很有用。
答案 4 :(得分:0)
无论您使用哪种上述查询,只要不要忘记在选择查询中包含“用户名”字段,因为它们都没有包含用户名字段
答案 5 :(得分:0)
像这样使用,
SELECT COUNT(users_articles.*) as coun, users_articles.user_id, users.username
FROM users_articles, users
WHERE users_articles.user_id = users.user_id
GROUP BY users.user_id
ORDER BY coun DESC