2014-02-24 38 views
0

我有兩個表。一張桌子有ID,文字。另一個有ID,用戶名。SQL選擇語句併發症

當有人登錄到頁面時,他們有一個用戶名ID,所以用戶名有一個值。

我要選擇從表1中,其中ID表二和用戶名該ID的值相匹配的ID和TEXT抓住是相同記錄的人。

回答

1

更換t1t2與適當的表名。 。我不知道你使用的是什麼語言的代碼,但已登錄的用戶的價值代替

SELECT t1.ID, t1.TEXT 
FROM t1 
LEFT JOIN t2 on t2.ID = t1.ID 
WHERE t2.username = '<some username>' 

您的意見後,這裏的新查詢:

$Query = "SELECT LandingPage_Notification.ID, LandingPage_Notification.Title, LandingPage_Notification.HTML,LandingPage_Notification.DateExpiry FROM LandingPage_Notification LEFT JOIN Track_Notification on Track_Notification.ID = LandingPage_Notification.ID WHERE Track_Notification.Track_UserID= '$userName'"; 
+0

即時消息寫在PHP中,這仍然是好的 – CFleming

+0

是的,這將適用於MySQL。只需用您的$ username變量替換即可。 – steinmas

+0

它不工作,我不知道爲什麼。 – CFleming

2

你應該看看SQL中的聯接。

事情是這樣的:

$query = "SELECT a.ID, a.TEXT FROM table1 a JOIN table2 b ON a.id=b.id WHERE b.id = 'ID of person logged in'; 
+0

因此,在這種情況下,'a'是table1,還是我只會寫'a' – CFleming

+1

@ user3337821您應該查找「別名」。當你寫「從table1 a」時,這會使「a」成爲table1的別名,所以你可以使用「a」而不是「table1」。當表名很長時,這可能很方便。如果你想自己加入一個表格,這是非常重要的,因爲你必須有一種方法來給這個表格的兩次出現賦予不同的名稱。 – Jay

1

這是一個僞查詢,但你也許可以將其粘貼到您的查詢編輯器來得到結果。

$用戶名是一個變量,可能是作爲URL中的變量發送的。

SELECT ID, TEXT FROM [Table 1] WHERE [ID]=(SELECT TOP 1 [ID] FROM [Table 2] WHERE Username='$Username') 

您沒有指定數據庫類型,因此請記住使用適當的限定符封裝您的表。以上對於SQLServer和Access非常有用,但您可能需要使用`而不是MySQL。