我有两个表table1
和table2
。在两个表中,列几乎相同。我正在做的是我必须同时显示两个表中的记录。
就像我在列表页面上一样,我必须显示记录。另外,我必须使用where条件。
我在下面的查询中尝试过
$query1='select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status from tbl_lead as l1 UNION select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status from tbl_leadUpload as l2';
现在,我必须对表1 where leadstatus IN(1,2,3)
和表2 where leadstatus IN(1,2,3,4,7)
使用where条件,以在同一列表上显示记录。
如何为两个表使用where条件?
您能帮我解决这个问题吗?
答案 0 :(得分:0)
您有不同的条件,因此必须两次使用WHERE
:
select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status
from tbl_lead as l1
where leadstatus IN(1,2,3)
UNION
select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status
from tbl_leadUpload as l2
where leadstatus IN(1,2,3,4,7)
答案 1 :(得分:0)
假设您的tbl_lead和tbl_leadupload具有相同的列(数字和相应的数据类型) 您应该将每个位置添加到适当的表中
$query1='select *
, CASE WHEN is_status =0 THEN "No" ELSE "Yes" END as status
from tbl_lead
WHERE leadstatus IN (1,2,3)
UNION
select *
,CASE WHEN is_status =0 THEN "No" ELSE "Yes" END
from tbl_leadUpload
where leadstatus IN (1,2,3,4,7) ;';'
如果不是,则应使用显式列,例如:
$query1='select col1, col2, col3
, (CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status
from tbl_lead
WHERE leadstatus IN (1,2,3)
UNION
select col1, col2, null
,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END)
from tbl_leadUpload
where leadstatus IN (1,2,3,4,7) ;';'