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
プレビュー