Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用简单联接_Php_Mysql_Sql_Wordpress - Fatal编程技术网

Php 使用简单联接

Php 使用简单联接,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我有一个posts表,其中包含id列和更多,还有一个vows表,其中包含post\u id,value列和更多。每个post\u id都可以在投票表中重复 现在我想从数据库中选择投票最多的帖子(以及投票数),我尝试了下一个: $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_re

我有一个
posts
表,其中包含
id
列和更多,还有一个
vows
表,其中包含
post\u id
value
列和更多。每个
post\u id
都可以在
投票
表中重复

现在我想从数据库中选择投票最多的帖子(以及投票数),我尝试了下一个:

$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}
是正确的posts表

您需要按post.id进行分组,以获得每个post的正确总数。然后,您可以按该总和降序排序,并获得第一行(=最高值)


我还没有测试过,但它应该对你有用

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

由于此查询中存在各种错误,它可能无法检索任何内容。连接语法一开始就错误,应该是“选择…”。。。从x连接x.id=y.other_id上的y,其中。。。我也不明白为什么你会把1=1放在你应该使用
$wpdb->show_errors()的地方对查询进行故障排除
表中的
列是什么?这是一个代表post投票值的数字字段吗?比如10代表post_id 1,20代表post_id 2等等。您必须只选择表“p”中要分组的字段,不是吗?在real,呃,其他数据库中,是的,但在MySQL中您不需要这样做。也就是说,我认为这样做更具可读性,而使用
*
一般来说是不好的。但由于我不知道
p
的字段,我冒昧地这样做了。:)@ManoloSalsas将内部连接更改为左连接,因此使用内部连接如果没有对帖子的投票,则不会显示帖子。您可以更改限制,例如更改为10,以获得投票最多的10篇帖子。
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