MySQL如何显示来自两个表的数据

时间:2010-05-21 06:40:24

标签: php mysql

我正在尝试显示提交文章最多的人的用户名,但我不知道如何使用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");

6 个答案:

答案 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