我试图在一个查询中从 3 个表中获取数据。这些表用于存储和显示用户消息。每个用户都可以登录并请求他的所有收件箱消息。用户 ID 可从 PHP 会话中获得,参数 type=1 在 php 请求中传递,这意味着显示收件箱的请求(type=2 将是信息消息等)。
第一个名为email的表有id
, subject
,body
和date
第二个名为email_routing的表有message_id
, sender_email_id
, receiver_email_id
, basket
, type
. email表中消息的message_id
引用。id
发件人和收件人 id 是指来自名为people_emails的第三个表中的电子邮件 ID 。它包括id
(发送者和接收者的电子邮件 ID 所指的内容)、internal_user_id
(PHP 会话中可用的内容)email
和people_id
(每个人的通讯录中可能有几封电子邮件,因此我将人员和他们的电子邮件存储在单独的表中,但这如果不是我们感兴趣的最后一列)。
所以我可以弄清楚我将如何按顺序进行查询,并且只针对一行结果:
拳头我会根据他的 user_id 从 PHP 会话中获取用户电子邮件 ID:
$X = SELECT `id` from `people_emails` WHERE `internal_user_id`=$_conf[user]->id;
$X 不是正确的编码,假设它是我最终会得到的变量。
然后我可以在 email_routing 表中查询发送给该用户的所有消息:
$Y = SELECT `message_id`, `sender_email_id`, `receiver_email_id` FROM `email_routing` WHERE `receiver_email_id`=$X[id] and `type`=$_REQUEST[type];
有了 message_id 的列表,我现在可以在电子邮件表中查询消息内容:
$R = SELECT `subject`, `body`, `date` FROM `email` WHERE `id`=$Y[message_id];
好的,那么我需要从我从 email_routing 表中获得的 id 中“翻译”“发件人”地址,所以它是:
$Z_from = SELECT `email` FROM `people_emails` WHERE `id`=$X[sender_email_id];
我现在拥有一行的所有数据。然后我需要把所有的东西放在一起
$Z_from + $R[subject] + $R[body] + $R[date]
我需要将它作为一个结果列表,然后将其传递给引导数据表插件以进行显示和搜索。我似乎无法弄清楚这一点。请帮忙。