SQL ERROR当我连接2个表


SQL ERROR When i join 2 tables

对不起,我修改一下。我有三个表:

events_year
•EventID
•YearID
•id


日期•YearID
•年


事件•EventID
•EventName
•EventType

我想从三个表中显示一条记录,如下所示:

事件名称-年份:马拉松- 2008

我将它链接到一个名为"members"的表,该表包含一个ID号字段(members- ID)

所以我可以将结果限制为成员id = $un(这是来自会话的用户名)

我需要连接三个表,并将结果限制为特定的ID号记录

下面是我的部分代码:

$query =    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";
            "SELECT * FROM Event JOIN events_year ON Event.EventID = events_year.EventID WHERE username = '$un'";
            "SELECT * FROM Date JOIN events_year ON Date.YearID = events_year.YearID WHERE username = '$un'";

$results = mysql_query($query)
    or die(mysql_error());
    while ($row = mysql_fetch_array($results)) {
    echo $row['Year'];
    echo " - ";
    echo $row['Event'];
    echo "<br>";
    }       

这些通知几乎是不言自明的。结果集中没有'Year''EventName'字段。很难(或:不可能)告诉为什么会发生这种情况,因为你没有给你的表结构,但我猜:'Year'date表的一个字段,'EventName'event表的一个字段-你只从members中选择,所以这个字段不会发生。

我不明白为什么有三个sql语句,但只有一个被分配给一个变量-其他两个只是站在那里什么也不做。请解释这一点,并在你的问题中提供更多的信息,关于你想要达到的目标,你的表格结构是什么样子的,以及你期望的结果是什么。

我认为你真正想做的是某种联合查询,所以请看看文档,看看它是如何工作的。

最后,我认为你的查询应该是这样的:

SELECT
  *
FROM
  members
INNER JOIN
  events_year ON members.id = events_year.id
INNER JOIN
  Event ON Event.EventID = events_year.EventID
INNER JOIN
  ´Date´ ON ´Date´.YearID = events_year.YearID
WHERE
  members.username = '$un'

查询输出中是否存在'Year'字段?

字符串$query只使用第一行文本:

    "SELECT * FROM members JOIN events_year ON members.id = events_year.id ";

而不是其他

查询本身没有返回任何名为Year或EventName的字段。

执行var_dump($row)来查找返回的内容