SQLの練習
hetemlにWordPressをインストールし、そこでSQLの練習をした。
WPに入れたプラグイン:WordPress Popular Postsなど
テーブルはこんな感じ
<条件に一致するデータを取得する>
■複数のテーブルからカテゴリがついた記事を取り出す
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;
結果(右側切れてる)
■ページビューのある記事を重複なしで取り出す
SELECT の後に DISTINCT を使う。
SELECT DISTINCT カラム名
FROM テーブル名;
SELECT DISTINCT postid
FROM wp_popularpostssummary;
結果
■特定のカテゴリに該当する記事を取得する
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;
結果
■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')
結果
■サブクエリーを用いた条件抽出
ページビューの発生した記事を取得する。
→テーブル「wp_popularpostssummary」のpostidを取得する(ページビューがあるpostidだけがこのテーブルに存在する)
→テーブル「wp_posts」から該当のID(wp_popularpostssummaryでのpostid)を取得する
※wp_posts.ID=wp_popularpostssummary.postid
SELECT *
FROM wp_posts
WHERE ID IN(
SELECT DISTINCT postid
FROM wp_popularpostssummary
)
結果
<条件に一致するデータの件数を取得する>
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
結果