2012-11-07 74 views
1

我發佈了一個類似的問題,這是關於刪除,這是關於插入。如果在「表」中滿足條件,插入「表1」2 SQL

你好,

我做在PHP中使用SQL數據庫一點消息應用程序,但都面臨着一個小問題。我會嘗試儘可能地使這裏去解釋這個...

我有一個表稱爲「用戶」如下:

ID | Username | Password | Email 
------------------------------------------- 
1 | Account1 | Pass 1 | [email protected] 
2 | Account2 | Pass 2 | [email protected] 

我再有另一個名爲「朋友」如下:

UserID | FriendID 
------------------ 
    1 |  2  

所以我需要的是如果條件中的「用戶」表

例滿足,將數據插入到「朋友」表的查詢:

INSERT INTO 'friends' VALUES('$UserID', '$FriendID') IF (users.Password = $Password WHERE users.ID = $UserID) 

我希望這是一個足夠好的解釋,但我覺得這很難解釋。

感謝您的幫助:)

回答

1

您需要將您的應用程序中的條件邏輯,而不是SQL內。您的應用程序代碼本身應該負責確定是否應該執行INSERT。

+1

或許暗示然後如何使用數據庫事務。這並不回答這個問題,或者做任何事情來解決嘗試將這種類型的邏輯移入應用程序代碼時常見的競爭條件。 – ficuscr

4

This'd可能做

INSERT INTO friends (userID, friendID) 
SELECT $userID, $friendID 
FROM users 
WHERE (users.password = $password) and (users.id = $userid) 

如果有where子句匹配,你會然而,許多行插入,因爲有火柴,因爲你選擇的領域,而不是硬編碼值,你只需將這些值插入到朋友表中。

+0

我可能會在此結尾添加LIMIT 1。匹配用戶表應該可能只返回一行,但我不會自己做這個假設。 – TEEKAY

1

嘗試:

INSERT INTO friends VALUES('$UserID', '$FriendID') where UserID in (Select ID from Users where users.Password = '$passoword' and users.ID = '$UserID') 
+0

這似乎給我一個語法錯誤.. –

+0

最新錯誤?你可以在你要查詢的地方顯示代碼行嗎? –

+0

它不能在PostgreSQL上運行,並且在「WHERE」或其附近出現錯誤:語法錯誤 –