1
所以我现在正在为我们的开发人员填充(被警告我是初学者),但我试图简单地将我的搜索结果按照包含个人资料图片的个人资料排序(即, t要空白的个人资料图片显示在结果的顶部...他们应该都在结果的最后)...请注意,有几个用户类型,这就是为什么有这么多的代码...如何按照顶部的个人资料图片进行分类?
我敢肯定,我要去哪里错的是2号线...
ORDER BY $为了u.picture ISNULL DESC“; (这涉及按个人资料图片排序)。真的很感激任何和所有的帮助...... thx!
的代码如下:
if ($user_type == 1) {
$sql = "SELECT a.*, u.*,
(SELECT COUNT(DISTINCT userId) FROM LF_usertype_A WHERE usertype_BId = u.userId AND status = 1) as i_cnt,
(SELECT COUNT(productId) FROM LF_products WHERE userId = u.userId AND status = 1) as product_cnt,
(SELECT COUNT(transactionId)
FROM LF_Transactions
WHERE usertypeBId = u.userId
AND (status = 1 OR status = 2)
AND type = 9
AND userId != usertypeBId
AND userId != usertypeAId) AS cnt
FROM LF_Users u
JOIN LF_products a ON a.userId = u.userId
LEFT JOIN LF_Transactions t ON t.productId = a.productId
WHERE a.status = 1
AND u.status = 1
AND u.userType = :ut $where
GROUP BY u.userID
ORDER BY $order u.name DESC LIMIT 200";
} elseif ($filter != "recent" && $user_type == 2) {
$sql = "SELECT u.*,
(SELECT COUNT(a.productId) FROM LF_usertypeA a INNER JOIN LF_products ON a.productId = m.productId INNER JOIN LF_Users uu ON uu.userId = a.usertypeAId WHERE a.userId = u.userId AND uu.status = 1 AND a.status = 1 AND m.status = 1) as product_cnt,
(SELECT COUNT(transactionId)
FROM LF_Transactions
WHERE usertypeBId = u.userId
AND (status = 1 OR status = 2)
AND type = 9
AND userId != usertypeAId
AND userId != usertypeBId) AS cnt
FROM LF_Users u
LEFT JOIN LF_Transactions t ON t.usertypeBId = u.userId
WHERE u.status = 1
AND u.userId != 1
AND u.userType = :ut $where
GROUP BY u.userID
ORDER BY $order u.name DESC LIMIT 200
ORDER BY $order u.picture ISNULL DESC";
} else {
$sql = "SELECT u.*,
(SELECT COUNT(a.productId) FROM LF_usertype_A a INNER JOIN LF_products m ON a.productId = m.productId INNER JOIN LF_Users uu ON uu.userId = a.usertypeAId WHERE a.userId = u.userId AND uu.status = 1 AND a.status = 1 AND m.status = 1) as product_cnt,
(SELECT COUNT(transactionId)
FROM LF_Transactions
WHERE usertypeBId = u.userId
AND (status = 1 OR status = 2)
AND type = 9
AND userId != usertypeAId
AND userId != usertypeBId) AS cnt
FROM LF_Users u
WHERE u.status = 1
AND u.userId != 1
AND u.userType = :ut $where
GROUP BY u.userID
ORDER BY $order u.name DESC LIMIT 200
ORDER BY $order u.picture ISNULL DESC";
}
感谢吉荣,你可以给我想了解代码中的哪些地方......我是tyring ORDER BY ISNULL(u.picture),$ order u.name DESC LIMIT 200.那个地方靠近吗?我认为它在'GROUP BY'行之后仍然存在,对吗?谢谢! – BennyB 2012-04-20 17:51:11
@BennyB你有不同的sql语句,其中一些似乎有多个'ORDER BY'子句。你只能在你的sql语句中有一个'ORDER BY'子句,并且你首先想要那些带有图像的子句,你必须以'ISNULL(u.picture)'开头。 – jeroen 2012-04-20 17:53:01
有问题,所以重复的ORDER BY子句是问题。欣赏它! – BennyB 2012-04-20 17:55:25