동일한 필드가있는 테이블이 두 개 있습니다 (added
). 제가하고 싶은 일은이 모든 기록들 중에서 가장 오래된 해를 보내는 것입니다.여러 테이블에서 가장 오래된 연도 받기
테이블 :
comics | movies | tv | tv_episodes
코드 지금까지 (작동하지 않음) :
function getStartYear() {
include("config.php");
$query = "SELECT DATE_FORMAT(added, '%Y') as `added` FROM (comics,movies,tv,tv_episodes) ORDER BY `added` DESC LIMIT 1";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
return $row['added'];
}
}
오류가 반환 :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\mydb\functions\common.php on line 94
어떻게이 작업을 수행하는 가장 효율적인 방법이 될 것입니다 ?
UPDATE 그래서 앤드류의 대답으로가는 새 쿼리가 보이는
같은 :
function getStartYear() {
include("config.php");
$query = "SELECT MIN(y) FROM (
SELECT MIN(YEAR(added)) AS y FROM comics
UNION SELECT MIN(YEAR(added)) AS y FROM movies
UNION SELECT MIN(YEAR(added)) AS y FROM tv
UNION SELECT MIN(YEAR(added)) AS y FROM tv_episodes
) AS t1";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$finalanswer = mysql_fetch_array($result);
return $finalanswer['t1']; // <-- Line 96
}else{
echo mysql_error();
}
}
새 메시지 :
Notice: Undefined index: t1 in E:\xampp\htdocs\mydb\functions\common.php on line 96
이 오류는 SQL 쿼리가 실패했음을 의미합니다. 디버깅을 시작해야합니다. – Quasdunk
'FROM' 절에 나열된 테이블은'()'로 묶어서는 안됩니다. 그런 다음 나열된 모든 테이블간에 조인 조건이 없으므로 모든 테이블의 모든 행에 모든 테이블의 모든 행을 곱한 커다란 직교 곱이 산출됩니다. mysql_error()로 쿼리 문법 오류를 찾아라. –
앤드류 (Andrew)가 제안한 것처럼 쿼리를 바 꾸었습니다. 그리고 이제는 't1'에 대한 색인이 없다고 말합니다. – rackemup420