2013-03-25 4 views
0

У меня возникла проблема с отладкой этого запроса с помощью PHP/MySQl-AJAX: Переменная $ param является результатом вызова AJAX в текстовом поле формы. В сущности, я пытаюсь создать динамический поиск по трем таблицам базы данных, которые, к сожалению, имеют разные поля (следовательно, concat). Данные - это адреса заданий, которые имеют пространственное местоположение (для первых двух таблиц), сгенерированных с использованием разных методов, последняя таблица - это не пространственные данные.PHP Ошибка MySQL UNION Query Error

  $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

что полное сообщение об ошибке/ –

ответ

0

для UNION вы должны иметь одинаковое число столбцов для каждого SELECT. Попробуйте добавить дополнительный нуль для первого и последнего SELECT, чтобы даже выйти из него.

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

спасибо Тим и Ли, оба подхода worked..however я не получаю никаких результатов запроса. Я думаю, что это может быть переменная AJAX, в которой запрашиваются базы данных по нажатию клавиши, но я не уверен ... какие-либо идеи? – user1896319