繁体   English   中英

SQL比较第一个或第二个值对

[英]SQL Compare on 1st or 2nd value pair

我需要建立一个查询,该查询将比较表中的两个值对之一,表结构如下所示:

   product_id   |  psi_a   |   gpm_a   |   psi_b   |   gpm_b   |
   -------------------------------------------------------------
   PRODUCT_123  |   1000   |    400    |   8000    |    300    |
   -------------------------------------------------------------
   PRODUCT_456  |  2804    |   3006    |   5800    |    579    |

当我psi_agpm_a是因为有一个值对psi_bgpm_b ,我现在有运行两个SQL querys得到我需要正确地呈现我的网站页面的值,但是这导致两组结果被追加到该页面。

标记

$flowQ = $function->flow_query( $pType, $pVal, $gVal, $class_style, $cVal, $pageCat );
$highQ = $function->high_query( $pType, $pVal, $gVal, $class_style, $cVal, $pageCat );

if(empty($flowQ)===false){
   $function->generate_view( $flowQ, $pType, $pVal, $gVal, $class_style, $cVal, $pageCat );
}

这些函数构建的当前SQL如下:

flow_query();

$query = $this->db->prepare( "SELECT * FROM `pumps` WHERE `pump_type` = ? AND `psi_a` >= ? AND  gpm_a >= ? AND `pump_category` = ? ORDER BY pump_type DESC" );
$query->bindValue(1, $pType);
$query->bindValue(2, $pVal);
$query->bindValue(3, $gVal);
$query->bindValue(4, $cVal);

第二个查询几乎相同,但是它使用psi_agpm_a作为值参数。 是否有任何方法可以组合这些查询以返回将引用psi_agpm_a的单个结果集,并且如果未返回任何结果,则它将引用psi_bgpm_b

我是SQL的新手,所以如果不可能,那么我将寻求替代解决方案。

也可以称之为答案。 您可以在where语句中使用和/或子句。

where (psi_a = ? and gpm_a = ? ) or (psi_b = ? and gpm_b = ? )

您还可以在select语句中放置一个case子句,该子句将向您显示在哪个where子句中找到了匹配项(如果需要)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM