東村山1丁目 diary

渋谷のIT企業から波佐見焼の会社へ転職!Webディレクション・デザイン・ECなど仕事の話から、食事や映画の感想まで。

SQLの練習

hetemlWordPressをインストールし、そこでSQLの練習をした。

WPに入れたプラグインWordPress Popular Postsなど

 

テーブルはこんな感じ

f:id:higashimurayama1:20160522234800p:plain

 

<条件に一致するデータを取得する>

複数のテーブルからカテゴリがついた記事を取り出す

 

SELECT(取得するカラム) FROM テーブル名1 INNER JOIN テーブル名2 ON(結合条件)

 

記事が入ったテーブル(wp_posts)とカテゴリ情報が入ったテーブル(wp_term_relationships)をINNER JOINで結合する。

 

SELECT *

FROM

wp_posts INNER JOIN wp_term_relationships

ON

wp_posts.id=wp_term_relationships.object_id;

 

結果(右側切れてる)

f:id:higashimurayama1:20160522234839p:plain

 

ページビューのある記事を重複なしで取り出す

SELECT の後に DISTINCT を使う。

 

SELECT DISTINCT カラム

FROM テーブル名;

 

SELECT DISTINCT postid

FROM wp_popularpostssummary;

 

結果

f:id:higashimurayama1:20160522234906p:plain

 

特定のカテゴリに該当する記事を取得する

INNER JOIN とWHERE句を使って取得した。

 

SELECT *

FROM

wp_posts INNER JOIN wp_term_relationships

ON

wp_posts.id=wp_term_relationships.object_id

WHERE

term_taxonomy_id=3;

 

結果

f:id:higashimurayama1:20160522234929p:plain

 

IN句を用いた条件抽出

参考記事:

http://www.atmarkit.co.jp/ait/articles/0102/24/news002.html

 

SELECT (取得するカラム)FROM テーブル名

WHERE カラム名 IN(条件)

 

テーブル名’wp_posts’から’、post_status’のカラムに’publish’と記録された記事を取得する。

 

SELECT *
FROM wp_posts
WHERE post_status IN ('publish')

 

結果

f:id:higashimurayama1:20160522235208p:plain

 

サブクエリーを用いた条件抽出

ページビューの発生した記事を取得する。

  テーブル「wp_popularpostssummary」のpostidを取得する(ページビューがあるpostidだけがこのテーブルに存在する)

  テーブル「wp_posts」から該当のIDwp_popularpostssummaryでのpostid)を取得する

※wp_posts.ID=wp_popularpostssummary.postid

 

SELECT *

FROM wp_posts

WHERE ID IN(

  SELECT DISTINCT postid

  FROM wp_popularpostssummary

)

 

結果

f:id:higashimurayama1:20160522235239p:plain

 

<条件に一致するデータの件数を取得する>

countを使う。

 

■特定のカテゴリの記事の件数を取得する

SELECT

count(*) as cnt

FROM

wp_posts INNER JOIN wp_term_relationships

ON

wp_posts.id=wp_term_relationships.object_id

WHERE

term_taxonomy_id=3

 

結果

f:id:higashimurayama1:20160522235304p:plain

はー、いっちょめいっちょめ。