我现在正在做这个,但希望 SO 的好人看看它。它有效,但我认为使用子查询/嵌套查询会快得多,但仍在学习 MySQL 查询
嵌套/子查询方法将受到高度赞赏。 谢谢
//////
//Get Events
$query_display_events = "SELECT E.id, E.er_mem_id, E.er_ev_name, E.er_ev_status FROM ".ER_EVENTS_MAIN." E WHERE E.er_ev_status=1 AND E.er_mem_id = '$user_id'";
$e_result = mysql_query($query_display_events) or die(header("Location: /er_error_page?error_msg=1"));
// print table
$data = '<table width="60%" border="0" cellpadding="0" cellspacing="0" class="bord_display_events">
<th>Event Name <th>Description<th>Starts<th>Ends<th>Status
';
while($e_row = mysql_fetch_assoc($e_result)) {
//Get Events Time
$query_get_ev_time = "SELECT T.er_ev_id, T.er_ev_start_date, T.er_ev_end_date FROM ".ER_EVENTS_TIME." T WHERE T.er_ev_id = '$e_row[id]'";
$t_result = mysql_query($query_get_ev_time) or die(header("Location: /er_error_page?error_msg=1"));
while($t_row = mysql_fetch_assoc($t_result)) {
//Format date
$ev_start_time = date('Y-m-d g:i a', $t_row['er_ev_start_date']);
$ev_end_time = date('Y-m-d g:i a', $t_row['er_ev_end_date']);
$data .= "\n<tr>
\n\t<td><b><a href=/readnews/$e_row[id]> $e_row[er_ev_name]</a></b>
<td><font class=font_news_display_body>".mb_wordwrap(substr($e_row['er_ev_name'],0,170))."..."."
<td><font class=font_news_display_body>$ev_start_time
<td><font class=font_news_display_body>$ev_end_time
\n</tr>
";
}
}
$data .= "\n</table>\n";
////////
最佳答案
SELECT E.id, E.er_mem_id, E.er_ev_name, E.er_ev_status,
T.er_ev_id, T.er_ev_start_date, T.er_ev_end_date
FROM ER_EVENTS_MAIN E
INNER JOIN ER_EVENTS_TIME T
ON E.id = T.er_ev_id
WHERE E.er_ev_status = 1
AND E.er_mem_id = '$user_id'
关于php - 子查询的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914407/