【发布时间】:2013-08-28 21:38:09
【问题描述】:
我试图在一个查询中从 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。 message_id 指的是 email 表中邮件的id。
发件人和收件人 ID 是指来自名为 people_emails 的第三个表中的电子邮件 ID。它由id(发件人和收件人电子邮件ID 所指)、internal_user_id(PHP 会话可用)、email 和people_id(每个人的通讯录中可能有几封电子邮件)组成我将人员和他们的电子邮件存储在单独的表中,但如果不是我们感兴趣的最后一列)。
所以我可以弄清楚我将如何按顺序进行查询,并且只针对一行结果:
首先我会根据他的用户 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]
我需要将它作为一个结果列表,然后将其传递给引导数据表插件以进行显示和搜索。我似乎无法弄清楚这一点。请帮忙。
【问题讨论】:
-
您要查找的内容称为
join
标签: php mysql sql database-table