1
我有一個查詢從數據庫打印記錄,但我不明白如何省略某些字段包含零的記錄。可能包含零的字段是townhalls
,org_pressconf
,rep_doors
,vol_doors
,contacts
,phones
,coffeehours
,newsarticles
和mediahits
。如果上面提到的每個字段都等於零,我該如何編寫查詢以忽略這些結果?如何省略某些字段中包含零的記錄?
// START Organizer Report
// sending query
$result = mysql_query("SELECT
Concat(last_name, ' , ', first_name) as Representative,
sum(townhalls) as Townhalls,
sum(org_pressconf) as PressConference,
sum(rep_doors) as RepDoors,
sum(vol_doors) as VolunteerDoors,
sum(contacts) as Contacts,
sum(phones) as Phones,
sum(coffeehours) as CoffeeHours,
sum(newsarticles) as NewsArticles,
sum(mediahits) as MediaHits
FROM reports
join representatives on reports.rep = representatives.id
join users on reports.username = users.username
WHERE date BETWEEN '$from' AND '$to' AND role = 'organizer'
Group By representative Order By representative;");
if (!$result) {
die("Query to show fields from table failed");
}
$fields_num = mysql_num_fields($result);
echo "<h2>Organizer Report <small>($from to $to)</small></h2>";
echo "<table border='1' cellspacing='0' cellpadding='3' cellspacing='0' cellpadding='3'>
<tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
// printing table rows
while($row = mysql_fetch_row($result))
{
echo "<tr>";
// $row is array... foreach(..) puts every element
// of $row to $cell variable
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
mysql_free_result($result);
echo "</table>\n";
// END Organizer Report
'WHERE townhalls!= 0 AND ...!= 0 AND ...'? –
'HAVING Townhalls> 0 AND PressConference> 0 AND ...' –
我認爲在GROUP BY之前進行過濾(使用WHERE)會是更有效的變體,因爲它會減少要檢查的行數分組。 –