2011-10-10 138 views
0

我需要合併兩個查詢:兩個查詢合併

首先查詢:

SELECT `p`.`name`, `posts`.* 
FROM `polls` `p`, `posts` 
WHERE `p`.`id` = `posts`.`guid` 
AND `first` = {$id} 
AND `text` LIKE ? 

與...第二個查詢:

SELECT SUM(`deleted` = 0) AS 'posts' 
FROM `posts` 
WHERE `first` 
NOT IN 
(
SELECT `id` 
FROM `posts` 
WHERE `deleted` = 1 
AND `first` = `id` 
) AND `first` = {$fid} 

是否有任何機會,以合併它們?

回答

0

您可以使用UNION。你必須讓它們返回相同的列。第二個查詢將不得不返回其他值的空白值。

+0

好了,你可以幫我這個'UNION'?因爲我已經嘗試了很多方法,查詢總是失敗。 – Isarius

+0

我認爲'UNION'在這種情況下不會起作用,因爲'SELECT'語句有不同的列數。 – Isarius

0

我不知道查詢試圖實現什麼,或查詢產生什麼樣的結果。我認爲查詢1搜索文本等帖子,查詢2通過ID搜索已刪除帖子。我已經做了一個夾具,如果兩個查詢都生成相同數量的行,它應該可以工作。

更改: 1您需要將第二個查詢中的AS更改爲唯一名稱(在此處爲posts_sum)。 2我也刪除了第二個ID連接。

檢查出來:

SELECT `p`.`name`, `posts`.*, SUM(`deleted` = 0) AS 'posts_sum' 
FROM `polls` `p`, `posts` 
WHERE `p`.`id` = `posts`.`guid` 
AND `first` = {$id} 
AND `text` LIKE ? 
AND `first` 
NOT IN 
(
    SELECT `id` 
    FROM `posts` 
    WHERE `deleted` = 1 
    AND `first` = `id` 
)