我有一个posts
表,其中包含id
列和更多列,以及一个votes
表,其中包含post_id
,value
列等。每个post_id
都可以在votes
表中重复。
现在我想从数据库中选出投票最多的帖子(和投票数),我尝试了下一个:
$query = "SELECT p, SUM(v.value) FROM {$wpdb->posts} p, wp_wti_like_post v JOIN p.id v.post_id WHERE 1=1";
$myrows = $wpdb->get_results( $query );
var_dump($myrows);
但它检索一个空数组。
注意:{$wpdb->posts}
是帖子的正确表格
答案 0 :(得分:2)
您需要按post.id进行分组才能获得每个帖子的正确金额。然后,您可以按该总和降序排序并获得第一行(=最高值)。
SELECT
p.*, /* Not sure if this will work. Maybe you have to
specify exact fields you need, although MySQL
is pretty forgiving. */
SUM(v.value) AS number_of_votes
FROM
{$wpdb->posts} p
INNER JOIN wp_wti_like_post v ON v.post_id = p.id
GROUP BY
p.id
ORDER BY
SUM(v.value) DESC
LIMIT 1";
答案 1 :(得分:0)
我没有测试过,但它应该适合你。
SELECT {$wpdb->posts}.*,wp_wti_like_post.*, SUM(wp_wti_like_post.value) as Svalue
FROM {$wpdb->posts}
JOIN wp_wti_like_post ON wp_wti_like_post.post_id = {$wpdb->posts}.id