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

Php 选择字段别名条件和多个联接,php,mysql,Php,Mysql,我很难弄清楚如何编写查询来选择所需的数据 所以问题是:我有一个表和另外三个带外键的表。我需要选择第一个表中的所有字段,以及其他三个表中的一个字段作为别名,根据该字段不为空。在大多数情况下,三个表中的两个表对于指定的列具有null值,但如果有两个非null值,我希望首先选择它们 也许我解释得不好,但我会试试examle。假设我有这张主桌 Table_1 TableOneID int(11), SomeOtherData text Table_2 TableTwoID int(11), Table

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

所以问题是:我有一个表和另外三个带外键的表。我需要选择第一个表中的所有字段,以及其他三个表中的一个字段作为别名,根据该字段不为空。在大多数情况下,三个表中的两个表对于指定的列具有null值,但如果有两个非null值,我希望首先选择它们

也许我解释得不好,但我会试试examle。假设我有这张主桌

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);

这可能发生吗?:)

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

Table_1
TableOneID int(11),
SomeOtherData text

Table_X
ID int(11),
TableOneID int(11),
TableTwoValue varchar(250),
number int(11)
在数字中输入表格编号(1、2、3等)
然后查询就变得容易多了。

我想我找到了解决方案

我必须使用合并

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

我想你不明白我的问题。我简化了表的结构,无法更改它们。事实上,这些表包含更多的值,并且有不同的用途。我只需要为这三个表中的每一行获取第一个非空值。好吧,您不能像这样从表列表中选择:
从表1或表2中选择。但是您可以从所有表中获取数据,然后使用php查看所需的信息,我认为仅使用sql查询是不可能的。