选择字段别名条件和多个连接

时间:2013-07-15 17:20:21

标签: php mysql

我很难弄清楚如何编写查询来选择我需要的数据。

所以问题在于:我有一个表和另外三个带外键的表。我需要选择第一个表中的所有字段和其他三个表中的一个作为别名,基于哪个字段不为空。在大多数情况下,三个表中的两个表将具有指定列的空值,但如果有两个非空值,我想首先找到它。

也许我说的不好,但我会尝试检查。假设我有这个主表

Table_1
TableOneID int(11),
SomeOtherData text

Table_2
TableTwoID int(11),
TableOneID int(11),
TableTwoValue varchar(250)

Table_3
TableThreeID int(11),
TableOneID int(11),
TableThreeValue varchar(250)

Table_4
TableFourID int(11),
TableOneID int(11),
TableFourValue varchar(250)

所以我想做一些像

这样的事情
SELECT *, (HERE TO SELECT FIRST NON NULL VALUE FROM Table_2(TableTwoValue), 
Table_3(TableThreeValue) or Table_4(TableFourValue)) AS ExtraField FROM Table_1
LEFT JOIN Table_2 USING(TableOneID) ..... LEFT JOIN Table_4 USING(TableOneID);

这可能发生吗? :)

2 个答案:

答案 0 :(得分:0)

最简单的方法是更改​​数据库结构:

Table_1
TableOneID int(11),
SomeOtherData text

Table_X
ID int(11),
TableOneID int(11),
TableTwoValue varchar(250),
number int(11)

在数量上你输了表号(1,2,3等) 然后查询变得更加容易。

答案 1 :(得分:0)

我想我找到了解决方案。

我必须使用COALESCE

SELECT COALESCE(TableTwoValue, TableThreeValue, TableFourValue) 
AS ExtraField FROM ...