下記のSQL文をもっと簡単に記述する方法はありませんか?
うまく説明することが出来ないのですが、理解していただいた方がいたら解説などをいれてお願いします。
//SQL文の記述
$sql = "";
$sql .= "SELECT
DISTINCT tb1.f1 AS f1,
tb1.f2 AS f2,
tb1.f3 AS f3,
tb1.f4 AS f4,
tb2.f1 AS f5,
tb2.f2 AS f5
FROM tb1 LEFT OUTER JOIN tb2 ON tb1.f1=tb2.f1
WHERE tb1.f2 = '$hensu' OR tb1.f3 = '$hensu' OR tb1.f4 = '$hensu'";
$rs = mysql_query( $sql, $conn );
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC )){
print <<<_EOT_
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><td><h1>{$rec["f5"]}</h1></td></tr>
_EOT_;
//SQL文の記述
$sql = "";
$sql .= "SELECT*";
$sql .= " FROM tb1";
$sql .= " WHERE (f2 = '$hensu' OR f3 = '$hensu' OR f4 = '$hensu') and f1 = '$rec[f1]'";
$rs2 = mysql_query( $sql, $conn );
while( $rec2 = mysql_fetch_array( $rs2, MYSQL_ASSOC )){
print "<tr><td bgcolor="#FFFFFF">{$rec2["f5"]}<td></tr>";
}
print "</td></tr></table>";
}
質問に質問で返してしまいますが。
とりあえず、
・tb1 と tb2 のDDL
・使用している MySQL のバージョン。
・何回か出現している $hensu という変数はすべての場所で同一の値でよいのかどうか。
を確認させてください。
あと、できれば何のデータをどのように表示したいのかサンプルを提示していただけるとはっきりとした答えが出やすいかと思います。
すいません再度確認させてください。
最初の SQL の
tb2.f1 AS f5,
tb2.f2 AS f5
は
tb2.f1 AS f5,
tb2.f2 AS f6
の間違いでしょうか?
あと、tb1,tb2 の各カラムに何が入っているかが分かりにくいです。
tb1.f1 は何が入っているのでしょうか? tb2.f2 はカテゴリ名称ということでよろしいでしょうか?
また何か入っているデータに条件はありませんか?それぞれのカラムに任意のデータが入るとすると、SQL の変更は無理だと思います。
tb2.f1 AS f5,
tb2.f2 AS f5
上記は間違いです。下記があってます。
tb2.f1 AS f5,
tb2.f2 AS f6
tb2.f2 はカテゴリ名称です。
>また何か入っているデータに条件はありませんか?それぞれのカラムに任意のデータが入るとすると、SQL の変更は無理だと思います。
特にないです。
>・tb1 と tb2 のDDL
DDLとは、「Data Definition Language」の事ですか?
だとした、分からないです。すいません。
>・使用している MySQL のバージョン。
3.23だと思います。
>・何回か出現している $hensu という変数はすべての場所で同一の値でよいのかどうか。
はい。同じでよいです。
ショッピングサイトを作ろうと思うのですが、カテゴリ別にページを生成しようと思います。
例えば、index.php?CAT=1だったら電化製品みたいな感じにして、更にそのページの中で、カメラ、パソコンと見出しを作って商品を並べたいと思っています。
$hensuとうのは、CAT=1の部分の1なります。