我想有一个类别,是从另一个表的总链接视图排序列表。
我只是试着在谷歌上搜索一下,然后想出了这个例子。
SELECT
'categories'.'catId',
'categories'.'title',
'categories'.'description',
(
SELECT SUM(hits)
FROM 'links'
WHERE 'catId' = 'categories'.'catId'
) AS 'hits_count'
FROM 'categories'
LEFT JOIN 'links'
ON 'links'.'catId' = 'categories'.'catId'
WHERE 'status'='1'
ORDER BY 'hits_count'
这样行吗?还是有别的办法?
最新的尝试
<?php
include 'config.php';
$db = new DB();
$sql="SELECT categories.name,
(
SELECT SUM(hits)
FROM links
WHERE catId = categories.catId
) AS hits_count
FROM categories
LEFT JOIN links
ON links.catId = categories.catId
WHERE links.status=1
ORDER BY hits_count DESC";
$query = $db->db->prepare($sql);
$categories = $query->execute();
?>
<?php print_r($categories) ?>
只带着数字1回来了
1条答案
按热度按时间mqxuamgl1#
我想把它说成是
categories
以及查找和的子查询:通过使用连接而不是相关子查询,应该可以提高性能。但也许你面临的更大的问题是,你在每件事上都加了单引号。不要这样做,因为mysql可能会将其解释为字符串文本。如果需要在mysql中转义表或列名,请使用backticks。但就你而言,我认为你根本不需要它们。