2010-05-21 49 views
2
顯示數據

我想顯示誰提交了大多數文章的人的用戶名,但我不知道如何使用MySQL & PHP這樣做,可有人能幫助我嗎?的MySQL如何從兩個表

這裏是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

SELECT COUNT(*) as coun, user_id, users.username
FROM users_articlesusers
WHERE users_articles.user_id = users.user_id
GROUP BY user_id
ORDER BY coun DESC
LIMIT 1

+1

它能夠更好地使用顯式INNER JOIN語法。使其更具可讀性 – Gunjan 2010-05-21 06:47:35

+0

這並沒有工作 – gew 2010-05-21 06:50:14

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和用戶名。

0

選擇u.user_id,計數(ua.id),如從用戶NUM_ARTICLES ù 上u.user_id = ua.user_id 組左外連接users_articles UA 通過u.user_id 爲了通過NUM_ARTICLES降序

左外連接(相對於內部連接)確保所有用戶都在結果表示的,如果它們具有在users_articles或不記錄不管。

編輯:既然你只想誰提交了大多數文章的人,你不一定需要左外連接(只要有誰寫任何文章至少一個用戶)。然而,對於完整的列表來說,這將是有用的。

+0

這不會讓我顯示用戶名只是文章的數量? – gew 2010-05-21 07:01:02

+0

加油,只需將'u.username'添加到字段列表中。 Stackoverflow並不能解除你必須自己思考的問題。 – 2010-05-21 09:20:51

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 
+0

+1現在,這可以給你的用戶名:)他知道什麼用戶ID和什麼用戶名:) – 2010-05-21 07:03:18

0

無論由怪才u使用只是不要忘記給上述查詢包括選擇查詢「用戶名」場因爲它們都沒有包括用戶名字段

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