2013-03-25 124 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