我已经研究了将多个sql语句组合为一个,但无法使其工作。将两个SQL语句合并为一个语句
我基本上有两个陈述,我想合并为一个将被查询的陈述。
这里有两种说法:
$sql="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id
FROM (#__users AS u INNER JOIN #__uddeim AS um ON u.id=um.fromid)
WHERE um.toid=".(int)$myself." AND um.totrash=0 AND `um`.`delayed`=0".$filter.
$sql2="SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id
FROM (#__users AS u INNER JOIN #__uddeim AS um ON u.id=um.toid)
WHERE um.fromid=".(int)$myself." AND um.totrashoutbox=0".$filter." AND um.systemflag=0"
这里是我用两个别名“U”他们结合的尝试,和“o”:
$filter="";
if ($filter_user) $filter = " AND um.fromid=".(int)$filter_user;
if ($filter_user==-1) $filter = " AND um.fromid=0";
if ($filter_unread) $filter .= " AND um.toread=0";
if ($filter_flagged) $filter .= " AND um.flagged<>0";
$sql= "SELECT DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname, u.id, o.".($config->realnames ? "name" : "username")." AS displayname, o.id
FROM (#__users AS u INNER JOIN #__uddeim AS um ON u.id=um.fromid) INNER JOIN #__uddeim AS om ON o.id=om.toid
WHERE um.toid=".(int)$myself." AND um.totrash=0 AND `um`.`delayed`=0".$filter. " AND om.fromid=".(int)$myself." AND om.totrashoutbox=0".$filter." AND om.systemflag=0";
但这快到了没有结果,前两个陈述中,单独工作正常。
任何帮助表示赞赏。
是什么'$ filter.'? – davogotland 2012-01-09 00:44:39
这是另一个变量,如果设置了过滤器,它就会携带一组条件。 – 2012-01-09 00:47:44
您可能正在寻找'UNION'来将两个结果集合在一起。 – 2012-01-09 00:51:28