2012-01-09 9 views
0

여러 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"; 

하지만이 다가오고 첫 번째 두 문장이 개별적으로 잘 작동하는 결과가 없습니다.

도움을 주시면 감사하겠습니다.

+0

무엇인가'$ filter.'을 어떻게해야 쿼리 하나의 끝에.? – davogotland

+0

이것은 필터가 설정된 경우 일련의 조건을 전달하는 또 다른 변수입니다. –

+0

두 결과 세트를 병합하려면'UNION '을 찾고있을 것입니다. –

답변

1

이 시도 :

$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." 
UNION ALL 
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" 
+0

감사합니다. –

+0

@muistooshort 맞아요, 저거 upvote가 너 한테서 왔어, 안 그래? – davogotland

+1

네, UNION ALL은 좋은 해결책이며 이상한 형식의 SQL을 괴롭히는 데 가치가 있습니다. 나는 깔끔하게 포맷 된 코드도 가지고있다. –

관련 문제