1

したがって、2つの異なるテーブルから値を選択し、それらを一緒にUNION化するというクエリがあります。それぞれに異なるURLを作成する必要があるため、どのエントリがどこから来たのかを知る必要があります。これらのSELECTクエリの両方にタグを付けるための最良の方法と適切な構文は何ですか。どんな助けでもいただければ幸いです。従うべきコード:

    $query = "SELECT newsletter_id id, newstitle title FROM tbl_news WHERE (newstitle LIKE '%".stripslashes($rowCont->fname)."%' && newstitle LIKE '%".stripslashes($rowCont->lname)."%') || (newsletter_content LIKE '%".stripslashes($rowCont->fname)."%' && newsletter_content LIKE '%".stripslashes($rowCont->lname)."%') SET @type = news
    UNION
    SELECT event_id id, event_title title FROM tbl_event WHERE ((event_title LIKE '%".stripslashes($rowCont->fname)."%' && event_title LIKE '%".stripslashes($rowCont->lname)."%') || (event_content LIKE '%".stripslashes($rowCont->fname)."%' && event_content LIKE '%".stripslashes($rowCont->lname)."%')) SET @type = event";

    $result = mysql_query($query) or die(mysql_error());

    $i = 0;

    while($row = mysql_fetch_assoc($result)) {

        if($table_name == table1) { //SIMULATED TABLE NAME VARIABLE IF STATEMENT, NEED TO KNOW HOW TO GET TABLE NAME FOR SORTING
            echo "<p><a style='color:#00aeef' href='http://www.url1.com/display.php?article_=".$row["id"]."'>".$row["title"]."</a></p>";
        } else {
            echo "<p><a style='color:#00aeef' href='http://www.url1.com/display.php?article_=".$row["id"]."'>".$row["title"]."</a></p>";
        }
    }
4

1 に答える 1

4

1つのオプションは、各クエリの選択リストにリテラルを含めることです。次に例を示します。

SELECT 'q1' AS source, newsletter_id id, ...
UNION
SELECT 'q2' AS source, event_id id, ...

余談ですが、重複を削除する必要がない場合UNION ALLは、演算子の代わりに演算子を使用することを検討してください。UNION

于 2013-02-27T16:55:32.233 に答える