2014-11-02 91 views
-2

我有以下查詢:合併2個查詢與不同的WHERE子句

select 
* 
from 
(
SELECT art_titel as at, COUNT(*) as Number1 
FROM artikel_views 
WHERE user_id != '' 
GROUP BY art_titel 
ORDER BY Number1 desc 
) as FirstSet 
join 
(
SELECT art_titel as at, COUNT(*) as Number2 
FROM artikel_views 
WHERE user_id = '' 
GROUP BY art_titel 
ORDER BY Number2 desc 
) as SecondSet 
on FirstSet.at = SecondSet.at 

我的HTML表:

<table> 
    <tr> 
    <td>Art Titel</td> 
    <td>user_id is NULL</td> 
    <td>user_id is not NULL</td> 
    </tr> 

<?php while($row = mysql_fetch_assoc($res)) { ?> 

    <tr> 
    <td><?php echo $row['at']; ?></td> 
    <td><?php echo $row['Number2']; ?></td> 
    <td><?php echo $row['Number1']; ?></td> 
    </tr> 

<?php } ?> 

</table> 

我要做的就是從$行[ '數字1']取值和$ row ['Number 2']結合art_titel。 該查詢的結果不好。在這兩個查詢中,我只有art_titel和art_titel上art_titel的匹配,但效果並不好。我需要兩種方式的所有項目。

我也試過一個聯盟,但是不是我的方式工作。

+0

什麼問題? – AdamMc331 2014-11-02 19:57:24

+0

@ McAdam331:我已更新我的問題 – 2014-11-02 20:00:10

+0

如果沒有任何樣本數據或預期結果(我建議您在下次提問時加入,如果您有雄心壯志,可以編輯這一個),但很難說清楚,但您可以嘗試聯盟,看看是否有效。 – AdamMc331 2014-11-02 20:03:06

回答

0

不需要2個查詢,只需使用CASE條件。

SELECT art_titel as at, SUM(CASE WHEN user_id != '' THEN 1 ELSE 0 END) as Number1, 
SUM(CASE WHEN user_id = '' THEN 1 ELSE 0 END) as Number2 
FROM artikel_views 
GROUP BY art_titel 
ORDER BY Number1 desc,Number2 desc 
+0

如果我使用$ row ['Number1 ']和$ row ['Number2']是與art_titel相同的值,並且這些值在我的數據庫中不相同。那麼到底發生了什麼問題? – 2014-11-02 20:15:34

+0

@BrechtS我不知道你在說什麼...... – Mihai 2014-11-02 20:17:37

+0

@ Mihai:我想用查詢的輸出填充我的HTML表格。爲此,我使用$ row ['at']爲我的表的第一列中的值賦值art_titel和$ row [Number1'],爲我表中第二列中的值賦值$ row ['Number2'] 。 Number 1和Number2中的值現在在我的表中是相同的。但在我的數據庫中不是。 – 2014-11-02 20:21:34

相關問題