[英]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.