- 締切済み
PHP+MySQL 内部結合(INNER_JOIN)がうまく行きません。
以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか? <?php // データベースサーバへの接続・データベースの選択 $db = mysql_connect('localhost','test','password'); $db_name = 'test'; mysql_select_db($db_name,$db); // 処理対象テーブル $tbl_name1 = "client_master"; $tbl_name2 = "jobmaster0717"; // 内部結合(INNER JOIN句) $str_sql1 = "SELECT * FROM {$tbl_name1}" . " INNER JOIN {$tbl_name2}" . " ON {$tbl_name1}.company_ID" . " = {$tbl_name2}.client_ID;"; $rs1 = mysql_query($str_sql1,$db); print "\"{$str_sql1}\"<br>\n"; // 結果セットの表示 show_rs($rs1,$db); print "<br>\n"; // 結果セット(結果ID)の開放 mysql_free_result($rs1); // データベースサーバの切断 mysql_close($db); ?>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
以下5点気をつけるとかなり精度があがるとおもいます。 1)SQL文はヒアドキュメントをつかって書く 2)テーブル名やフィールド名はバッククォートでくくる。 3)SQLのケツに終端子「;」や「\G」はつけない。 4)デバッグのときにはdieでエラーを拾ってやる 5)そもそもSELECTの際にフィールド無指定「*」は使わない 例) $sql =<<<eof SELECT * FROM `{$tbl_name1}` INNER JOIN `{$tbl_name2}` ON `{$tbl_name1}`.`company_ID`=`{$tbl_name2}`.`client_ID` eof; $rs1 = mysql_query($sql,$db) or die(sql.";<br>".mysql_error()");
- chukenkenkou
- ベストアンサー率43% (833/1926)
>ONの後に()が無いみたいですけど >関係ないですか? 条件式を不要な()でくくる人がいますが、SQLだけのことを言うなら、今回のように単一の条件式の場合、()は不要です。
- samdeco
- ベストアンサー率30% (6/20)
<?php // データベースサーバへの接続・データベースの選択 $db = mysql_connect('localhost','test','password'); $db_name = 'test'; mysql_select_db($db_name,$db); // 処理対象テーブル $tbl_name1 = "client_master"; $tbl_name2 = "jobmaster0717"; // 内部結合(INNER JOIN句) $str_sql1 = "SELECT * FROM {$tbl_name1}" . " INNER JOIN {$tbl_name2}" . " ON ({$tbl_name1}.company_ID" . " = {$tbl_name2}.client_ID);"; $rs1 = mysql_query($str_sql1,$db); print "\"{$str_sql1}\"<br>\n"; // 結果セットの表示 show_rs($rs1,$db); print "<br>\n"; // 結果セット(結果ID)の開放 mysql_free_result($rs1); // データベースサーバの切断 mysql_close($db); ?> これで動きませんか、 またPHPのエラーはなんとでているでしょうか?
- samdeco
- ベストアンサー率30% (6/20)
PHPはよくわからないのであれですが、 SQL単体では動くのでしょうか?コマンドラインなどから SELECT * FROM client_master INNER JOIN jobmaster0717 ON (client_master.company_ID = jobmaster0717.client_ID) ONの後に()が無いみたいですけど 関係ないですか?
補足
samdecoさん、ありがとうございます。 『phpMyAdmin』で試したところ、動きました。 私は、すべて素人で参考書みながら、やっているのですが SQL単体で動くけど、PHPで動かないというのをいくつか抱えていて 困っております。