我有一个系统,在那里用户(发件人)可以给朋友(接收者)写个便条,号码是receivers>=0。消息的文本保存在DB中,发送者和所有接收者都可以看到,然后登录到系统。发送者可以在任何时候增加更多的接收者。更重要的是,任何接收者都可以编辑消息,甚至可以从DB中删除它。对于这个系统,我创建了3个表,很快:
用户(userID,用户名,密码)
消息(messageID,文本)
列表(id,senderID,receiverID,messageID)
在表“列表”中,每一行对应于一对发送方-接收方,如
sender_x_ID -- receiver_1_ID -- message_1_ID
sender_x_ID -- receiver_2_ID -- message_1_ID
sender_x_ID -- receiver_3_ID -- message_1_ID
现在的问题是:
更重要的是:
。
sender_x_ID -- receiver_4_ID -- message_1_ID
sender_x_ID -- receiver_5_ID -- message_1_ID
并从表“列表”中删除与user1对应的行(该行不再在列表或接收者中)
sender_x_ID -- receiver_1_ID -- message_1_ID
从PHP发送哪个sql查询使其变得简单和智能?请帮帮我!sql查询的示例将是完美的!
发布于 2010-06-16 17:29:55
你的第一个问题很简单。您可以通过在list上设置外键来做到这一点。将其设置为CASCADE更新和删除(以便DELETE FROM messages WHERE messageID = 5将自动删除list中的所有行,其中messageID = 5也是如此)。您需要使用InnoDB作为存储引擎才能工作.
对于第二个问题,这也很容易。只需在一个查询中插入新行:
INSERT INTO list (senderID, receiverID, messageID)
VALUES (sender_x_id, receiver_4_id, message_1_id),
(sender_x_id, receiver_5_id, message_1_id);然后把其他的移除在另一个:
DELETE FROM list
WHERE receiverID = receiver_1_id
AND messageID = message_1_idhttps://stackoverflow.com/questions/3055542
复制相似问题