2014-01-17 28 views
0

對不起,這個愚蠢的問題,但我不明白爲什麼我的數據顯示兩次。我的Group By子句有什麼問題?

這是一個非常簡單的查詢。數據庫表calendar_px目前只有三行和四個字段,其中一個用於日期,另一個用於一年,另一個(Brief)包含一些簡要內容。

因此,如果您訪問頁面MySite/Calendar/January_1,您應該可以看到DB表中具有匹配日期(Date2)字段(January_1)的所有年份和摘要。我的練習表有三個這樣的行:

1969 | So and so was born. 
1969 | A volcano erupted. 
1970 | They released a new song. 

我的代碼完美地顯示了信息 - 除了它顯示兩次。我已經按照每個字段名稱對它進行了分組,不管是否使用Cal2。擴展,並沒有任何作品。看起來我一定犯了一個非常簡單的錯誤,但我不明白。

這裏是我的查詢?

$stm = $pdo->prepare("SELECT Cal2.N, Cal2.Date2, Cal2.Year, Cal2.Brief 
     FROM calendar_px Cal2 
     WHERE Cal2.Date2 = :MyURL 
     GROUP BY Cal2.Brief"); 
    $stm->execute(array(
     'MyURL'=>$MyURL 
    )); 

    break; 
} 

while ($row = $stm->fetch()) 
{ 
    $Year = $row['Year']; 
    $Brief[] = ''.$Year.' – '.$row['Brief'].''; 
} 

這是我在顯示頁面上...

echo join($Brief, '<br>'); 
+1

你想通過GROUP BY子句實現什麼? – aidan

+0

@Aidan - 我不希望三行的順序顯示兩次;我只希望每行顯示一次。我認爲GROUP BY子句是這樣做的,儘管可能有其他解決方案我不知道。 –

+0

我不認爲我理解。你能追加當前輸出到你的問題嗎?如果您只想每行打印一次,則不需要「GROUP BY」子句。 – aidan

回答

0

試試這個:

$rows= $stm->fetchAll(); 
while ($rows as $row) 
{ 
    $Year = $row['Year']; 
    $Brief[] = ''.$Year.' &#8211; '.$row['Brief'].''; 
} 
+0

我試過了,但是我在第二行發現了一個語法錯誤 - while($ rows as $ row)我一直在玩它,但我還沒有想通出了什麼導致錯誤呢。 –

0

哎呀,我知道我做了一些愚蠢的事情,我終於明白了。我以某種方式包含該查詢兩次的文件。我必須記住使用require_once而不是簡單的要求。 Mods:請刪除此線程,除非您認爲任何人都可以從中學到一些東西。 ;)