За последние 24 часа нас посетили 19030 программистов и 1631 робот. Сейчас ищет 901 программист ...

организовать поиск по всем полям у взаимосвязанных таблиц

Тема в разделе "PHP и базы данных", создана пользователем fanat190, 26 ноя 2013.

  1. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Всем привет. Есть например 4 таблицы клиент, проект, этап, документ. связваны они по id. Вопрос: как мне можно организовать поиск по всем полям этих 4 таблиц.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: организовать поиск по всем полям у взаимосвязанных табли

    SELECT *
    FROM клиент u
    LEFT JOIN проект p ON p.uid=u.id
    LEFT JOIN этап e ON e.uid=u.id
    LEFT JOIN документ d ON d.uid=u.id
    WHERE u.id=? OR p.id=? OR e.id=? OR d.id=?

    или ищите по любым другим полям....
    OR, AND уже сами комбинируйте тоже
     
  3. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Re: организовать поиск по всем полям у взаимосвязанных табли

    ага, спасибо. сейчас попробую. только не совсем понимаю, а оператор LIKE не нужно использовать?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Re: организовать поиск по всем полям у взаимосвязанных табли

    попробовать было бы быстрее, чем спросить, нет?
     
  5. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Re: организовать поиск по всем полям у взаимосвязанных табли

    я пробовал. только не получалось. вот какой запрос я писал
    $q = "SELECT clientt.name_clientt, proekt.name_proekt, etap.name_etap FROM clientt, proekt, etap, dokument WHERE clientt.id_clientt=proekt.id_clientt and proekt.id_proekt=etap.id_proekt and proekt.id_proekt=dokument.id_proekt and etap.id_etap=dokument.id_etap and proekt.name_proekt and clientt.name_clientt LIKE '%$query%' or LIKE '%$query%' or etap.name_etap LIKE '%$query%'";
    где $query это то что мы вводим в текстовое поле
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: организовать поиск по всем полям у взаимосвязанных табли

    Это что?
     
  7. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Re: организовать поиск по всем полям у взаимосвязанных табли

    это я здесь описался. у меня
    clientt.name_clientt LIKE '%$query%' or proekt.name_proekt LIKE '%$query%' or etap.name_etap LIKE '%$query%'";
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Re: организовать поиск по всем полям у взаимосвязанных табли

    если НЕ работает, должно быть сообщение об ошибке - получай его в mysql_error() или mysqli_error() что там у тебя.
    отлаживайся: http://phpfaq.ru/debug
     
  9. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Re: организовать поиск по всем полям у взаимосвязанных табли

    если я все правильно сделал. написал в mysql_error("SELECT ....дальше весь свой запрос"), то он выдает следующую ошибку
    Warning: mysql_error() expects parameter 1 to be resource, string given in /
     
  10. fanat190

    fanat190 Новичок

    С нами с:
    19 ноя 2013
    Сообщения:
    27
    Симпатии:
    0
    Re: организовать поиск по всем полям у взаимосвязанных табли

    вроде бы сделал, все выводится как надо
    код
    $q = "SELECT *
    FROM clientt
    LEFT JOIN proekt ON clientt.id_clientt=proekt.id_clientt
    LEFT JOIN etap ON etap.id_proekt=proekt.id_proekt
    LEFT JOIN dokument ON dokument.id_proekt=proekt.id_proekt AND dokument.id_etap=etap.id_etap
    WHERE name_clientt LIKE '%$$query%'
    OR proekt.name_proekt LIKE '%$query%'
    OR etap.name_etap LIKE'%$query%'
    OR dokument.name_dokument LIKE '%$query$'
    ";

    всем спасибо)