За последние 24 часа нас посетил 17791 программист и 1644 робота. Сейчас ищут 1814 программистов ...

Поиск по всем полям

Тема в разделе "MySQL", создана пользователем biperch, 20 июн 2009.

  1. biperch

    biperch Активный пользователь

    С нами с:
    6 июн 2009
    Сообщения:
    28
    Симпатии:
    0
    Есть две таблицы private, business
    нужно произвести поиск по всем полям обеих таблиц и вывести поля таблици приват
    таблицы связаны privat.id=business.id
    Формирую запрос:
    PHP:
    1. $result=mysql_query("desc private;");
    2.  
    3.        $q="select private.* from private INNER JOIN business ON private.id=business.private_id where ";
    4.        $i=0;
    5.        while($m=mysql_fetch_row($result)){
    6.         if($i>0) $q.=" OR ";
    7.         $q.=" private.".$m[0]." LIKE '%".$find_text."%' ";
    8.  
    9.         $i+=1;
    10.        }
    11.  
    12.  
    13.  
    14.  
    15.        $result=mysql_query("desc business;");
    16.        $i=0;
    17.        while($m=mysql_fetch_row($result)){
    18.         if($i>0) $q.=" OR ";
    19.         $q.=" business.".$m[0]." LIKE '%".$find_text."%' ";
    20.  
    21.         $i+=1;
    22.        }
    23.        $q.=";";
    24.        echo $q;
    25.        $result=mysql_query($q)or die (mysql_error());
    26.        view($result);
    27.  
    получается запрос
    [sql]select private.* from private INNER JOIN business ON private.id=business.private_id
    where private.User_id LIKE '%Юра%' OR private.First_name LIKE '%Юра%' OR private.Middle_name LIKE '%Юра%' OR private.Last_name LIKE '%Юра%' OR private.Address_home LIKE '%Юра%' OR private.Tel_home LIKE '%Юра%' OR private.Tel_fax LIKE '%Юра%' OR private.Tel_mobile LIKE '%Юра%' OR private.Pager LIKE '%Юра%' OR private.Email LIKE '%Юра%' OR private.IM_address LIKE '%Юра%' OR private.Website LIKE '%Юра%' OR private.Birth_date LIKE '%Юра%' OR private.Anniversary LIKE '%Юра%' OR private.id LIKE '%Юра%' OR private.visible LIKE '%Юра%' business.Company LIKE '%Юра%' OR business.Job_title LIKE '%Юра%' OR business.Department LIKE '%Юра%' OR business.Address_business LIKE '%Юра%' OR business.Address_branch LIKE '%Юра%' OR business.Tel_business LIKE '%Юра%' OR business.Tel_mobile LIKE '%Юра%' OR business.Tel_assistant LIKE '%Юра%' OR business.Tel_Direct_line LIKE '%Юра%' OR business.Pager LIKE '%Юра%' OR business.Email_business LIKE '%Юра%' OR business.IM_address LIKE '%Юра%' OR business.Website LIKE '%Юра%' OR business.id LIKE '%Юра%' OR business.user_id LIKE '%Юра%' OR business.private_id LIKE '%Юра%' ;[/sql]


    После выполнения запроса выдает ошибку:
    Код (Text):
    1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'business.Company LIKE '%Юра%' OR business.Job_title LIKE '%Юра%' OR business' at line 1
    Кто сможет посмотрите в чем проблема и проверте правильно ли у меня запрос составлен
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Пропущен or перед указанной строкой (business.Company LIKE).

    Проблема возникает из-за $i=0 в строке 16 ибо проверка в строке 18 всегда возвращает false.
     
  3. biperch

    biperch Активный пользователь

    С нами с:
    6 июн 2009
    Сообщения:
    28
    Симпатии:
    0
    Большое спасибо, я походу протупил $i=0; убрал и поменя л INNER JOIN на LEFT JOIN запахало