使用简单的JOIN

时间:2014-03-01 19:24:45

标签: php mysql sql wordpress

我有一个posts表,其中包含id列和更多列,以及一个votes表,其中包含post_idvalue列等。每个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}是帖子的正确表格

2 个答案:

答案 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