Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

que esta mal en esta consulta?

Estas en el tema de que esta mal en esta consulta? en el foro de Mysql en Foros del Web. hola tengo una consulta que consegui por internet pero no me devulve resultados... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $cadbusca = "       ...
  #1 (permalink)  
Antiguo 08/11/2011, 12:40
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
que esta mal en esta consulta?

hola tengo una consulta que consegui por internet pero no me devulve resultados...


Código PHP:
Ver original
  1. $cadbusca= "
  2.            SELECT *,
  3.                MATCH(nombre_real,nombre_real_en) AGAINST('$busqueda') AS score
  4.                FROM buscar
  5.            WHERE MATCH(nombre_real,nombre_real_en) AGAINST('$busqueda')
  6.            ORDER BY score DESC
  7.        ";

Código PHP:
Ver original
  1. $result=mysql_query($cadbusca) or die(mysql_error());
  2. if(mysql_num_rows($result)>0){
  3. while($row=mysql_fetch_array($result)){
  4.  //Mostramos los titulos de los articulos o lo que deseemos...
  5. echo $row['nombre_real'];
  6. }
  7. }else{
  8.    
  9. echo "No hay resultados ;)";   
  10.    
  11. }



o sea siempre me devuelve no hay resultados..pero si hay en la tabla O.o que sucede? ayuda gracias
  #2 (permalink)  
Antiguo 08/11/2011, 12:46
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: que esta mal en esta consulta?

Abriste la conexión con la base de datos?
  #3 (permalink)  
Antiguo 08/11/2011, 12:50
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: que esta mal en esta consulta?

Claro! porq si no me diera un error de por ejemplo...database not selected o algo asi...
  #4 (permalink)  
Antiguo 08/11/2011, 12:55
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 7 meses
Puntos: 29
Respuesta: que esta mal en esta consulta?

el match q yo utilizo va de esta forma puede ser que este mal el tuyo pq repites dos veces

Código MySQL:
Ver original
  1. SELECT * FROM libros
  2. WHERE MATCH(titulo, materia_tema, autor, descriptor, tabla_de_contenido, cota, isbn, editorial, serie) AGAINST('".$texto."')

donde el match van los campos que definiste en tu tabla en el mismo orden y en el against la palabra que quieres buscar
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #5 (permalink)  
Antiguo 08/11/2011, 13:01
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: que esta mal en esta consulta?

oh! no había visto que tenía matchs

Comprobaste si el motor de almacenamiento es MyISAM?

lo otro es que con tablas pequeñas los match no se dan muy bien

saludos.
  #6 (permalink)  
Antiguo 08/11/2011, 13:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: que esta mal en esta consulta?

Hola compañero pero no me funciona.....
no se que esta mal...ve yo uso una consulta para una sola palabra y otra en caso de que la busqueda contenga mas de una palabra...ve como tengo todo




Código PHP:
Ver original
  1. $busqueda=htmlentities($_POST['buscar']);
  2.      $busqueda;
  3.      $trozos=explode(" ",$busqueda);
  4.  $numero=count($trozos);
  5.   if ($numero==2) {
  6.    //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
  7.    $cadbusca="SELECT nombre_real, nombre_real_en FROM buscar WHERE  nombre_real LIKE '%$busqueda%' OR nombre_real_en LIKE '%$busqueda%'";
  8.   }else{
  9.   if($numero>2){
  10.   //SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  11.   //busqueda de frases con mas de una palabra y un algoritmo especializado
  12.   $cadbusca= " SELECT nombre_real FROM buscar
  13. WHERE MATCH(nombre_real,nombre_real_en) AGAINST('".$busqueda."')";
  14. }
  15.   }
  16. $result=mysql_query($cadbusca) or die(mysql_error());
  17.  
  18. while($row=mysql_fetch_array($result)){
  19.  //Mostramos los titulos de los articulos o lo que deseemos...
  20. echo $row['nombre_real'];
  21. }
  #7 (permalink)  
Antiguo 08/11/2011, 13:10
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: que esta mal en esta consulta?

Hola...si el motor el MyISAM y la tabla tiene solo 4 campos mas nada...y un solo registro tiene que ver eso?
  #8 (permalink)  
Antiguo 08/11/2011, 13:26
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: que esta mal en esta consulta?

Mira esto

http://dev.mysql.com/doc/refman/5.0/...xt-search.html

casi al final de la página muestras un ejemplo

Código MySQL:
Ver original
  1. mysql> SELECT * FROM articles
  2.     -> WHERE MATCH (title,body) AGAINST ('MySQL');
  3. Empty set (0.00 sec)

y dan las razones por las que falla en algunas ocasiones siendo que debería funcionar.

saludos.
  #9 (permalink)  
Antiguo 08/11/2011, 14:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: que esta mal en esta consulta?

compañero vea lo puse asi,
Código PHP:
Ver original
  1. $cadbusca= " SELECT * FROM buscar
  2. WHERE MATCH(nombre_real,nombre_real_en) AGAINST('".$busqueda."')";
y como lo ponga no me funciona...les paso la estructura de la tabla buscar

Código PHP:
Ver original
  1. CREATE TABLE `buscar` (
  2.   `id_buscar` int(11) NOT NULL auto_increment,
  3.   `id_servicio` int(11) NOT NULL,
  4.   `nombre_real` text NOT NULL,
  5.   `nombre_real_en` text NOT NULL,
  6.   PRIMARY KEY  (`id_buscar`),
  7.   FULLTEXT KEY `nombre_real` (`nombre_real`,`nombre_real_en`)
  8. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  #10 (permalink)  
Antiguo 08/11/2011, 14:37
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: que esta mal en esta consulta?

Por eso, tu tienes solo 1 registro en esa tabla, por lo que el match no funcionará como esperas debido a que la tabla es muy pequeña.

repito, puedes leer esto para más información

http://dev.mysql.com/doc/refman/5.0/...xt-search.html

casi llegando al final explican el por qué

saludos
  #11 (permalink)  
Antiguo 08/11/2011, 15:19
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 7 meses
Puntos: 29
Respuesta: que esta mal en esta consulta?

si ejecutas la consulta directamente en la base de datos que te muestra ???
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #12 (permalink)  
Antiguo 08/11/2011, 15:24
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: que esta mal en esta consulta?

Saludos tomark4

Es correcto lo que indica Ribon!.. No ahi que darle tantas vueltas, la consulta no debe estar generando resultados y no tiene ningun error es por la cantidad de registros de la tabla como bien lo mencionan.

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #13 (permalink)  
Antiguo 08/11/2011, 15:28
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 7 meses
Puntos: 29
Respuesta: que esta mal en esta consulta?

Tienes razon en la guia lo establece, Gracias por la aclaracion.
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #14 (permalink)  
Antiguo 08/11/2011, 16:15
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: que esta mal en esta consulta?

OK entonces todo si esta perfecto...ya lei parte de lo que me dijeron!...si es cierto debo tener mas registros...pero ya con unos 20 registros es suficiente verdad???...o aun asi se necesitan mas registros?? gracias :D
  #15 (permalink)  
Antiguo 09/11/2011, 07:32
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: que esta mal en esta consulta?

Trata de que esos 20 registros sean lo más distintos que puedas.

saludos.

Etiquetas: query, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:52.