2011-09-04 117 views
0

我有以下两种mysql_queriesPHP:查找两个MySQL数据库的结果最大值查询

$primary_img_query = "SELECT imgWidth, imgHeight FROM primary_images WHERE imgId=$imgId"; 
$primary_img_data = mysql_query($primary_img_query) or die('MySql Error' . mysql_error()); 

2.

$secondary_img_query = "SELECT imgWidth, imgHeight FROM secondary_images WHERE primaryId=$imgId"; 
$secondary_img_data = mysql_query($secondary_img_query) or die('MySql Error' . mysql_error()); 

我需要做的是找到两个0的最大值和imgHeight,然后找到两个找到的值之间的最大值。我需要两个最大的值来结束变量。

imgWidthimgHeight中的所有值都是大于零的正整数。

感谢您提供的任何帮助。


我想我可以把来自imgWidthimgHeight结果在单独的阵列的每个查询,然后再结合阵列,并使用max()找到最大的(最高值)。这会起作用吗?

+0

这两个查询来自同一个数据库的权利? – momo

+0

你是否还在寻找最大的图像或个人最大的imgWidth和最大的imgHeight,即使它们不属于同一个primaryId? – momo

+0

@momo - 对不起,反应慢。两个查询*都来自同一个数据库,而来自*不同*表。而且,我正在寻找最大的'imgWidth'和最大的'imgHeight' *,无论它们属于相同的图像。 'primaryId'用于将'secondary_images'表中的多个条目关联到'primary_images'表中的单个图像。我使用这些信息来设置容器的尺寸以容纳图像,所以我需要所需的最大宽度以及所需的最大高度。还需要了解其他什么?对不起,我没有指定这些东西。 – stefmikhail

回答

2

该查询应该给你MAX给定的宽度和高度两不需要与任何关联。您也可以过滤该设置。例如,通过下面primaryId,假设primaryId是一个数字,你想为primaryId少过滤比2

 
SELECT MAX(imgWidth) maxWidth, MAX(imgHeight) maxHeight FROM (
    SELECT imgHeight, imgWidth, primaryId FROM primary_images 
    UNION 
    SELECT imgHeight, imgWidth, primaryId FROM secondary_images 
) as MaxHeight 
WHERE primaryId < 2 

你会然后存储结果作为变量,然后用它来评估您的容器。

+0

谢谢。今晚我回到家时我必须测试它。但我很好奇;我离开了我发布的原始查询中的字段。我也在这两个查询中查询imgURL和imgTitle。将原始设置加上您在上述答案中发布的内容,还是使用* imgWidth和imgHeight获取原始内容并使用我建议的方法会更快吗?我想要什么是最有效的。 – stefmikhail

+0

这取决于您的数据库的大小。如果它是大型数据集,那么通过SQL进行查询会更快,因为您不必在代码中进行迭代。如果数据量很大,则会导致网络成本将数据库中的数据带入您的代码并计算最大值。另外,你是否说你想把最大的高度/宽度与imgUrl和标题联系起来?如果有多个具有相同最大高度/宽度的imgUrl /标题,该怎么办?这个问题还不太清楚。 – momo

+0

再次,抱歉花了这么长的时间来回应。我不会再回家两个小时。所以,数据库在任何一个表中都不应该超过500条记录,所以最多可以记录1000条记录。为了回答你的问题,我*不会希望将高度/宽度与任何imgURL和/或标题相关联。这些查询用于为图像本身创建img标签。但是,我注意到你的查询中没有'WHERE'子句。我正在查找与'primaryId'关联的表中特定图像集的最大宽度/高度。这是否意味着它不起作用? – stefmikhail

-1

我想这是你想要什么:

$primary_img_data = mysql_fetch_array($primary_img_data); 
$pWidth = $primary_img_data['imgWidth']; 
$pHeight = $primary_img_data['imgHeight']; 

$secondary_img_data = mysql_fetch_array($secondary_img_data); 
$sWidth = $secondary_img_data['imgWidth']; 
$sHeight = $secondary_img_data['imgHeight']; 

$query = "SELECT * FROM `table_you_want` WHERE (imgWidth BETWEEN " . $pWidth . " AND " . $sWidth . ") AND (imgHeight BETWEEN " . $pHeight . " AND " . $sHeight . ")"; 
$result = mysql_query($query); 
+0

谢谢!今天晚些时候我将不得不放弃它。我会让你知道它是怎么回事。 – stefmikhail