簡體   English   中英

在PHP中合並兩個SQL查詢的結果

[英]Merging the results of two sql queries in PHP

我正在嘗試實現一種搜索功能,該功能不僅可以在一個表(任務)中搜索,而且可以在另一個相關表(活動)中搜索。 活動具有一個列名稱任務,該任務標識了它所屬的任務(這是任務表中的列keyid)。 我搜索任務表的方式是:

SELECT
    tasks.*
FROM
    tasks
WHERE
    (
        (
            tasks.description LIKE '%$search%'
            OR tasks. NAME LIKE '$search%'
        )
        AND tasks. USER = '$userid'
    );

我搜索活動表的方式是:

SELECT DISTINCT
    tasks.*
FROM
    activities,
    tasks
WHERE
    tasks. USER = '1'
AND activities.description LIKE '%$search%';

單個查詢有效,並且它們都返回任務表數據。 我想做的是合並兩個結果(在php中),以便我只獲得所有表任務條目,而沒有重復。

我怎樣才能做到這一點?

然后執行兩個查詢,然后使用array_merge()變體合並結果(注意可能的重復項),或者只是使用OR運算符將兩個SELECT語句中的WHERE子句連接起來:

SELECT
    DISTINCT tasks.*
FROM
    activities,
    tasks
WHERE
    (
        (
            tasks.description LIKE '%$search%'
            OR tasks.NAME LIKE '$search%'
        )
        AND tasks.USER = '$userid'
    )
    OR
    (
        tasks.USER = '$userid'
        AND activities.description LIKE '%$search%'
    );

應用一些布爾優化:

SELECT
    DISTINCT tasks.*
FROM
    activities,
    tasks
WHERE
    tasks.USER = '$userid'
    AND
    (
        tasks.description LIKE '%$search%'
        OR tasks.NAME LIKE '$search%'
        OR activities.description LIKE '%$search%'
    );

無論如何,我當然希望看到您的代碼,希望您通過仔細 PDOStatement::bindParam 數據來保護自己免受SQL注入的侵害,或者使用PDOStatement::bindParam來幫您解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM