因此,您可能已经猜到了,我正在编写一个查询以从数据库中选择数据。而且,正如您可能已经猜到的那样,我正在使用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/