2

我有两张桌子word_term_relationshipsword_posts

我正在做的是使用while循环来从word_term_relationships表中获取某个值为真的某个记录。

$query = "SELECT object_id 
          FROM `word_term_relationships` 
          WHERE `term_taxonomy_id` = '54'"; 

然后我在循环中使用另一个查询来使用从上一个查询中检索到的数据,以便从另一个表中获取数据word_posts

$query2 = "SELECT post_title, post_date, post_date_gmt, guid 
           FROM `word_posts` 
           WHERE `ID` = '$post_id'";

我可以做到这一点并且工作正常。

唯一的问题是我需要按日期和时间对结果进行排序,我可以在没有while循环的情况下使用ORDER BY函数和word_posts表格来执行此操作。

但是,我尝试像这样(如下)在查询中链接表,以便对数据进行排序。但显然这是不正确的——我只是无法在查询中查明出了什么问题。

$query = "SELECT word_term_relationships.object_id 
          FROM word_term_relationships 
          WHERE word_term_relationships.term_taxonomy_id = '54' 
          ORDER BY word_posts.post_date ASC";

我知道上面的查询缺少一些东西,我whereORDER BY word_posts.post_date ASC.

4

2 回答 2

1

一个简单的INNER JOIN就可以解决你的问题。试试这个,

SELECT a.post_title, 
       a.post_date, 
       a.post_date_gmt, 
       a.guid 
FROM   word_posts a 
       INNER JOIN word_term_relationships b
           ON a.ID = b.object_id
WHERE  b.term_taxonomy_id= '54'
ORDER BY a.post_date ASC
于 2012-09-27T14:22:07.517 回答
0
$query = "SELECT post_title
               , post_date
               , post_date_gmt
               , guid
          FROM word_posts a INNER JOIN word_term_relationships b on a.ID = b.object_id
          WHERE term_taxonomy_id = '54'
          ORDER BY a.post_date ASC";
于 2012-09-27T14:23:51.117 回答