我有一个历史角色的数据库,包含以下三个表:
t_name
t_occupation
t_location
t_name包括所有生物信息,例如姓名,姓氏,日期等 t_occupation列出了可能的职业(作家,歌手等),并且是t_name列“id_occupation”的外键 t_location将所有具有plz和链接的位置列为t_name表中几列的外键,例如: id_birthplace,id_placeofdeath,id_placeofliving等。
我想生成整个数据库的输出,其中列出了所有非空的列的所有历史角色(例如,Persona 1可能有id_birthplace但id_placeofdeath未知,因此不应列出id_placeofdeath ,但其余的应该)。
在PHP 4.0中,我使用变量存储信息并使用if语句生成列表(mysql_result),但PHP 7.0不再可能。
如何在最新版本中执行此操作?
我尝试了以下代码:
$res = mysqli_query($con,"SELECT * FROM ( SELECT t_name AS table, IF(COUNT(name), NOT NULL, name) AS column
FROM t_name
UNION ALL
SELECT t_location AS table, IF(COUNT(location), NOT NULL, location) AS column FROM t_ort
UNION ALL)
WHERE column IS NULL");
while ($dsatz = mysqli_fetch_assoc($res))
{
echo $dsatz["name"] . ", "
.$satz["location"] . "<br /> <br />";
}
我得到的唯一结果是:找到记录但没有列表。我出了什么问题?
答案 0 :(得分:0)
SELECT * FROM ( SELECT tableA AS table, IF(COUNT(column_a), NOT NULL, column_a) AS column
FROM tableA
UNION ALL
SELECT tableB AS table, IF(COUNT(column_b), NOT NULL, column_b) AS column FROM tableB
UNION ALL -- etc. ) t
WHERE column IS NULL