在单个查询中组合两个表来订购数据

时间:2012-09-27 14:19:14

标签: php mysql sql

我有两张表word_term_relationshipsword_posts

我正在做的是使用while循环来从word_term_relationships表中获取特定值为true的特定记录。

$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";

我知道上面的查询遗漏了一些内容,我在where之后想到了第二个ORDER BY word_posts.post_date ASC

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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";