2010年2月15日月曜日

[MySQL] テーブルを結合するSQL

結合で使用するテーブル名には必ずエイリアスを貼りましょう。
SQL全体がコンパクトになり、見通しがよくなります。
構文:table_name AS alias_name

xoops_picoカテゴリテーブルより、特定のデータを抽出しカテゴリID順で並べ表示する
$sql = "SELECT cat_id, cat_permission_id, cat_title, cat_created_time, cat_extra_fields FROM xoops_gencontents_categories ORDER BY cat_id";

xoops_picoコンテンツテーブルより、特定のデータを抽出しコンテンツID順で並べ表示する
$sql = "SELECT content_id, permission_id, subject, created_time, extra_fields FROM xoops_gencontents_contents ORDER BY content_id";

コンテンツテーブルとカテゴリテーブルを内部結合
$sql = "SELECT con.cat_id AS cat_id1, cat.cat_id AS cont_id2 FROM xoops_gencontents_contents AS con LEFT JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id";

コンテンツテーブルとカテゴリテーブルを内部結合
$sql = "SELECT con.cat_title AS category_name, con.subject AS content_name, con.created_time FROM xoops_gencontents_contents AS con LEFT JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id"

コンテンツ、カテゴリテーブルとユーザーテーブルの3テーブルを結合
$sql = "SELECT cat.cat_title AS category_name, con.subject AS content_name, con.created_time, us.uname AS poster_user FROM xoops_users AS us INNER JOIN (xoops_gencontents_contents AS con INNER JOIN xoops_gencontents_categories AS cat ON con.cat_id = cat.cat_id) ON us.uid = con.poster_id";


以上です。

0 件のコメント:

コメントを投稿