Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按多列查询,并在按一列查找结果时进行检查_Mysql - Fatal编程技术网

Mysql 按多列查询,并在按一列查找结果时进行检查

Mysql 按多列查询,并在按一列查找结果时进行检查,mysql,Mysql,我使用此查询按度假村、滑雪区或州名称选择网络摄像头。我想知道的是,什么时候只有度假的结果。一旦查询通过resort而不是skiarea或state找到记录,我是否可以标记该查询 SELECT SQL_CALC_FOUND_ROWS sv_cam.image, sv_cam.cam_id, sv_orte.resort,

我使用此查询按度假村、滑雪区或州名称选择网络摄像头。我想知道的是,什么时候只有度假的结果。一旦查询通过resort而不是skiarea或state找到记录,我是否可以标记该查询

 SELECT SQL_CALC_FOUND_ROWS 
                        sv_cam.image,
                        sv_cam.cam_id,
                        sv_orte.resort,
                        sv_canton.can_id,
                        sv_canton.canton,
                        sv_country.country
          FROM  sv_cam
          LEFT JOIN sv_orte ON sv_cam.res_id = sv_orte.res_id AND status=0
          LEFT JOIN sv_region ON sv_orte.reg_id = sv_region.reg_id
          INNER JOIN sv_canton ON sv_orte.can_id = sv_canton.can_id
          INNER JOIN sv_country ON sv_canton.cou_id = sv_country.cou_id
          WHERE (resort='$region' OR ski='$region' OR canton='$region')

据我所知——你的问题的答案是否定的——不可能以任何方式“标记”整个查询结果

但是,可以根据匹配的条件标记每一行:

 SELECT SQL_CALC_FOUND_ROWS 
                        sv_cam.image,
                        sv_cam.cam_id,
                        sv_orte.resort,
                        sv_canton.can_id,
                        sv_canton.canton,
                        sv_country.country,
                        resort='$region' AS foundByResort,
                        ski='$region' AS foundBySki,
                        canton='$region' AS foundByCanton
          FROM  sv_cam
          LEFT JOIN sv_orte ON sv_cam.res_id = sv_orte.res_id AND status=0
          LEFT JOIN sv_region ON sv_orte.reg_id = sv_region.reg_id
          INNER JOIN sv_canton ON sv_orte.can_id = sv_canton.can_id
          INNER JOIN sv_country ON sv_canton.cou_id = sv_country.cou_id
          WHERE (resort='$region' OR ski='$region' OR canton='$region')
这将向每行添加三列,每行中有1列与条件的一部分相匹配

然后,您可以在“不希望”的条件下检查所有行的零

或者您可以使用三个查询——每个查询对应一个条件——然后您将直接看到它,但是如果某些行匹配多个条件,则可能会得到重复的行

或者,您可以使用原始查询,然后运行第二个查询:

 SELECT count(1) AS itemsFound
          FROM  sv_cam
          LEFT JOIN sv_orte ON sv_cam.res_id = sv_orte.res_id AND status=0
          LEFT JOIN sv_region ON sv_orte.reg_id = sv_region.reg_id
          INNER JOIN sv_canton ON sv_orte.can_id = sv_canton.can_id
          INNER JOIN sv_country ON sv_canton.cou_id = sv_country.cou_id
          WHERE (ski='$region' OR canton='$region')

如果你得到零行,那么你就知道滑雪或坎顿没有结果。否则,您将得到一行一列包含匹配数。

请编辑您的问题您希望我编辑什么Maku您试图实现什么,还不清楚