2

私は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";

上記のクエリに何かが欠けていることはわかっていwhereますORDER 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 に答える