0
$query = mysql_query("SELECT company.*, factory.*
                      FROM company
                      FULL JOIN factory
                      ON company.n_id = factory.n_id
                      WHERE company.n_id = '$n_id' AND factory.n_id = '$n_id'") or die(mysql_error());


上に私のクエリがあります。エラーが発生しますUnknown table 'company'が、会社のテーブルは 100% 存在します。私は何が欠けていますか?

編集:完全結合の代わりに右結合または左結合を使用すると機能します...しかし、完全結合が必要です。ああ、私は誰かを撃ちます。

4

2 に答える 2

2

MySQL には FULL OUTER JOIN はありません。機能を取得する方法については、このリンクを参照してください。

$query = mysql_query("     SELECT * FROM COMPANY c
                       LEFT JOIN FACTORY f ON f.n_id = c.n_id
                      UNION ALL
                          SELECT * FROM COMPANY c
                      RIGHT JOIN FACTORY f ON f.n_id = c.n_id
                           WHERE c.? IS NULL
                             AND c.n_id = mysql_real_escape_string($n_id)
                             AND f.n_id = mysql_real_escape_string($n_id)") or die(mysql_error());

以外?のテーブルの列の名前になるようにを更新する必要があります。COMPANYn_id

于 2010-06-20T17:52:54.247 に答える
0

テーブルと列を自分のものに置き換えてクエリを実行しましたが、同じエラーが発生しました。クエリのさまざまな部分を削除すると、存在しない列またはテーブルに関連するエラーが増えました。おそらく、FULL JOINを使用したことがないため、その説明はありません。

FULL JOIN を別のタイプの結合に変更すると、問題が解決することがわかりました。FULL JOIN を JOIN または RIGHT JOIN に変更してみて、それらの結果が希望どおりになるかどうかを確認してください。

編集:ああ、今すぐFULL JOINが必要だというあなたのコメントを見ました。代わりに UNION でクエリを書き直していただけますか?

于 2010-06-20T17:51:19.797 に答える