简体   繁体   中英

Mysql query across tables

I have a table wp_views , with columns postid and views I want to get the IDs that have the highest values of views (top 4) Then return the title and link from wp_posts using the postid .

What's the right way of doing this?

You can try the following

global $wpdb;
$top4=$wpdb->get_results('SELECT post_title, post_name from `'.$wpdb->prefix.'views`       
INNER JOIN `'.$wpdb->prefix.'posts` ON `postid`=`ID` 
ORDER BY `views` DESC 
LIMIT 4;', ARRAY_A);

I have tried to replicate your table structure from what your write and from this i have come up with the following:

SELECT id, title, link
FROM wp_views RIGHT JOIN wp_posts ON wp_posts.id = wp_views.post_id
ORDER BY views DESC
LIMIT 4;

you can try it out here: http://sqlfiddle.com/#!9/1cea23/1

I am using RIGHT JOIN to allow null values in the wp_posts part of the result. If you want to avoid NULL values in your results you can use INNER JOIN instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM