'未知表'虽然它确实存在

时间:2010-06-20 17:35:47

标签: php mysql mysql-error-1051

$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%。我错过了什么?

修改:当我使用右连接或左连接而不是完全连接时,它可以工作......但我需要完全加入。哦,我会射杀某人。

2 个答案:

答案 0 :(得分:2)

MySQL中没有完整的外部联接 - 请参阅this link for how to get the functionality

$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

答案 1 :(得分:0)

我用自己的表替换了表和列并运行了查询,并且出现了相同的错误。删除查询的不同部分给了我更多与不存在的列或表相关的错误。我没有解释,可能是因为我从未使用过FULL JOIN。

我发现将FULL JOIN更改为其他类型的连接修复了该问题。尝试将FULL JOIN更改为JOIN或RIGHT JOIN并查看这些结果是否符合您的要求。

编辑:哦,我看到你关于现在需要FULL JOIN的评论。你能用UNION改写查询吗?