2011-10-17 46 views
1

我有兩張桌子。第一個表是請求和它看起來像這樣如何添加其他用戶作爲朋友?

+------------------------------+ 
|   Requests   | 
+----+-------------+-----------+ 
| id | user_from | user_to | 
+----+-------------+-----------+ 
| |    |   | 
| |    |   | 
| |    |   | 
| |    |   | 
+----+-------------+-----------+ 

當請求已發送,另一個用戶接受,他們從請求表到朋友表感動,知道他們現在的確是朋友。

這裏是我的朋友表:

+--------------------------------+ 
|   Friends    | 
+----+-------------+-------------+ 
| id | user_id | friend_id | 
+----+-------------+-------------+ 
| |    |    | 
| |    |    | 
| |    |    | 
| |    |    | 
+----+-------------+-------------+ 

現在我的問題給你的是,我該怎麼辦「移動」(一旦請求被接受)在從請求表給朋友表中的數據?

如果我想執行此操作,SQL查詢將如何顯示?

+0

你用什麼sql? – Anonymous

回答

1

一個INSERT INTO查詢後跟一個DELETE FROM查詢?如果你有Requests.id,像

INSERT INTO Friends (user_id, friend_id) SELECT Requests.user_id, Requests.friend_id FROM Requests WHERE Requests.id = $Your_ID; 
DELETE FROM Requests where id = $Your_ID 
1

你根本不會「移動」它。你插入一個,並從另一個刪除。在交易中做到這一點,以確保它原子地發生。

2

SQL沒有「移動」命令。只有插入和刪除。你想使用這個交易:

start transaction; 
insert into friends ... 
delete from requests ... 
commit; 
0

我該怎麼辦「MOVE」(一旦請求被接受)的FROM THE REQUESTS表友表中的數據???

通過對請求表執行DELETE操作並在好友表中執行INSERT操作。其實,你可能想要做兩個插入與角色相反,以使查詢更簡單。

1

添加一個名爲accepted另一個coolumn其最初是假的。

+-------------------------------------------+ 
|   Friends      | 
+----+-------------+-------------+----------+ 
| id | user_id | friend_id | accepted | 
+----+-------------+-------------+----------+ 
| |    |    |   | 
| |    |    |   | 
| |    |    |   | 
| |    |    |   | 
+----+-------------+-------------+----------+ 

現在你不需要移動任何東西 - 你只需要更新領域TRUE

+0

哦,好的!我認爲它和其他方式一樣有效? –