2013-09-11 94 views
0

我有一個表單,用戶可以在其中輸入用戶名或姓氏。然後,根據他們輸入的內容和查詢數據庫並顯示所有用戶信息以及他們是否有權訪問某些區域,然後輸入用戶名或姓。我需要查詢兩個表並獲取輸入用戶的所有信息。我假設你使用JOIN,但我不太確定如何去做。現在我有查詢來獲取用戶表中的所有數據,我只需要在第二個表中添加幫助。這兩個表如下所示需要幫助從SQL中的兩個表中獲取所有數據

用戶{ UID 用戶名 密碼 姓名 姓氏 電子郵件 }

userAccess { UID 評估 發展 learningmodule 項目 }

的SQL我到目前爲止是

SELECT * 
FROM Users 
WHERE username = '$username' OR lastname = '$lastname' 
+0

很抱歉,如果它是很難讀表他們沒有正確打印。括號中的每個單詞都是一列 –

回答

1

你是對的,你需要使用連接。這種類型的連接稱爲內部連接。你可以這樣做:

SELECT * from Users, userAccess WHERE Users.uid = userAccess.uid AND Users.uid = #; 

我猜你會有一個id列,也是你的userAccess表的主鍵。對於上述語句爲真的每種情況,上述查詢將爲1條記錄中的兩個表提供數據。

如果你正在使用MySQL,你可以閱讀更多關於加入這裏:

http://dev.mysql.com/doc/refman/5.0/en/join.html

0

你難道你不正在使用的數據庫提到,雖然我猜的MySQL。

你需要做的是一個簡單的內連接:

SELECT u.uid 
    u.username, 
    u.password, 
    u.firstname, 
    u.lastname, 
    u.email, 
    ua.assessment, 
    ua.development, 
    ua.learningmodule, 
    ua.project 
FROM Users u 
INNER JOIN UserAccess ua 
    ON u.uid = ua.uid 
WHERE u.firstname LIKE '%$username%' OR u.lastname LIKE '%$lastname%'; 

請注意,我不是在UserAccess表再次選擇UID,因爲它是多餘的,因爲你已經從用戶表中選擇它並且由於您通過該密鑰加入,您不需要再次使用該密鑰。

另請注意,不是使用等號運算符(=),而是使用LIKE運算符,因爲您希望根據部分信息(如關鍵字而不是全部單詞)篩選信息的機會更多。

我建議你看一看初學者的SQL教程。 This one似乎足夠好。

我也建議你閱讀關於如何在這裏張貼問題的指導原則,否則你將無法從任何人得到太多的關注,再加上他們將downvote你:)

+0

哦,是的,還有一些其他的,如果你剛剛開始使用SQL,請避免在查詢中使用「SELECT * FROM」,而只需選擇實際需要的字段,這樣可以加快查詢速度,並實現代碼更容易維護和調試。 –