2013-03-25 105 views
0

我在尝试使用PHP/MySQl-AJAX调试此查询时出现问题: 变量$ param是表单文本框上的AJAX调用的结果。实质上,我试图在三个数据库表上生成一个动态搜索,但不幸的是它们有不同的字段(因此是concat)。数据是具有使用不同方法生成的空间位置(前两个表)的作业的地址,最后一个表是非空间数据。PHP,MySQL UNION查询错误

  $fetch = "(SELECT JobNo AS JobNo, CONCAT(Title1, '-', Title2, '-', Title3) AS Description, 'Hurricane' as type FROM Hurricanev2 WHERE Title1 REGEXP '$param' OR Title2 REGEXP '$param' OR Title3 REGEXP '$param') 
     UNION ALL 
     (SELECT jobNo AS JobNo, description As Description, address As Geocoded_address, 'geocoded' as type FROM jr WHERE description REGEXP '$param' OR address REGEXP '$param') 
     UNION ALL 
     (SELECT job As JobNo, description As Description, 'plan' as type FROM register WHERE description REGEXP '$param')"; 


    while ($row = mysql_fetch_object($fetch)) { 

     $sResults .= '<tr>'; 
     $sResults .= '<td>' . $row['JobNo'] . '</td>'; 
     $sResults .= '<td>' . $row['Description'] . '</td></tr>'; 
    } 

在此先感谢

+0

什么是完整的错误消息/ – 2013-03-25 03:32:03

回答

0

工会,你需要为每一个选择相同的列数。尝试在第一个和最后一个SELECT中添加一个额外的空值,即使在out中也是如此

1

不能合并具有不同列数的结果集。

请尝试以下操作;

$fetch = "(SELECT JobNo AS JobNo, CONCAT(Title1, '-', Title2, '-', Title3) AS Description, 'Hurricane' as type, 'extra' FROM Hurricanev2 WHERE Title1 REGEXP '$param' OR Title2 REGEXP '$param' OR Title3 REGEXP '$param') 
    UNION ALL 
    (SELECT jobNo AS JobNo, description As Description, address As Geocoded_address, 'geocoded' as type FROM jr WHERE description REGEXP '$param' OR address REGEXP '$param') 
    UNION ALL 
    (SELECT job As JobNo, description As Description, 'plan' as type, 'extra' FROM register WHERE description REGEXP '$param')"; 
+0

感谢蒂姆和李,两种方法working..however我没有得到任何查询结果。我认为这可能是AJAX变量来查询数据库在向下键击,但我不知道..任何想法? – user1896319 2013-03-25 04:54:47