2017-01-30 5 views
0

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

  --------------------------------------- 
      id_term | keyword      | 
      ------- | ----------------------------- 
       1 | how to make search engine | 
       2 | application engineering  | 
       3 | android application example | 
      -------------------------------------- 

, то я хочу, чтобы это было как этот стол:

  ---------------------------------- 
      | id_term | keyword    | 
      ---------------------------------- 
        1 | how     | 
        1 | to     | 
        1 | Make     | 
        1 | search    | 
        1 | engine    | 
        2 | application   | 
        2 | engineering   | 
        3 | example    | 
        3 | application   | 
        3 | android    | 
      ---------------------------------- 

I «Пробовал поиск в Google, чтобы найти ссылки на разделение строки, но до сих пор не нашел соответствующих ожиданий. В эксперименте, который я сделал, используя результаты SUBSTRING_INDEX я мог так:

   --------------------------------------- 
       id_term | keyword      | 
       ------- | ------------------------------- 
        1 | how to make search engine | 
        1 | how to make search engine | 
        1 | how to make search engine | 
       -------------------------------------- 

есть все, что вы можете мне помочь или есть решение моей проблемы? MySQL код, который я пытаюсь что-то вроде этого:

select term.id_kata, SUBSTRING_INDEX (SUBSTRING_INDEX (term.keyword, ',', term.id_kata), ',', -1) keyword term from inner join keyword_doc on CHAR_LENGTH (term.keyword) -CHAR_LENGTH (REPLACE (term.keyword , ',', ''))> = term.id_kata-1 ORDER BY `term`.`keyword` DESC 

Я пробовал прибегая к помощи в течение приблизительно 5 часов, чтобы найти решение, но не нашел, пока я не был смущен, чтобы спросить, где. есть ли какие-либо идеи или может помочь обеспечить решение?

+0

Возможного дубликат [значений расщепленной SQL в нескольких строк] (http://stackoverflow.com/questions/17942508/sql-split-values-to-multiple-rows) –

+0

MySQL не обязательно является лучшим инструментом для очистки данных таким образом. Вы также используете любые языки приложений? –

+0

Tim Biegeleisen: да, я тоже использую PHP, я хочу выполнить это из php – user3718278

ответ

0

Решение проблемы: пожалуйста, возьмите «МЕЖДУ» в SQL SYNTAX. этот код 100% работа для него проблема:

 <?php 
     #connection 
     $dbhost = 'localhost'; 
     $dbuser = 'root'; 
     $dbpass = 'pasword'; 
     $dbname = 'yourdatabasename'; 
     error_reporting(E_ALL^E_DEPRECATED); 
     mysql_connect($dbhost,$dbuser,$dbpass) or die(mysqli_error('cannot connect to the server')); 
     mysql_select_db($dbname) or die(mysqli('database selection  problem')); 

    $frequency = array(); 
    $datastring = 'SELECT id_term,keyword FROM data_token WHERE id_term BETWEEN 1 AND 3'; 
    mysql_select_db('yourdatabasename'); 
    $calldata = mysql_query($datastring); 
    while($takedata = mysql_fetch_array($calldata,MYSQL_ASSOC)) 
    { 
    $array = explode("\n",$takedata['keyword']); 
     foreach ($array as $index => $keyword) 
     { 
      if(! array_key_exists($keyword,$frequency)) 
      { 
       $frequency[$keyword] = 1; 
      } 
      else 
      { 
       $frequency[$keyword] = $frequency[$keyword] + 1; 
      } 
     } 

     $document = $takedata['id_term']; 
     foreach ($frequency as $term => $tf) 
     { 
      $sqlInput = "INSERT INTO yourtablename (id_term,keyword,frequency) VALUES ('$dokumen','{$term}', {$tf})"; 
      mysql_query($sqlInput); 
      } 
     } 

    ?> 
Смежные вопросы