PHP-MySQL - Destroy/Disregard Table 字段如果不包含 value/null
PHP-MySQL - Destroy/Disregard Table Fields if it contains no value/null
美好的一天!我试图将一个 Table 加入另一个。是否可以销毁或忽略 table 字段,例如 blotter_entry
如果它不包含任何值或如果它是 null
?通过查看下面的屏幕截图,如您所见,我有三个 table 和 blotter_entry
。那么就真的要看用户是属于tbl_complainant as tc
还是tbl_respondent as te
还是res_id
,还是tbl_victim as tv
.
截图中查询发现blotter_entry
在tbl_complainant
中,如何忽略tbl_respondent and tbl_victim
中的两个blotter_entry
?
我问这个是因为每当我循环这个 SQL 查询并执行 echo $row['blotter_entry']
以在网站上显示它时,因为如果 res_id
被检测到并找到它 tbl_respondent and tbl_victim
它不会在网页中显示任何内容。比如res_id
是3号,他是respondent/victim。每当我在网站上输出 echo $row['blotter_entry']
时。它不会显示任何内容。
如有任何帮助,我们将不胜感激。谢谢!
Screenshot after running this SQL Query
SELECT tr.res_id
, tc.res_id
, tc.blotter_entry
, te.res_id
, te.blotter_entry
, tv.res_id
, tv.blotter_entry
, tb.blotter_id
, tb.blotter_type
, tb.blotter_reporteddate
, tb.blotter_reportedtime
, tb.blotter_incidentdate
, tb.blotter_incidenttime
, tb.blotter_status
, tc.complainant_name
, te.respondent_name
, tv.victim_name
FROM tbl_resident tr
LEFT
JOIN tbl_complainant tc
on tr.res_id = tc.res_id
LEFT
JOIN tbl_respondent te
on tr.res_id = te.res_id
LEFT
JOIN tbl_victim tv
on tr.res_id = tv.res_id
LEFT
JOIN tbl_blotter tb
on tc.blotter_entry = tb.blotter_entry
OR te.blotter_entry = tb.blotter_entry
OR tv.blotter_entry = tb.blotter_entry
WHERE tr.res_id = 1;
您可以使用 coalesce()
来使用第一个非 null
值。
select
tr.res_id,
coalesce(tc.blotter_entry, te.blotter_entry, tv.blotter_entry) as blotter_entry
tb.blotter_id,
tb.blotter_type,
tb.blotter_reporteddate,
tb.blotter_reportedtime,
tb.blotter_incidentdate,
tb.blotter_incidenttime,
tb.blotter_status,
tc.complainant_name,
te.respondent_name,
tv.victim_name
from tbl_resident tr
left join tbl_complainant tc on tr.res_id = tc.res_id
left join tbl_respondent te on tr.res_id = te.res_id
left join tbl_victim tv on tr.res_id = tv.res_id
left join tbl_blotter tb on tb.blotter_entry in (tc.blotter_entry, te.blotter_entry, tv.blotter_entry)
where tr.res_id = 1;
备注:
res_id
在select
子句中也是有歧义的;它出现了多次,来自不同的 table。由于这是您用于 join
和过滤的列,因此足以为 from
子句
中的第一个 table 带来价值
我简化了最后一个 table 的连接条件以使用 in
而不是重复的 or
条件
美好的一天!我试图将一个 Table 加入另一个。是否可以销毁或忽略 table 字段,例如 blotter_entry
如果它不包含任何值或如果它是 null
?通过查看下面的屏幕截图,如您所见,我有三个 table 和 blotter_entry
。那么就真的要看用户是属于tbl_complainant as tc
还是tbl_respondent as te
还是res_id
,还是tbl_victim as tv
.
截图中查询发现blotter_entry
在tbl_complainant
中,如何忽略tbl_respondent and tbl_victim
中的两个blotter_entry
?
我问这个是因为每当我循环这个 SQL 查询并执行 echo $row['blotter_entry']
以在网站上显示它时,因为如果 res_id
被检测到并找到它 tbl_respondent and tbl_victim
它不会在网页中显示任何内容。比如res_id
是3号,他是respondent/victim。每当我在网站上输出 echo $row['blotter_entry']
时。它不会显示任何内容。
如有任何帮助,我们将不胜感激。谢谢!
Screenshot after running this SQL Query
SELECT tr.res_id
, tc.res_id
, tc.blotter_entry
, te.res_id
, te.blotter_entry
, tv.res_id
, tv.blotter_entry
, tb.blotter_id
, tb.blotter_type
, tb.blotter_reporteddate
, tb.blotter_reportedtime
, tb.blotter_incidentdate
, tb.blotter_incidenttime
, tb.blotter_status
, tc.complainant_name
, te.respondent_name
, tv.victim_name
FROM tbl_resident tr
LEFT
JOIN tbl_complainant tc
on tr.res_id = tc.res_id
LEFT
JOIN tbl_respondent te
on tr.res_id = te.res_id
LEFT
JOIN tbl_victim tv
on tr.res_id = tv.res_id
LEFT
JOIN tbl_blotter tb
on tc.blotter_entry = tb.blotter_entry
OR te.blotter_entry = tb.blotter_entry
OR tv.blotter_entry = tb.blotter_entry
WHERE tr.res_id = 1;
您可以使用 coalesce()
来使用第一个非 null
值。
select
tr.res_id,
coalesce(tc.blotter_entry, te.blotter_entry, tv.blotter_entry) as blotter_entry
tb.blotter_id,
tb.blotter_type,
tb.blotter_reporteddate,
tb.blotter_reportedtime,
tb.blotter_incidentdate,
tb.blotter_incidenttime,
tb.blotter_status,
tc.complainant_name,
te.respondent_name,
tv.victim_name
from tbl_resident tr
left join tbl_complainant tc on tr.res_id = tc.res_id
left join tbl_respondent te on tr.res_id = te.res_id
left join tbl_victim tv on tr.res_id = tv.res_id
left join tbl_blotter tb on tb.blotter_entry in (tc.blotter_entry, te.blotter_entry, tv.blotter_entry)
where tr.res_id = 1;
备注:
中的第一个 table 带来价值res_id
在select
子句中也是有歧义的;它出现了多次,来自不同的 table。由于这是您用于join
和过滤的列,因此足以为from
子句我简化了最后一个 table 的连接条件以使用
in
而不是重复的or
条件