[英]Two SELECT SQL statements
我尝试从数据库获取数据。 我可以获得最大最小值,但无法列出x和y值。
代码如下。 谢谢您的帮助
<?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>";
}
?>
我不确定我是否了解您对查询的意图,但是如果veri有两列,则由于您的第一个查询有两列,而第二个查询有四列,因此您的两个选择不并集兼容。 如果一个查询具有相同的列数并且对应的列具有相同的类型,则该查询与另一个查询是联合兼容的。 此外,查询的结果是一个表,因此您不能在不同行的列(x与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
并单独处理。
好的,我像您说的那样将查询分为两部分。 它解决了。 谢谢
$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>";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.