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

¿Que le pasa a esta select?

Estas en el tema de ¿Que le pasa a esta select? en el foro de Mysql en Foros del Web. Hola buenas, tengo esta select: SELECT DISTINCT TOP 20 Tabla1.Campo1 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2 ORDER BY Tabla1.Campo1; y no entiendo ...
  #1 (permalink)  
Antiguo 15/09/2009, 00:27
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
¿Que le pasa a esta select?

Hola buenas, tengo esta select:

SELECT DISTINCT TOP 20 Tabla1.Campo1 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2 ORDER BY Tabla1.Campo1;

y no entiendo porque en MySQL no funciona.
Si alguien sabe cual es el problema, por favor ¿podria decirmelo?

Muchas gracias
  #2 (permalink)  
Antiguo 15/09/2009, 00:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿Que le pasa a esta select?

En MySqL no se usa TOP, sino LIMIT, aunque creo que existe alguna pequeña diferencia entre ellos

Prueba así:

SELECT DISTINCT Tabla1.Campo1 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2 ORDER BY Tabla1.Campo1 LIMIT 20;
  #3 (permalink)  
Antiguo 15/09/2009, 00:39
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: ¿Que le pasa a esta select?

Ok, gracias tio, iba a responderme porque ya habia dado con ello. Era la clausula LIMIT.

Gracias igualmente
  #4 (permalink)  
Antiguo 15/09/2009, 01:03
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: ¿Que le pasa a esta select?

Pues despues de solucionar esta, que era sencilla, tengo esta otra un poco mas compleja y aqui si que me pierdo con el MySQL:

SELECT DISTINCT Tabla1.Campo1 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2 WHERE Tabla1.Campo1 Not In (SELECT DISTINCT Tabla1.Campo1 FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo2 = Tabla2.Campo2 LIMIT 20) ORDER BY Tabla1.Campo1 LIMIT 20

Aunque parezca un poco liosa, el tema es que tengo una tabla que se rellena cada vez que se pincha sobre una pagina, es decir, pagina 1, 2, 3....etc y se lanza esta select y lo que hace es rellenar la tabla de 20 en 20 registros: pagina 1 del 1-20, pagina 2 del 21-40, etc

Pero creo que con subconsultas algo no funciona y no se si es el Limit o el Not In.
¿Podrían echarme una mano?

Gracias otra vez
  #5 (permalink)  
Antiguo 15/09/2009, 07:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿Que le pasa a esta select?

El problema es que las versiones de MySQL que yo conozco, hasta la 5.1 y creo que también en la 6, no aceptan LIMIT en subconsultas. Creo que podrías solucionarlo sin usar subconsulta, es decir, con un LEFT JOIN buscando NULL, pero es que tampoco entiendo del todo la lógica que empleas. Detállanos con un ejemplo que contenga datos, inventados o no, qué es exactamente lo que quieres hacer.
  #6 (permalink)  
Antiguo 15/09/2009, 08:11
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: ¿Que le pasa a esta select?

Cheka esto quiza te ayude:
http://www.desarrolloweb.com/articulos/1035.php
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 06:10.