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

¿Cómo podría hacer esta consulta en MySQL?

Estas en el tema de ¿Cómo podría hacer esta consulta en MySQL? en el foro de Mysql en Foros del Web. Buenas, Tenía esta consulta echa en Access y funcionaba perfectamente, pero al pasarlo a MySQL me da el siguiente error: Cita: Microsoft OLE DB Provider ...
  #1 (permalink)  
Antiguo 18/01/2006, 15:28
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
¿Cómo podría hacer esta consulta en MySQL?

Buenas,

Tenía esta consulta echa en Access y funcionaba perfectamente, pero al pasarlo a MySQL me da el siguiente error:

Cita:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
[MySQL][ODBC 3.51 Driver][mysqld-5.0.16-nt]FUNCTION bd.Rnd does not exist
La instrucción es esta:

Cita:
Sql = "Select a.IdArticulo, a.PrecioA From Articulos a Inner Join Promociones p On" _
& " (a.IdArticulo=p.IdArticulo) " _
& "Where p.Especial=True Order By Rnd (" & -1 * (intRandomNumber) & "*ID)"
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 18/01/2006, 16:47
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Lo que primero debes averiguar, es la compatibilidad de campos entre Access y MySQL, luego las funciones similares entre una y otra.

Por ejemplo... MySQL NO se puede definir un campo boolean por lo que la condición de true, nunca va a ser válida. Luego la función random (rnd) no existe como tal en MySQL. Igual pasa con intRandomNumber. Lo mismo sucede con Inner, no lo vi buscandolo en la web oficial de MySQL.

Consejo... revisa en la web de MySQL lo que podes o no usar.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 20/01/2006, 07:47
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Ok, por mucho que miro no lo encuentro, ¿cómo hago un random en mysql?, ¿alguien me puede poner un ejemplo?

Brujonic, pensaba que los Inner Join si que eran compatibles con MySQL, tengo la versión 5.0

Muchas gracias!
  #4 (permalink)  
Antiguo 20/01/2006, 07:57
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Aqui tienes un pequeno ejemplo del uso de la funcion RAND() de mysql y encuentras mucho mas googleando, cya

Código PHP:
SELECT something FROM table ORDER BY RAND() LIMIT 1
PD: Como te Dijo BrujoNic no hay valores Booleanos en Mysql puedes usar en todo caso algo asi como 1-->True o 0-->False con un campo Tiny Int, bueno es una idea o definirlos como varchar.
  #5 (permalink)  
Antiguo 13/02/2006, 02:46
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Cita:
Iniciado por deadlykyo
Aqui tienes un pequeno ejemplo del uso de la funcion RAND() de mysql y encuentras mucho mas googleando, cya

Código PHP:
SELECT something FROM table ORDER BY RAND() LIMIT 1
PD: Como te Dijo BrujoNic no hay valores Booleanos en Mysql puedes usar en todo caso algo asi como 1-->True o 0-->False con un campo Tiny Int, bueno es una idea o definirlos como varchar.
Por más que busco no encuentro información sobre el Random en MySQL, además si uso esta sentencia me dice que no existe la función RAND.

¿Nadie sabe o me puede poner un ejemplo de como hacer un random de ID en MySQL cogiéndolo directamente de la BD?

Otra cosa, la función Inner Join funciona perfectamente en 5.0, no me da errores.

Muchas gracias.
  #6 (permalink)  
Antiguo 13/02/2006, 07:10
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
aqui te dejo el link a la documentacion de RAND() de mysql y tambien te dejo un ejemplo de como generar indices entre un rango, que podia ser el inicio=1 y el fin=MAX(id) de tu tabla:
http://dev.mysql.com/doc/refman/5.0/...functions.html
Código:
RAND(), RAND(N)

Returns a random floating-point value v between 0 and 1 inclusive (that is, in the range 0 <= v <= 1.0). If an integer argument N is specified, it is used as the seed value, which produces a repeatable sequence.

mysql> SELECT RAND();
        -> 0.9233482386203
mysql> SELECT RAND(20);
        -> 0.15888261251047
mysql> SELECT RAND(20);
        -> 0.15888261251047
mysql> SELECT RAND();
        -> 0.63553050033332
mysql> SELECT RAND();
        -> 0.70100469486881
mysql> SELECT RAND(20);
        -> 0.15888261251047

To obtain a random integer R in the range i <= R <= j, use the expression FLOOR(i + RAND() * (j – i + 1)). For example, to obtain a random integer in the range of 7 to 12 inclusive, you could use the following statement:

SELECT FLOOR(7 + (RAND() * 6)); 
cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #7 (permalink)  
Antiguo 13/02/2006, 13:36
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Muchíssimas gracias, por fin me funcionó!!

Gracias de nuevo
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 01:03.