Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 php查询案例根据第一个表中的列选择第二个表中的列_Php_Mysql - Fatal编程技术网

mysql php查询案例根据第一个表中的列选择第二个表中的列

mysql php查询案例根据第一个表中的列选择第二个表中的列,php,mysql,Php,Mysql,我有两张桌子 表1-定义存在哪些传感器的表 serialN | sensor1 | sensor2 | 122 | 1 | 1 | 123 | 1 | 0 | 表2-具有实际传感器数据的表 serialN | sensor1 | sensor2 | 123 | 23 | -0.0F | 123 | 22 | -0.0F |

我有两张桌子

表1-定义存在哪些传感器的表

serialN  |  sensor1  |  sensor2  | 
122      |    1      |    1      |
123      |    1      |    0      |
表2-具有实际传感器数据的表

serialN  |  sensor1  |  sensor2  | 
123      |    23     |    -0.0F  |
123      |    22     |    -0.0F  |
122      |    19     |    -0.0F  |
123      |    33     |    -0.0F  |
122      |    26     |    -0.0F  |
123      |    24     |    -0.0F  |
如何执行PHP mysql查询以获得仅选择表2中的那些列的结果(仅当给定序列的对应表1计数器部分为1时)

所以,如果我想要serialN=123的数据,我的结果应该是

serialN  |  sensor1  |
123      |    23     |
123      |    22     |
123      |    33     |
123      |    24     |

Mysql的case语句支持您()。PHP欺骗是不必要的:

select 
case when t1.sensor1=1 then t2.sensor1 when t1.sensor2=1 then t2.sensor2 end
from table1 t1
inner join table2 t2 on t1.serialN = t2.serialN

看看这是否符合您的需要:

选择t1.sensor1=1时的情况,然后选择t2.sensor1,否则将null结束为“sensor1”,
当t1.sensor2=1时,则t2.sensor2否则为空,以“sensor2”结束
来自表2 t2
T1.serialN=t2.serialN上的内部联接表1 T1

当表1中的传感器2为0时,传感器2是否可以为空?或者您想要动态的列数?或者它们不能同时为1?@FilipeSilva sensor2不为空。可能存在这样的情况,即sensor1和sensor2在表1上都可以是1。我对null引用的要求是,如果您可以使用一个始终返回两列的查询,但每当表1中的sensor2为0时,您在sensor2的结果查询中就会得到null。谢谢,但它似乎在sensor 2上返回null。你能看到我更新的问题吗?可能是我说得不对。@aVC。此查询始终返回两列,但每当table1值为0时,它将返回null,否则将返回table2值。如果您只需要一列,您可能需要在php代码中对准备好的语句执行一些操作,但很抱歉,我帮不了您。如果表1上的sensor2为0,则sensor2将为null。是否有一种方法仅在table1 value=1时选择列?