각 테이블의 구조가 동일한 다중 테이블이있는 MySQL 데이터베이스가 있습니다. 구조는 다음역순으로 여러 테이블의 고유 값 인쇄
이id INT(11) NOT NULL auto_increment, site VARCHAR(350) NOT NULL, votes_up BIGINT(9) NOT NULL, votes_down BIGINT(9) NOT NULL, PRIMARY KEY(id), UNIQUE (site)
PHP 코드는 아래의 모든 테이블 전역에서 각각의 고유 한 "사이트"을 인쇄하고 "votes_up"은 모든 테이블에서이 합계를 구합니다. 그런 다음 "사이트"의 상위 25 개 값 (전체 "votes_up"을 기준으로 함)을 내림차순으로 나열합니다.
이 코드는 훌륭하게 작동하지만 시간을 역순으로 생성하여 정확하게 동일한 작업을 수행하고 싶습니다. 어떻게해야합니까? 사전에
감사합니다,
존
<?
mysql_connect("mysqlv10", "username", "password") or die(mysql_error());
mysql_select_db("bookfeather") or die(mysql_error());
$result = mysql_query("SHOW TABLES");
$tables = array();
while ($row = mysql_fetch_assoc($result)) {
$tables[] = '`'.$row["Tables_in_bookfeather"].'`';
}
//$subQuery = "SELECT site, votes_up FROM ".implode(" UNION ALL SELECT site, votes_up FROM ",$tables);
$subQueryParts = array();
foreach($tables as $table)
$subQueryParts[] = "SELECT site, votes_up FROM $table WHERE LENGTH(site)";
$subQuery = implode(" UNION ALL ", $subQueryParts);
// Create one query that gets the data you need
$sqlStr = "SELECT site, sum(votes_up) sumVotesUp
FROM (
".$subQuery.") subQuery
GROUP BY site ORDER BY sum(votes_up) DESC LIMIT 25";
$result = mysql_query($sqlStr);
$arr = array();
echo "<table class=\"samples2\">";
while ($row = mysql_fetch_assoc($result)) {
echo '<tr>';
echo '<td class="sitename2"><a href="booklookup3.php?entry='.urlencode($row["site"]).'&searching=yes&search=search">'.$row["site"].'</a></td>';
echo '<td>'.$row["sumVotesUp"].'</td>';
echo '</tr>';
}
echo "</table>";
?>
어 ... 어떤 종류의 날짜도 없을 때 어떻게 "연대기"를 결정할 건가요? (내가 볼 수있는 ... 나는 장님인가요?) – kolosy
맞습니다 ... 필요합니까? 어떻게 든 "사이트"에 날짜 스탬프를 추가 하시겠습니까? 다른 쿼리에서는 INFORMATION_SCHEMA.TABLES 및 CREATE_TIME을 사용하여 역순으로 생성 된 테이블을 보여줍니다 ... 여기에서이 방법을 사용할 수 있습니까? – John
아니요, 테이블 행은 INFORMATION_SCHEMA에 기록되지 않습니다. –