2つのselect文の結合
-
いつもお世話になっております。
現在、会員制サイトを構築しており、A)該当会員の記事にコメントが入った場合、B)該当会員の記事に投票があった場合の一覧を別々のページに表示しております。A) 【ユーザー名】さんが【記事タイトル名】にコメントしました。(最新:20件)
B) 【ユーザー名】さんが【記事タイトル名】に投票しました。(最新:20件)B)はWP-PostRatingsというプラグインを使用しています。
現在、A)とB)は以下のように別々のページに新着50件を表示しています。A)の表示
<?php $current_id = get_current_user_id(); $results = $wpdb->get_results(" SELECT * FROM $wpdb->comments JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID JOIN $wpdb->users ON $wpdb->users.ID = $wpdb->comments.user_id WHERE user_id = '$current_id' ORDER BY comment_date DESC "); if( !empty( $results ) ) : foreach($results as $value) : ?> 表示の処理 <?php endforeach; ?> <?php elseif( empty( $results ) ): ?> 空だった時の処理 <?php endif; ?> <?php wp_reset_query(); ?>
B)の表示
<?php $current_id = get_current_user_id(); $results = $wpdb->get_results(" SELECT * FROM $wpdb->posts JOIN $wpdb->ratings ON $wpdb->posts.ID = $wpdb->ratings.rating_postid JOIN $wpdb->users ON $wpdb->users.ID = $wpdb->ratings.rating_userid WHERE post_author = '$current_id' ORDER BY rating_timestamp DESC "); if( !empty( $results ) ) : foreach($results as $value) : ?> 表示の処理 <?php endforeach; ?> <?php elseif( empty( $results ) ): ?> 空だった時の処理 <?php endif; ?> <?php wp_reset_query(); ?>
やりたい事は、上記のA)、B)のSELECT文を結合して同一のページ内に混在するような形で、一覧で表示したいのですが、どのようにしたら良いかわかりません。
ネットなどで調べてみたところ、2つのSELECT文を結合するにはUNIONを使用するというところまでは推測できたのですが、以下の2点の問題があり行き詰まっております。1.2つのセレクト文の、「$wpdb->comments(wp-comments)」と、「$wpdb->ratings(wp-ratings)」は、異なる定義のテーブルとなっている。
(タイムスタンプなども、以下のようにフォーマットが異なっております)。
wp-ratings: ・カラム名 rating_timestamp ・データ型 varchar(15)
wp-comments: ・カラム名:comment_date ・データ型:datetime2.結合した後に、上記のタイムスタンプでソートを行い且つ、以下のように文言を切り分けて表示させる方法がわからない。
A) 【ユーザー名】さんが【記事タイトル名】にコメントしました。
B) 【ユーザー名】さんが【記事タイトル名】に投票しました。恐れ入りますが、もし分かる方がおりましたら、お教えいただければ幸いです。
- トピック「2つのselect文の結合」には新たに返信することはできません。