2011-12-10 15 views
1

非常に単純なJoinステートメントを使用することさえできません。ここに私のコードです:MYSQL結合ステートメントが動作しない場合

$query = "SELECT * FROM (Left) JOIN (Right) ON (Left.id=Right.id)"; 

$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 

echo "query: " . $query . "<br>result: " . $result . "<br>num rows: " . $num_rows; 

そして、ここでそれを出力するものである:()はmysql_num_rows:

警告を与えられた引数は、ライン上のXXXX \ join.phpに有効なMySQLの結果リソースではありません16

クエリ:

NUM行::

(右)ON(Left.id = Right.id)

結果を登録しよう(左)SELECT * FROM

別のホストのWebサイトで全く同じコードを使用していましたが、うまくいきましたが、これには何もできません。私はこの前にJoinステートメントを使用したことがないので、私が何か間違っているかどうか、またはホストが無効にしているもののために動作していないかどうかはわかりません。私はこのウェブサイトにIpowerを使用しています。

+3

あなたのテーブルは本当に左と右の名前ですか?それらは予約語であり、働くために[]に入れなければならないかもしれません。 *常にフィールド名を定義することを選択しないでください。 – xQbert

+0

接続に問題がある可能性があります(例:username/passwordが間違っています)。あなたはそれを確認しましたか? –

答えて

-2

「結合」の直前に「内側」を追加することができます。

これは私の最初の推測でしょう - それは実際には内部結合です。

第2の推測は、次のように書き直すことです。

SELECT * FROM (左)、(右)完全にSQLからキーワードへの参加の削除 どこLeft.id = Right.id

'join'キーワードを推測すると問題が発生しています。

+0

'JOIN'キーワードはどのように問題を引き起こす可能性がありますか? –

+1

'SELECT * FROM(左)、(右)Left.id = Right.id'は動作しません(構文エラー)カンマはINNER JOINキーワードと同じになります。 LEFTとRIGHTという単語は、JOIN節でエスケープする必要があります。期間。 –

0

あなたのテーブルが真に左右(真剣にそれらの名前を変更を検討)、その後、次の構文がうまくいくと命名されている場合:左と右が予約されているため

SELECT * FROM `Left` JOIN `Right` ON `Left`.id=`Right`.id 

しかし、私は強く、それらのテーブルの名前を変更する助言するキーワードおよびこれらのテーブル名をエスケープしないで使用することで、より多くの構文上の問題を実行します。テーブル名としてLeft/Rightを使用しているため、現在書かれているクエリは構文的に正しくありません。

私はあなたがそれらのカッコで何をしようとしているのか本当に分かりません。

(Left) JOIN (Right) 

は明らかにナンセンスである

LEFT JOIN RIGHT 

を意味します。 JOIN句でLEFTとRIGHTという言葉をエスケープしなければなりません。

関連する問題