Jump to content


Photo

Fallo en consulta FULL TEXT

MySQL

  • Please log in to reply
5 replies to this topic

#1 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 posts

Posted 31 May 2016 - 05:25 AM

Buenas a todos,

 

Realizo una consulta FULL TEXT para que me haga una búsqueda por varios campos de una tabla. Pues bien, me hace la búsqueda por todos los campos menos por uno, lo cual me parece muy extraño, pero le doy vueltas y no alcanzo a saber el por qué.

 

La consulta es la siguiente:


delphi
  1. datamodule1.ZQuery1.SQL.Clear;
  2. datamodule1.ZQuery1.SQL.Add('SELECT ID_USUARIO, EAN, NOMBRE, APELLIDOS,CODIGO_SOCIO,TIPO_USUARIO,');
  3. datamodule1.ZQuery1.SQL.Add('case AUTORIZADO when 1 then :F2 when 0 then :F3 end AS ACCESO,');
  4. datamodule1.ZQuery1.SQL.Add('case CARNET when 1 then :F4 when 0 then :F5 end AS CARNET,');
  5. datamodule1.ZQuery1.SQL.Add('case ESTADO when 1 then :F7 when 0 then :F6 end AS ESTADO');
  6. datamodule1.ZQuery1.SQL.Add('FROM USUARIO');
  7. datamodule1.ZQuery1.SQL.Add('WHERE MATCH(EAN,NOMBRE,APELLIDOS,CODIGO_SOCIO,CIF) AGAINST(:F1 IN BOOLEAN MODE)');
  8. datamodule1.ZQuery1.ParamByName('F1').AsString := '*' + edit1.Text + '*';
  9. datamodule1.ZQuery1.ParamByName('F2').AsString := 'AUTORIZADO';
  10. datamodule1.ZQuery1.ParamByName('F3').AsString := 'DENEGADO';
  11. datamodule1.ZQuery1.ParamByName('F4').AsString := 'SI';
  12. datamodule1.ZQuery1.ParamByName('F5').AsString := 'NO';
  13. datamodule1.ZQuery1.ParamByName('F6').AsString := 'AUSENTE';
  14. datamodule1.ZQuery1.ParamByName('F7').AsString := 'PRESENTE';
  15. datamodule1.ZQuery1.Active := True;

Resulta que la consulta por los campos EAN, NOMBRE, APELLIDOS, Y CIF lo hace perfectamente, sin embargo cuando introduzco un CODIGO_SOCIO no me muestra ningún resultado, y por supuesto, hay datos de ese campo.

Como es una búsqueda FULL TEXT, en engine de la tabla es MyISAM. El índice creado para tal efecto, os lo adjunto en el post.

Attached File  FULLTEXT.jpg   31.53KB   1 downloads

 

Muchas gracias por vuestro tiempo.

Un saludo

 

 

 


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 31 May 2016 - 07:31 AM

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.
  • 0

#3 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 31 May 2016 - 08:20 AM

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.

 

Saludos.

 

En teoría deberías juntar todos los campos en un solo para realizar la consulta por el mismo, dicho campo contendría la combinación de los distintos campos con ello distintos tipos de datos.

 

Usualmente se construye una tabla con el campo principal de la otra tabla (por ejemplo: ClienteId) y uno tipo texto con la combinación de campos, realizando así la búsqueda por dicho campo.


  • 0

#4 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 posts

Posted 31 May 2016 - 10:23 AM

A mi entender las búsquedas Full-Text sólo aplica a campos de textos, no numéricos.

Todos los campos indicados son varchar(50)
  • 0

#5 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 posts

Posted 31 May 2016 - 10:36 AM

Saludos.

En teoría deberías juntar todos los campos en un solo para realizar la consulta por el mismo, dicho campo contendría la combinación de los distintos campos con ello distintos tipos de datos.

Usualmente se construye una tabla con el campo principal de la otra tabla (por ejemplo: ClienteId) y uno tipo texto con la combinación de campos, realizando así la búsqueda por dicho campo.


En teoría por eso se crea el índice tal y como he puesto en el post, para 'crear' ese campo que agrupe a todos los implicados en la búsqueda. Pero sigo sin entender por qué busca bien por todos los campos menos por el de CODIGO_SOCIO, siendo todos campos tipo texto
  • 0

#6 jmonfor

jmonfor

    Member

  • Miembros
  • PipPip
  • 20 posts

Posted 06 June 2016 - 01:08 AM

Saludos a todos nuevamente,

 

he seguido probando varias opciones, pero sigo sin solucionar el problema que os he planteado.

 

Necesito un poco más de orientación.

 

Gracias por vuestro tiempo


  • 0





Also tagged with one or more of these keywords: MySQL

IP.Board spam blocked by CleanTalk.