我正在努力使此查询正确。我有返回的表来显示昵称和两个关联的值。这些表是: 用户(昵称,姓名等) postsAuth(昵称,postID等) postComm(昵称,comID等)
如果numPosts和numComments中返回的两个值均为NULL(例如,如果它们没有评论或创建帖子),我将尝试不使其包含用户。我不确定如何使它工作。代码如下
SELECT u.nickname, pa.numPosts, pc.numComments
FROM Users u
LEFT JOIN
(SELECT pa.nickname, COUNT(pa.nickname) AS numPosts
FROM postAuthors pa
GROUP BY pa.nickname
)pa
ON u.nickname = pa.nickname LEFT JOIN
(SELECT pc.nickname, COUNT(pc.nickname) AS numComments
FROM postComments pc
GROUP BY pc.nickname
)pc
ON u.nickname = pc.nickname;
这将创建
Nickname | numPosts | numComments
bob 1 2
sally 2 1
tommy NULL NULL
etc.......
我不希望显示tommy
。
答案 0 :(得分:5)
只需在查询中添加<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</table>
<input id="btMerge" type="button" value="Merge cells" />
,即
WHERE pc.nickname IS NOT NULL OR pa.nickname IS NOT NULL
这将排除在postAuthors和postComments中都没有值的所有用户。
答案 1 :(得分:1)
使用where子句并设置非空条件
SELECT u.nickname, pa.numPosts, pc.numComments
FROM Users u
LEFT JOIN
(SELECT pa.nickname, COUNT(pa.nickname) AS numPosts
FROM postAuthors pa
GROUP BY pa.nickname
)pa
ON u.nickname = pa.nickname LEFT JOIN
(SELECT pc.nickname, COUNT(pc.nickname) AS numComments
FROM postComments pc
GROUP BY pc.nickname
)pc
ON u.nickname = pc.nickname
WHERE pc.nickname IS NOT NULL OR pa.nickname IS NOT NULL
答案 2 :(得分:0)
在这种情况下,您可以在页面显示时对其进行控制。
if(object->property_name==Null && object->property_name==Null ){
continue;
}