0

我在尝试使用 PHP/MySQl-AJAX 调试此查询时遇到问题:变量 $param 是表单文本框上 AJAX 调用的结果。本质上,我正在尝试对三个数据库表进行动态搜索,这些表不幸地具有不同的字段(因此是 concat)。数据是具有使用不同方法生成的空间位置(对于前两个表)的作业的地址,最后一个表是非空间数据。

            $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>';
    }

提前致谢

4

2 回答 2

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')";
于 2013-03-25T03:32:53.200 回答
0

对于 UNION,您需要为每个 SELECT 提供相同数量的列。尝试在第一个和最后一个 SELECT 上添加一个额外的 null 以均匀输出。

于 2013-03-25T03:32:41.897 回答