SQL错误当我加入2个表时

时间:2011-09-23 12:01:05

标签: php mysql sql database join

抱歉让我修改。我有三张桌子:

events_year
•EventID
•YearID
•id

日期
•YearID
•年份

事件
•EventID
•EventName
•EventType

我想从三个表中调出一条记录,如下:

EventName - 年:马拉松 - 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>";
    }       

3 个答案:

答案 0 :(得分:4)

通知几乎是自我解释的。结果集中没有'Year''EventName'字段。你很难(或者说:不可能)告诉你为什么会发生这种情况,因为你还没有给出你的表结构,但我想这是:'Year'date - 表的一个字段,{{1} }是'EventName' - 表的字段 - 您只是从event中选择,因此不会出现此字段。

我不明白为什么有三个sql语句但只有一个被分配给一个变量 - 另外两个只是站在那里什么都不做。请解释一下,并在您的问题中提供更多信息,了解您的目标是什么,表结构是什么样的,以及您的预期结果。

我认为您真正想要做的是某种加入查询,所以请查看the documentation以查看其工作原理。

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

members

答案 1 :(得分:0)

查询输出中是否存在字段'Year'?我怀疑不是。

答案 2 :(得分:0)

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

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

而不是其他人。

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

执行var_dump($ row)以找出返回的内容。