Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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
Php sql查询:执行where-in-if条件_Php_Mysql_Sql_Yii2_Rawsql - Fatal编程技术网

Php sql查询:执行where-in-if条件

Php sql查询:执行where-in-if条件,php,mysql,sql,yii2,rawsql,Php,Mysql,Sql,Yii2,Rawsql,我的情况如下: 我有一个连接表的长查询 联接表中的所有列都包含一列“名称”。在这个表中有两个名称“A”和“B”,但可以是C、D……Z,我不知道我们可以有多少个名称,而且它们都有多行,所以我有n行名称为A,n行名称为B 有时,基于用户输入,我需要使用所有名称连接整个表,但只在名称为“A”的位置设置一些条件。 因此: 连接表myTable它将包含所有结果A、B、C。。。 但是如果名称='A' 然后A.priority=A.userInput 对于B,C。。。在没有附加条件的情况下获取它们 那么,是否

我的情况如下:

我有一个连接表的长查询 联接表中的所有列都包含一列“名称”。在这个表中有两个名称“A”和“B”,但可以是C、D……Z,我不知道我们可以有多少个名称,而且它们都有多行,所以我有n行名称为A,n行名称为B 有时,基于用户输入,我需要使用所有名称连接整个表,但只在名称为“A”的位置设置一些条件。 因此:

连接表myTable它将包含所有结果A、B、C。。。 但是如果名称='A' 然后A.priority=A.userInput 对于B,C。。。在没有附加条件的情况下获取它们

那么,是否有解决方案,或者我需要多次调用数据库

谢谢。

我会用UNION ALL条款来表达这个意思

SELECT *
  FROM TABLE1 T1
  JOIN TABLE2 T2
    ON T1.somecolumn = T2.somecolumn
  WHERE T2.name <> 'A'
UNION ALL
SELECT *
  FROM TABLE1 T1
  JOIN TABLE2 T2
    ON T1.somecolumn = T2.somecolumn
  WHERE T2.name = 'A' AND some condition

好的,如果我理解正确的话,如果其中一个参数有一个特定的值“a”,那么您希望有条件地联接一个表?请您的问题给我们一个答案。请包含每个表中的一些示例行和示例结果。@El_Vanja需要获取整个联接表,但我只需要将条件应用于联接表中包含名称“a”的行,然后获取其他B、C、。。。没有额外的条件你是说名字在哪里!='A'或A.priority=A.userInput?@MichalHynčica您能提供一个示例吗?请从表1中选择*并将表2 T2连接到T1.somecolumn=T2.somecolumn其中T2.name!=''或某个条件将给出与此答案中的查询完全相同的结果。