2013-03-17 27 views
1

我對數據庫相當陌生,所以如果這聽起來很愚蠢,我會提前道歉。我創建一個基本的Web應用程序,模擬一個微博客網站。我有三個表authors,posts & commentsMySQL用戶表和帖子表 - 匹配ID

authors表描述如下:下面

aId int(20) NO PRI NULL auto_increment 
aUser varchar(30) NO UNI NULL  
aPass varchar(40) NO  NULL  
aEmail varchar(30) NO UNI NULL  
aBio mediumtext YES  NULL  
aReg datetime NO  NULL  

posts表中描述:

pId int(20) NO PRI NULL auto_increment 
pAuthor int(20) NO MUL NULL  
pTitle tinytext NO  NULL  
pBody mediumtext NO  NULL  
pDate datetime NO  NULL  

我明白關係的基礎知識,但我可以問,如果我的Web應用程序我想顯示帖子,幷包括髮布他們的人,是否有這樣做的結果集將顯示實際的用戶名,而不是數字ID?每次創建帖子時,我都會捕獲用戶ID,因此每個創建的帖子都是由有效的用戶ID創建的,發佈表記錄了創建該用戶的用戶ID,但在查詢選擇查詢中查看帖子時,會顯示數字而不是作者表中與它們關聯的名稱。我們有一個查詢我可以用來做到這一點或做到這一點,所以當從作者使用select *時,它會顯示用戶名而不是用戶ID。 謝謝你們。

回答

1

我認爲你正在尋找一個SQL查詢:

SELECT pTitle, pDate, aUser 
FROM posts 
LEFT JOIN authors ON aId=pAuthor 
ORDER BY pDate DESC 

SELECT你告訴MySQL中,你希望看到什麼欄目,與LEFT JOIN你的表連接在一起(由aIdpAuthor)和後與ORDER BY你告訴mysql的給他們,你通過之日起,從最新的pDate DESC(最高日第一)

SELECT posts.*, authors.aUser 
FROM posts 
LEFT JOIN authors ON aId=pAuthor 
WHERE pTitle LIKE "%news%" 
ORDER BY pDate DESC, aUser ASC 

看到下令提交的名稱,當搜索標題包含從最新的帖子排序的「新聞」,並在兩個帖子具有相同的時間戳,顯示他們按用戶名排序(亞當將前往Zachariash)

如果你不需要要查看比標題,日期和用戶名稱更多的信息,請使用上面第一個查詢中的第一行

+0

非常感謝您Martina!但是,舉例來說,如果我正在按標題搜索特定帖子,或者通過發佈內容可以說,我將如何獲取它以顯示發佈該用戶的用戶名而不是數字ID。所以例如,如果我正在做一個「SELECT * from POSTS WHERE pTitle LIKE%news」 - 結果集將顯示數字ID,我真的很喜歡它顯示發佈它的人的用戶名。 (我希望即時解釋正確) - 謝謝你。 – user2172307 2013-03-17 23:09:04

+0

@ user2172307不客氣:) – Martina 2013-03-17 23:12:06

+0

這完美的工作,瑪蒂娜,你解釋得很好。太感謝了。 – user2172307 2013-03-17 23:25:24