因此,您可能已经猜到了,我正在编写一个查询以从数据库中选择数据。而且,正如您可能已经猜到的那样,我正在使用If / Else语句的逻辑来编写它。显然,这在SQL中并不像我们所有人希望的那么简单。简而言之,下面是某种伪代码版本:

SELECT * FROM table1 INNER JOIN table2 on col2 = col1
// Some other JOINS and irrelevant data stuff
if (table2.conditionalColumn == 'x') {
    JOIN table3 ON col3 = col2 WHERE a = 1, b = 2, c = 3
} else {
    JOIN table3 ON col3 = col2 JOIN table4 ON col4 = col3
}


我了解上述查询丝毫不类似于适当的SQL查询。我试图找出的是如何解决一列的问题,该列的值确定是联接到一个表还是联接到另一个表。整个概念类似于社交网络的“朋友之友”系统。

如果需要,请随时要求对该问题进行进一步的解释。我尝试使用某些OR逻辑,但完全陷入困境。我该如何解决这个问题?

谢谢!

编辑-为了更容易理解我的目标,我在下面添加了一个方案:

如果用户在projects表中有一行,或者他们在projects_members表中有一行,并且该团队在teams中有一行,我想从名为projects_members的表中选择数据。 。 projects_members内有一个名为memberType的列,该列设置为'user'或'team'。

最佳答案

在连接条件内移动条件:

SELECT * FROM table1 INNER JOIN table2 on col2 = col1
X JOIN table3 t3 ON (col3 = col2 and table2.conditionalColumn = 'x'
and a = 1 and b = 2 and c = 3)
X JOIN table3 t32 ON (col3 = col2 and table2.conditionalColumn <> 'x')
X JOIN table4 t4 ON (col4 = col3 and table2.conditionalColumn <> 'x')

关于php - SQL-IF/ELSE逻辑取决于表列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37779721/

10-09 15:21
查看更多