■テーブルの全データの取得
SELECT文、DELETE文、UPDATE文のWHERE句にSELECT文を使った条件式を使うことができます。このWHERE句の中のSELECT文を副問い合わせ(サブクエリ)といいます。副問い合わせのSELECT文は()で囲む必要があります。
サンプルファイル「subquery01.php」を以下に示します。
「subquery01.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>subquery01.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// 処理対象テーブル
$tbl_name1 = "tbl_売上明細";
print "「{$tbl_name1}」<br>";
show_records($db,$tbl_name1);
print "<br>\n";
$tbl_name2 = "tbl_商品2";
print "「{$tbl_name2}」<br>";
show_records($db,$tbl_name2);
print "<br>\n";
// 副問い合わせ
$str_sql = "SELECT * FROM tbl_売上明細
WHERE tbl_売上明細.商品コード
IN (SELECT 商品コード FROM tbl_商品2
WHERE trim(商品名) = '棒チョコ');";
$rs = pg_query($db,$str_sql);
print "SQL = \"{$str_sql}\";<br>\n";
show_rs($rs);
print "<br>\n";
// 結果セット(結果ID)の開放
pg_free_result($rs);
// データベースの切断
pg_close($db);
?>
</body>
</html>
この例では、商品名が'棒チョコ'の商品コードを副問い合わせで検索し、その商品コードにあった売上明細のレコードを検索しています。
サンプルファイルへのアクセス例を下記に示します。

第2のサンプルファイル「subquery02.php」を以下に示します。
「subquery02.php」
<?php
// インクルードファイルの読み込み
include "common_pgsql.php";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=EUC-JP">
<title>subquery02.php for PostgreSQL8.0</title>
</head>
<body>
<?php
// データベースに接続
$db = db_connect($dbname);
// 処理対象テーブル
$tbl_name1 = "tbl_売上明細";
print "「{$tbl_name1}」<br>";
show_records($db,$tbl_name1);
print "<br>\n";
$tbl_name2 = "tbl_商品2";
print "「{$tbl_name2}」<br>";
show_records($db,$tbl_name2);
print "<br>\n";
// 副問い合わせ
$str_sql = "SELECT * FROM tbl_売上明細
WHERE tbl_売上明細.商品コード
= (SELECT 商品コード FROM tbl_商品2
WHERE 商品名 LIKE '%チョコ');";
$rs = pg_query($db,$str_sql);
print "SQL = \"{$str_sql}\";<br>\n";
show_rs($rs);
print "<br>\n";
// 結果セット(結果ID)の開放
pg_free_result($rs);
// データベースの切断
pg_close($db);
?>
</body>
</html>
この例では、商品名が'%チョコ'の商品コードを副問い合わせで検索し、その商品コードにあった売上明細のレコードを複数検索しています。
サンプルファイルへのアクセス例を下記に示します。

SELECT文によるSQL文をあらかじめビューとして定義しておくことができます。つまり、SQL文を実行した結果リソースであって、行と列からなる仮想的なテーブルです。ビューとしての具体的なデータの集合がデータベース内にある訳でなく、ビューを呼び出したときに、その場でビューで定義したSQL文が実行され一時的に結果リソースが生成されるに過ぎません。
ビューの定義には、SQLコマンドのCREATE VIEW文を使用します。
CREATE VIEW ビュー名 AS SELECT文
定義したビューをテーブルとみなして、SQL文を実行することが可能です。
|