2014-08-30 2 views
0

DB에서 데이터를 가져 오려고합니다. max min 값을 얻을 수는 있지만 x 값과 y 값을 나열 할 수 없습니다.2 개의 SELECT SQL 문

코드는 다음과 같습니다. 내가 쿼리와 당신의 의도를 이해 모르겠지만, VERI는 두 개의 열이 있으면 두 가지 선택이 당신의 첫 번째 쿼리 이후 호환 노동 조합을하지 않은 두 개의 열이 있고 두 번째 쿼리가 당신의 도움이

<?php 

$sql = "SELECT * FROM veri UNION ALL SELECT MAX(x) as 'maxx', MIN(x) as 'minx', MAX(y) as 'maxy', MIN(y) as 'miny' FROM veri "; 
$result = mysql_query($sql); 
$result_array = array(); 
while($row = mysql_fetch_array($result)){ 
    $result_array[] = $row; 

    echo $row['x']; 
    echo $row['y']; 
    echo $row['miny']; 
    echo "<br>"; 
    echo $row['maxy']; 
    echo "<br>"; 
    echo $row['minx']; 
    echo "<br>"; 
    echo $row['maxx']; 
    echo "<br>"; 
} 

?> 
+0

실제로'x' 및'y'라는 열이 있습니까? 또한, 별칭에 대해 'maxx'등 따옴표를 제거하십시오. 당신은 컬럼이 아닌 값을 다루고 있습니다. –

+0

아마 샘플 데이터와 얻고 싶은 결과로 질문을 편집해야합니다. 당신의 작동하지 않는 코드는 당신이 원하는 것을 (적어도 저에게는) 분명히하지 않습니다. –

답변

1

나는 네가 말했듯이 질문을 두 개로 나눴다. 그것은 운동했다. 고마워요

$sql1= "SELECT x,y FROM veri "; 
$result1=mysql_query($sql1) or die(mysql_error()); 
$result_array = array(); 
while($row1 = mysql_fetch_array($result1)){ 
$result_array[] = $row1; 

     echo $row1['x']; 
     echo $row1['y']; 
    } 



$sql2= "SELECT MAX(x) as 'maxx', MIN(x) as 'minx', MAX(y) as 'maxy', MIN(y) as 'miny' FROM veri "; 
$result2=mysql_query($sql2) or die(mysql_error()); 
$result_array = array(); 
while($row2 = mysql_fetch_array($result2)){ 

     echo $row2['miny']; 
     echo "<br>"; 
     echo $row2['maxy']; 
     echo "<br>"; 
     echo $row2['minx']; 
     echo "<br>"; 
     echo $row2['maxx']; 
     echo "<br>"; 

    } 
+0

당신이나 내 것을 해결책으로 표시하면 비슷한 문제가있는 사람들이 쉽게 찾을 수 있습니다. – Lennart

1

주셔서 감사합니다 4 개의 기둥. 쿼리는 i.f.f라는 다른 쿼리와 호환됩니다. 그들은 같은 수의 컬럼을 가지며 대응하는 컬럼은 같은 타입을 갖는다. 또한 쿼리 결과는 테이블이므로 다른 행에 대해 열에 다른 이름을 사용할 수 없습니다 (x vs maxx). 행이 무엇을 나타내는 지

SELECT x, y, (SELECT MAX(x) FROM veri) as maxx 
      , (SELECT MIN(x) FROM veri) as minx 
      , (SELECT MAX(y) FROM veri) as maxy 
      , (SELECT MIN(y) FROM veri) as miny 
FROM veri 

또는 결정하기 위해 분류가 필요합니다 :

당신도 네 분에 대한 하위 선택하여 최대 값을 사용할 수 있습니다이 경우

SELECT 'row' as origin, x, y FROM veri 
UNION ALL 
SELECT 'max' as origin, max(x) as x, max(y) as y FROM veri 
UNION ALL 
SELECT 'min' as origin, min(x) as x, min(y) as y FROM veri 

을하지만, 아마도

q1: SELECT x, y FROM veri 

q2: SELECT MAX(x) as maxx, MIN(x) as minx, MAX(y) as maxy, MIN(y) as miny FROM veri 

두 개의 쿼리로 나누는 것이 가장 좋습니다.