За последние 24 часа нас посетили 18969 программистов и 1639 роботов. Сейчас ищут 879 программистов ...

Как внести данные из одной таблицы в другую?

Тема в разделе "PHP и базы данных", создана пользователем davidoff, 13 сен 2015.

  1. davidoff

    davidoff Guest

    есть две таблицы:
    dolzgnost
    Код (Text):
    1. id int(5)                       1            2
    2. name_dolzgnost   varchar      director    menedger
    kandidat
    Код (Text):
    1. id_kand(5)              1
    2. name_kand  text     текст какой то текст director опять текст
    3. dolznost_kand
    в таблицу kandidat в поле text загружается через форму текст.
    Во время сохранения необходимо чтоб программа искала в тексте совпадения с данными из name_dolzgnost , то есть поиск в тексте слов director, menedger . если программа находит эти слова в тексте то вносит их в поле dolznost_kand (возможно лучше сохранять id_kand) .

    То есть, мне необходимо в тексте находить определенные слова а потому выводить их в браузер если они там есть.
    Как это сделать?
    Возможно есть более лучшее решение?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Код (PHP):
    1. $words = explode(' ', 'текст какой то текст director опять текст');
    2. $sql = "SELECT ... WHERE `director`=IN(".implode('","', $words).")";
    3.  
    но так делать не надо, может подробнее распишешь задачу, возможно есть другой алгоритм, который не поджарит проц сервера
     
  3. davidoff

    davidoff Guest

    Постараюсь описать подробно со стороны пользователя.

    1. на странице в форму вносится текст резюме сотрудника Иванова . текст 100 - 200 слов. методом POST вносится в таблицу kandidat в поле text .

    2. есть справочная таблица name_dolzgnost , в ней внесены значения "менеджер" и "директор" в поле name_dolzgnost.

    3. после того, как сохраняется резюме Иванова , программа должна проверить текст резюме с целью найти слова: "менеджер" и "директор" . Если находит , то вносит найденое слово (или id_dolzgnost) в запись Иванова .

    4. Конечная цель - когда резюме Иванова будет выводится на страницу, там должны выводится найденые слова.
    То есть, чтоб глазами не перебирать 200 слов резюме, пргограма выводит на страницу что Иванов - менеджер.

    5. так же (я так думаю) по этим найденым словам будет проводится поиск (может я не правильно мыслю).

    Это сложно? Как это сделать?
    надеюсь я понятно описал задачу.
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Уже становиться понятнее.
    Если я правильно понял, то через mysql это будет очень медленно.
    Попробуй воспользоваться Sphinx Open Source Search Engine.

    У тебя в таблице dolzgnost будет много записей?
     
  5. davidoff

    davidoff Guest

    грустно.
    А что имеено медленно, сохранять нового кандидата ?
    Я ещё mysql толком не освоил, братся за новую субд, даже не знаю...

    в таблице dolzgnost должно быть записей 20. не думаю что больше, думаю даже меньше . Это справочник названия должностей.
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Мне сложно понять, давай ты выложишь таблицу dolzgnost с 20 записями и 3-4 текста для примера
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при отрисовке не проще подсвечивать?
     
  8. davidoff

    davidoff Guest

    Ещё раз - во время внесения резюме сотрудника в талбицу kandidat программа должна найти совпадения в тексте с должностями в таблице dolzgnost. Если программа находит совпадения, то вносит их в таблицу kandidat (необходимые поля надо будет создать для внесения).

    Код (Text):
    1. Структура таблицы `dolzgnost`
    2. --
    3.  
    4. CREATE TABLE IF NOT EXISTS `dolzgnost` (
    5.   `id_dol` int(5) NOT NULL AUTO_INCREMENT,
    6.   `name_dol` varchar(50) NOT NULL,
    7.   PRIMARY KEY (`id_dol`)
    8. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
    9.  
    10. --
    11. -- Дамп данных таблицы `dolzgnost`
    12. --
    13.  
    14. INSERT INTO `dolzgnost` (`id_dol`, `name_dol`) VALUES
    15. (1, 'менеджер'),
    16. (2, 'торговый представитель'),
    17. (3, 'продавец'),
    18. (5, 'Региоанльный представитель'),
    19. (19, 'мерчендайзер'),
    20. (20, 'территориальный менеджер'),
    21. (21, 'Начальник отдела продаж');
    таблица с резюме кандидатов

    Код (Text):
    1. Структура таблицы `kandidat`
    2. --
    3.  
    4. CREATE TABLE IF NOT EXISTS `kandidat` (
    5.   `id_candidat` int(10) unsigned NOT NULL AUTO_INCREMENT,
    6.   `rezum_txt` varchar(255) NOT NULL,
    7.   `id_dol` int(5) NOT NULL,
    8.   PRIMARY KEY (`id_candidat`),
    9.   KEY `id_dol` (`id_dol`)
    10. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
    11.  
    12. --
    13. -- Дамп данных таблицы `kandidat`
    14. --
    15.  
    16. INSERT INTO `kandidat` (`id_candidat`, `rezum_txt`, `id_dol`) VALUES
    17.  
    18. (9, 'иванова \r\n06.2007—04.2008 10 месяцев Менеджер визового отдела/отдела продаж ООО "Мондо Турс", г. Москва, полная занятость. - приём и оформление документов на шенгенские визы - приём и оформление документов на визу в США и Великобританию - общение с клиент', 1),
    19.  
    20. (10, 'Василий Чеботарев 01.2013 — 03.2015 (2 года 2 месяца) GmbH BVburo55, г. За рубежом Продажи Управляющий небольшого магазина в западной Европе - Организация работы магазина с нуля. - Подбор, обучение и мотивация персонала. - Отслеживание запасов товара и пр', 1),
    21.  
    22. (11, 'Сверидов Никита   Руководитель направления 08.2006–03.2011 Фирма - оператор спутникового противоугонного комплекса ЭШЕЛОН , Автомобили/запчасти/шины  С августа 2006 года по апрель 2008 года - руководитель направления (продвижение бренда, продажи дополните', 1);
    Как это сделать?
    возможно как то так?:
    Код (PHP):
    1. 'INSERT INTO kandidat (dolzgnost) 
    2.             SELECT text FROM kandidat WHERE id=$id AND (kandidat LIKE менеджер)'
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Третья таблица поможет.
     
  10. davidoff

    davidoff Guest

    То что третью таблицу надо достроить это я уже понял. Но вопрос как проверить есть ли совпадения в таблице kandidat \ поле rezume_txt с значениями таблицы dolzgnost /name_dol?
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    По айдишнику