2016-07-28 80 views
0

我试图通过执行以下查询的PHP应用程序来填充表:SQL错误在PHP返回的查询与联接

$sql3 = "SELECT distinct(`t1.testName`), `t2.comments AS C1` from `sample AS t1` left join `sample AS t2` ON `t1.testName`= `t2.testName` where `t1.buildNumber`= 181 and `t2.buildNumber`= 180 and `t1.errorStackTrace` is not null"; 

$result3 = mysqli_query($dbconnect,$sql3); 

if(!mysqli_query($dbconnect, $sql3)){ 
    printf("error message: %s\n",mysqli_error($dbconnect)); 
} 

我看到下面的错误返回:

error message: Table 'testdata.sample as t1' doesn't exist 

我已经尝试了很多来解决这个问题,但不能。在MySQL上运行时查询运行良好。 任何帮助,将不胜感激。 谢谢

+0

使用适当的反引号或从示例AS t1中删除'$ sql3 =“SELECT distinct(t1.testName),t2.comments AS C1 left left join sample AS t2 ON t1.testName = t2.testName其中t1.buildNumber = 181和t2.buildNumber = 180和t1 .errorStackTrace不为空“; ' –

回答

1

您必须使用反引号唯一的角落找寻表名或列名不包括别名:

$sql3 = "SELECT distinct(`t1`.`testName`), `t2`.`comments` AS C1 from `sample` AS ` left join `sample` AS t2 ON t1.testName= t2.testName where t1.buildNumber= 181 and t2.buildNumber= 180 and t1.errorStackTrace is not null"; 
+0

谢谢@Jens它的工作 – Saurabh

1

您正在错误地转义表名称。使用这个原始查询:

SELECT DISTINCT(t1.testName), 
     t2.comments AS C1 
FROM `sample` AS t1 
LEFT JOIN `sample` AS t2 
    ON t1.testName = t2.testName 
WHERE t1.buildNumber = 181 AND 
     t2.buildNumber = 180 AND 
     t1.errorStackTrace IS NOT NULL 

我不认为你真的需要任何反引号。但是在任何情况下,只有列名称需要反拨,而不是别名,例如,

t1.`testName` but NOT `t1.testName` 
0

错反引号,试试这个:

$sql3 = "SELECT distinct(t1.`testName`), t2.`comments` AS C1 from `sample` AS t1 left join `sample` AS t2 ON t1.`testName`= t2.`testName` where t1.`buildNumber`= 181 and t2.`buildNumber`= 180 and t1.`errorStackTrace` is not null";