如何获取数据并与表变量匹配?

时间:2011-05-05 21:55:45

标签: php sql

我遇到了“独特”的问题。我有两个表,一个用于客户端,第二个用于用户。第三个表是注释表。因此,当评论被添加到第三个表,发布人员ID和评论所关联的组织经理时,他的ID被存储。现在,当我必须显示评论时,我不知道如何获得适当的名称,因为它们存储在两个不同的表中。

关于如何做到这一点的任何想法?

我设法创建的一些代码:

   $query="SELECT v_comments.v_comment_id, d_names.d_name,
   v_comments.visit_reply, v_comments.just_date FROM v_comments 
   LEFT JOIN d_names ON v_comments.d_id = d_names.d_id 
   WHERE v_id = '$vid' and v_comments.s_id='$sid' ORDER BY v_comments.id DESC";  
   $result=mysql_query($query);

   $num=mysql_numrows($result);

   mysql_close();

  echo "";

   $i=0;
   while ($i < $num) {

$reply=mysql_result($result,$i,"v_reply");
$replyid=mysql_result($result,$i,"v_comment_id");
$dname = mysql_result($result, $i, "d_name");


echo "";

echo "";

 $i++;
  }

3 个答案:

答案 0 :(得分:1)

你可以做的是在评论表中设置一个名为 id 的字段。

然后在插入注释时在前面添加一个对应于用户类型的字母。例如:

  

客户:c5

     

用户:u5

然后当您显示评论时,只需将字母和数字分开,然后根据字母搜索相应的表格。

答案 1 :(得分:1)

您是否只需要将连接添加到另一个表,并选择其他名称字段?

如果另一个表名为“s_names”(我不得不猜测),这应该有效:

SELECT v_comments.v_comment_id, d_names.d_name, s_names.s_name,
       v_comments.visit_reply, v_comments.just_date
FROM v_comments
LEFT JOIN d_names ON v_comments.d_id = d_names.d_id 
LEFT JOIN s_names ON v_comments.s_id = s_names.s_id 
WHERE v_id = '$vid' and s_id='$sid' ORDER BY v_comments.id DESC;

答案 2 :(得分:1)

这基本上是连接操作在数据库中的作用。 假设您有一个用于客户端的表,其中包含一个主键“ClientId”,一个字符串属性“Name”,以及其他一些在此问题中不重要的信息。

同样,您还有另一个'Managers'表,其中包含主键'ManagerId',以及他/她的名称属性'Name'。

您还有一个评论表,其中包含您所描述的'ClientId','ManagerId'和'Comment'。

现在显示与您相关的注释的实际名称可以使用以下SQL

SELECT Clients.Name, Managers.Name, Comments.Comment 
FROM Comments
INNER JOIN Clients
    ON Clients.ClientId = Comments.ClientId
INNER JOIN Managers
    ON Managers.ManagerId = Comments.ManagerId