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

您需要将 更新为表?中列的名称COMPANY,而不是n_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 回答