atableとbtableをソートのために連結させて運用してましたが、ctableを結合させる必要が出来たためUNIONで対応しようとしています。
追記:データベースエンジンはMYSQLです。
ccodeがあるのはbtableのみで、データ並びはSELECTしているacolとbcolのみで、ccodeでソートしたものが必要です。
追記2:MYSQLのエラーです。コードは以下です。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ccode FROM atable
LEFT JOIN btable
ON atable
.acode
=btable
.acode
at line 1
btableとatable(ctable)と一致しているのはacodeのみです。
atable
acode
bcode
acol
bcol
btable
acode
ccode
ccol
dcol
ctable
acode
bcode
acol
bcol
$sql="SELECT atable
.acol
AS acol,atable
.bcol
AS bcol FROM atable
";
$sql.=" LEFT JOIN btable
ON atable
.acode
=btable
.acode
";
$sql.=" WHERE atable
.bcode
= ".$bcode;
$sql.=" ORDER BY `ccode";
現在のSQL文です。
$sql="SELECT atable
.acol
AS acol,atable
.bcol
AS bcol FROM atable
";
$sql.=" LEFT JOIN btable
ON atable
.acode
=btable
.acode
";
$sql.=" WHERE atable
.bcode
= ".$bcode;
$sql.=" UNION SELECT ctable
.acol
AS acol,ctable
.bcol
AS bcol FROM ctable
";
$sql.=" LEFT JOIN btable
ON ctable
.acode
=btable
.acode
";
$sql.=" WHERE atable
.bcode
= ".$bcode;
$sql.=" ORDER BY `ccode";
以上ではソートできず、項目別名が必要という情報があったので以下のようにしましたが構文エラーになってしまいます。
$sql="SELECT atable
.acol
AS acol,atable
.bcol
AS bcol,ctable
.ccode
AS order FROM atable
";
$sql.=" LEFT JOIN btable
ON atable
.acode
=btable
.acode
";
$sql.=" WHERE atable
.bcode
= ".$bcode;
$sql.=" UNION SELECT ctable
.acol
AS acol,ctable
.bcol
AS bcol ,ctable
.ccode
AS order FROM ctable
";
$sql.=" LEFT JOIN btable
ON ctable
.acode
=btable
.acode
";
$sql.=" WHERE atable
.bcode
= ".$bcode;
$sql.=" ORDER BY `order";
色々調べましたがどのようなSQL文を書けばよいか分かりません。
どうぞご教授お願いいたします。
回答4件
あなたの回答
tips
プレビュー