连接两个表,其中表1具有与表2相同的主键

时间:2014-05-10 23:34:39

标签: php mysql sql

我在mySql中真的很新,因为我仍然在我的学位一年级。真的需要帮助解决这个问题。

我想建立一个约会系统,我有表1(注册)和表2(makeappt)。我使用Dreamweaver和mysql作为我的数据库。如表1所示,主键是用户名和表2。

我的问题是当我测试登录为'Mia'作为示例时,Mia无法查看她的约会,但系统查看另一个用户的约会。 我该怎么办?我试过了:

SELECT DISTINCT 
    t2.username,
    t2.disease,
    t2.date,
    t2.time,
    t1.username,
FROM 
    signup t1 
JOIN makeappt t2 ON t1.username = t2.username;

但它不起作用。

表1(注册)列:用户名,姓名,地址,电话号码等 表2(makeappt)列:用户名。疾病,日期,时间。

什么是可以从Table2(makeappt)查看用户名中的用户名的SQL stmt。表1(注册)= username.Table2(makeappt)。

什么不起作用,当我把我的问题中所述的代码放在Dreamweaver的记录集中时,它不会显示有关用户自己预订的约会的信息。例如,登录的用户是Mia ,当她点击查看约会时,她想查看她的约会信息,她只看到其他用户的约会信息。我认为这是sql语句本身的错误。但我不知道如何解决它,因为我试过JOIN和其他sql statemnt

这是给我带来问题的代码:

    <?php mysql_select_db($database_sdas, $sdas); 
     $query_viewappt = " 
     SELECT DISTINCT t2.username
                   , t2.disease
                   , t2.date
                   , t2.time
                   , t1.username 
                FROM signup t1 
                JOIN makeappt t2 
                  ON t1.username = t2.username
     "; 

     $viewappt = mysql_query($query_viewappt, $sdas) or die(mysql_error()); 

     $row_viewappt = mysql_fetch_assoc($viewappt); 

     $totalRows_viewappt = mysql_num_rows($viewappt); 

     ?>

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但如果我这样做,解决方案比您想象的要简单得多。

如果您唯一关心的是检索'Mia'的记录,那么您根本不应该加入表格。你可以通过使用像

这样的东西来获得它
  SELECT  username
      ,disease
      ,date
      ,time from makeappt where username='Mia'

没有理由使用DISTINCT,因为用户名是主键,它将是唯一的。

但是如果你需要t1和t2的一些数据,那么你可以

    SELECT    t2.username
               , t2.disease
               , t2.date
               , t2.time
               , t1.someField
            FROM signup t1 
            JOIN makeappt t2 
             ON t1.username = t2.username and t2.username='Mia'

顺便说一下,您可能想重新考虑您的设计,因为您当前的设计不允许为用户进行第二次约会(主键应该是唯一的)。