2011-07-11 7 views
0

使用PHPとMySQLと1にこれらの2つのSELECTを組み合わせるためにどのように一緒にINNER JOINを一緒に持つ2つのSELECTを結合するには?

$sql="SELECT DISTINCT t1.* 
     FROM entry AS t1 
     INNER JOIN entry_tag AS t2 ON t1.entry_id=t2.entry_id 
     INNER JOIN tag AS t3 ON t3.tag_id=t2.tag_id 
     WHERE t1.title LIKE '%$key%' OR 
     t1.content LIKE '%$key%' OR 
     t3.tag LIKE '%$key%' AND t1.status='OK' 
     ORDER BY view DESC"; 

$sql="SELECT DISTINCT t1.* 
     FROM entry AS t1 
     INNER JOIN candidate AS t2 ON t1.entry_id=t2.entry_id 
     WHERE t2.name LIKE '%$key%' AND t1.status='OK' 
     ORDER BY view DESC"; 

を結合する2つのSELECT文を持っていますか?

答えて

4

使用UNION ALL:

$sql="SELECT DISTINCT t1.* 
    FROM entry AS t1 
    INNER JOIN entry_tag AS t2 ON t1.entry_id=t2.entry_id 
    INNER JOIN tag AS t3 ON t3.tag_id=t2.tag_id 
    WHERE t1.title LIKE '%$key%' OR 
    t1.content LIKE '%$key%' OR 
    t3.tag LIKE '%$key%' AND t1.status='OK' 
    UNION ALL 
    SELECT DISTINCT t1.* 
    FROM entry AS t1 
    INNER JOIN candidate AS t2 ON t1.entry_id=t2.entry_id 
    WHERE t2.name LIKE '%$key%' AND t1.status='OK' 
    ORDER BY view DESC"; 
+0

私は同じ文にUNION ALL何度も使用することができますか? –

+1

はい、できます。しかし、選択ごとに同じ列を提供する必要があります。また、クエリの最後に重複を除外する場合は、UNION ALLではなくUNIONを使用します。 – CristiC

+0

それは私が欲しいものです - '重複を排除する'。 Parkyprgにもう一度感謝します。 :) –

1
select * from 
(SELECT DISTINCT t1.* 
    FROM entry AS t1 
    INNER JOIN entry_tag AS t2 ON t1.entry_id=t2.entry_id 
    INNER JOIN tag AS t3 ON t3.tag_id=t2.tag_id 
    WHERE t1.title LIKE '%$key%' OR 
    t1.content LIKE '%$key%' OR 
    t3.tag LIKE '%$key%' AND t1.status='OK' 
    ORDER BY view DESC") 
union all 
("SELECT DISTINCT t1.* 
    FROM entry AS t1 
    INNER JOIN candidate AS t2 ON t1.entry_id=t2.entry_id 
    WHERE t2.name LIKE '%$key%' AND t1.status='OK' 
    ORDER BY view DESC") 
+0

"("、 ")"を持っていて、Parkyprgの答えのようなものがないのはどれですか? –

+0

http://dev.mysql.com/doc/refman/5.0/en/union.html – dpp

+0

@AJ - どちらの方法でも動作します。私はちょうど括弧で好むので、もしクエリが 'select ...(select ..)union all(select ...)order by ...'と組み合わされた後にソート式を追加すると、私はそうすることができます。 – dpp

関連する問題