2016-03-04 85 views
0

我有三个表:加入3个表格,不输出第三个表格的所有结果?

Student - UPN, Name, Year, House 

Seclusion_Status - ID, Arrived, FTE, Rebuild, DateTimeAdded, Staff, Student_UPN (fk), Comment 

Period_Rating - ID, Slot_ID, Rating, Date, Seclusion_ID (fk) 

每个学生都可以有许多条目在Seclusion_Status表,然后也有在Period_rating表,它链接到Seclusion_status表与Seclusion_ID

许多条目

我正在运行以下查询以基于日期从Seclusion_Status返回一条记录,然后在Period_rating表中与Seclusion_status记录相关的所有记录。

$sql="SELECT * FROM Seclusion_Status 
     INNER JOIN Students ON Seclusion_Status.Student_UPN=Students.UPN 
     JOIN Period_Rating ON Seclusion_Status.ID=period_rating.Seclusion_ID 
     WHERE period_rating.Date = '$start' 
     GROUP BY period_rating.Seclusion_ID 
     ORDER BY Seclusion_Status.DateTimeAdded ASC"; 
    $result=mysql_query($sql); 
     // Start looping rows in mysql database. 
     while($rows=mysql_fetch_array($result)){ 

该查询返回Seclusion_Status记录,并在Period_rating然后第一条记录,而不是其他。

Array 
[0] => 348 
[ID] => 157 
[1] => Y 
[Arrived] => Y 
[2] => N 
[FTE] => N 
[3] => 
[Rebuild] => 
[4] => 
[Text] => 
[5] => 2016-03-04 09:30:50 
[DateTimeAdded] => 2016-03-04 09:30:50 
[6] => Mr S Holland 
[Staff] => Mr S Holland 
[7] => K80222800 
[Student_UPN] => K8022280 
[8] => Refusing instructions 
[Incident] => Refusing instructions 
[9] => 
[Period] => 
[10] => 
[Period_In_ID] => 
[11] => Not sitting properly in class despite being asked 
[Comment] => Not sitting properly in class despite being asked 
[12] => K80222800 
[UPN] => K80222800 
[13] => Student Name 
[Name] => Student Name 
[14] => Year 9 
[Year] => Year 9 
[15] => Acer 
[House] => Acer 
[16] => 157 
[17] => P2 
[Slot_ID] => P2 
[18] => 
[Rating] => 
[19] => 2016-03-04 
[Date] => 2016-03-04 
[20] => 348 
[Seclusion_ID] => 348 
[21] => 1 
[Status] => 1 

回答

0

该查询返回Seclusion_Status记录,然后在Period_rating第一条记录,而不是其他。

您有一个GROUP BY period_rating.Seclusion_ID指示mysql为每个Seclusion_ID返回一条记录。将group by子句取出,查询将返回多个匹配的记录。

+0

好的。我已经删除了这个声明,并且这种解决了这个问题。它现在正在返回所有的数据。我将这些数据写入表格的行中,并且每个学生需要一个单独的行,但是在同一行中为该学生记录所有的period_rating记录。在它循环的那一刻,它为Period_rating中的每条记录在单独的行上写入同一个学生。 – user3122230

+0

对不起,但这是与原来不同的问题。如果这个答案帮助你解决你的问题,那么请接受答案,并在他们自己的话题中提出任何后续问题! – Shadow

0

问题是如果你使用连接,如果数据在所有三个表中都存在,那么只有它会获取。

如果你想获取表中的所有条目,你需要使用外连接,不幸的是你不能在mysql中使用外连接。

,但你可以通过unioning leftjoin结果取结果和正确的连接结果

+0

左右连接**是**外连接。 MySQL没有的是完全外连接,你正确地写道它可以通过联合和左/右连接进行模拟。 – Shadow

相关问题