• 締切済み

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); ?>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

以下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()");

回答No.3

>ONの後に()が無いみたいですけど >関係ないですか? 条件式を不要な()でくくる人がいますが、SQLだけのことを言うなら、今回のように単一の条件式の場合、()は不要です。

  • samdeco
  • ベストアンサー率30% (6/20)
回答No.2

<?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)
回答No.1

PHPはよくわからないのであれですが、 SQL単体では動くのでしょうか?コマンドラインなどから SELECT * FROM client_master INNER JOIN jobmaster0717 ON (client_master.company_ID = jobmaster0717.client_ID) ONの後に()が無いみたいですけど 関係ないですか?

sergero
質問者

補足

samdecoさん、ありがとうございます。 『phpMyAdmin』で試したところ、動きました。 私は、すべて素人で参考書みながら、やっているのですが SQL単体で動くけど、PHPで動かないというのをいくつか抱えていて 困っております。

関連するQ&A