Php 关系数据库查询MySQL

Php 关系数据库查询MySQL,php,mysql,database,relational,Php,Mysql,Database,Relational,我已经修改了表的名称。sportevents表是主表,它应从以下表中获取数据:事件日期、事件、结果和成员。有没有办法做到这一点。请不要,我需要保留这个结构 sportevents (link table) • id • event_id • date_id • result_id event_date • id • date events • id • eventname results • id • result members • id (the ID number of a per

我已经修改了表的名称。sportevents表是主表,它应从以下表中获取数据:事件日期、事件、结果和成员。有没有办法做到这一点。请不要,我需要保留这个结构

sportevents (link table)
• id
• event_id
• date_id
• result_id

event_date
• id
• date

events
• id
• eventname

results
• id
• result

members
• id (the ID number of a person)

userlogin
• id
• username
• password
我在没有加入的情况下成功地把它做好了。以下是:

$query = "SELECT * FROM members, sportevents, dates, results, event, userlogin ". 
         "WHERE userlogin.username = '$un' " . 
         "AND sportevents.id = members.id " . 
         "AND sportevents.event_id = event.id " .
         "AND sportevents.date_id = dates.id " .
         "AND sportevents.result_id = results.id";

$results = mysql_query($query)
    or die(mysql_error());
    while ($row = mysql_fetch_array($results)) {
    echo $row['eventname'];
    echo " - ";
    echo $row['year'];
    echo " - ";
    echo $row['result'];

    }
select m.username, e.eventname, y.year, r.result
from members m
join events_members em on em.member_id = m.id
join main_events me on em.main_event_id = me.id
join event e on e.id = me.event_id
join year y on y.id = me.year_id
join result r on r.id = e.result_id
where m.username = $username
给我这个:


Karoo Cycle-2008-1H14分钟

我假设您将成员数据存储在$u会话['member']或smth中。我不知道你们为什么要在事件、事件日期(在我看来应该有一个)上分开标签,我猜主要事件类似于事件的组/类别

您缺少成员-事件链接。将字段“member_id”添加到事件表中

如果是这样的话,那就差不多了

$q = 'SELECT e.*, ed.year, r.result FROM events As e 
LEFT JOIN event_date As ed ON ed.id = e.id
LEFT JOIN result As r ON r.id = e.id
WHERE e.member_id = ' . $_SESSION['member']['id'];
从中你得到

事件id、事件名称、事件年份、结果。“JohnSmith”您可以从$\u会话['member']获得


如果您决定不为事件、事件、日期、结果使用单独的表,并且只使用一个包含更多字段的表,您可以不使用任何左连接来执行此操作,只需非常简单的选择查询。

首先,您需要将
事件
结果
链接。这取决于您的域模型,但我假设每个事件只有一个结果,因此我将把
result\u id
添加到
events
表中。另外,您需要将成员链接到
事件
,我将使用

events_members
member_id
main_event_id
桌子。使用此版本,您将能够让多个成员参与多个活动

最后,查询如下所示:

$query = "SELECT * FROM members, sportevents, dates, results, event, userlogin ". 
         "WHERE userlogin.username = '$un' " . 
         "AND sportevents.id = members.id " . 
         "AND sportevents.event_id = event.id " .
         "AND sportevents.date_id = dates.id " .
         "AND sportevents.result_id = results.id";

$results = mysql_query($query)
    or die(mysql_error());
    while ($row = mysql_fetch_array($results)) {
    echo $row['eventname'];
    echo " - ";
    echo $row['year'];
    echo " - ";
    echo $row['result'];

    }
select m.username, e.eventname, y.year, r.result
from members m
join events_members em on em.member_id = m.id
join main_events me on em.main_event_id = me.id
join event e on e.id = me.event_id
join year y on y.id = me.year_id
join result r on r.id = e.result_id
where m.username = $username

members表如何链接到main_events表?表
members
login
表是否不是一个表?members表包含许多字段。在成员中有一个名为“id”的字段,在main_事件(即链接表)中有一个名为“id”的字段,该字段将是main_事件。id=members=id结果如何链接到其他表?如果每个事件只能有一个事件名称、时间和结果Pete171,那么您还可以有一个带有
事件id、事件名称、年份、结果的事件表,但我的下属希望将用户日志与存储所有详细信息的成员分开。我同意,这很令人沮丧。我看到你使用别名。有必要使用它们吗?SQl会自动提取它们吗?这不是必需的,但是您必须在连接条件中写入全名,即
e.id=me.event\u id
变成
event.id=main\u event.event\u id
。不明白“自动拾取”是什么意思,但如果您的意思是自动分配-否。它们被分配有
结果r
。更详细的方式是
结果为r
,因此,它是
表名为别名
,但是
作为
关键字是可选的。很抱歉这个愚蠢的问题,我只是在过程中遇到了一些错误。每一个答案。我似乎无法让它工作……我做得不对。我不断收到这些错误:“字段列表”中的未知列“login.username”是否确实有
login
表?