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

Varias consultas en 1 = 1 consulta?

Estas en el tema de Varias consultas en 1 = 1 consulta? en el foro de Bases de Datos General en Foros del Web. SQL permite enviar varias consultas así: select nombre,permisos (select avg(puntuacion) from puntuaciones where id_usuario='123') as media, (select comentario from comentarios where id_usuario='123') as comentario,(select count(*) ...
  #1 (permalink)  
Antiguo 19/02/2005, 03:12
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 8 meses
Puntos: 0
Varias consultas en 1 = 1 consulta?

SQL permite enviar varias consultas así:

select nombre,permisos (select avg(puntuacion) from puntuaciones where id_usuario='123') as media, (select comentario from comentarios where id_usuario='123') as comentario,(select count(*) from untuaciones where id_usuario='123') as cuenta from usuarios where id_usuario='123';

Pero esto se podría hacer enviando las consultas una a una:

select nombre,permisos from usuarios where id_usuarios='123';
select avg(puntuacion) as media from puntuaciones where id_usuario='123';
select comentario from comentarios where id_usuario='123';
select count(*) from untuaciones where id_usuario='123'

En el primer caso sólo nos conectamos a la base una vez, mientras que en el segundo cuatro veces, deduzco entonces que la primera forma es más rápida que la segunda? O por el contrario tarda el mismo tiempo ya que las consultas son las mismas?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 22/02/2005, 13:39
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 8 meses
Puntos: 0
urgente!!

Tengo esta consulta:

select puntos,(select count(*) from cd where ident_user='".$_COOKIE["registrado"]."' and enviado='no') as lista from usuarios where identificador = '".$_COOKIE["registrado"]."'

En mi equipo con mysql 4.1.9 funciona bien, pero en el servidor con la versión
4.0.18 dá el siguiente error:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from cd where ident_user='3' and enviado='no')

Entiendo que no soporta enviar las consultas de esta forma?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)

Última edición por DjNelson; 22/02/2005 a las 13:42
  #3 (permalink)  
Antiguo 22/02/2005, 14:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 1 mes
Puntos: 0
Debe ser porque estas haciendo una subconsulta, y en la version de MySQL que tenes instalada en el servidor no hacepta subconsultas. Decile que te actualicen, o hacelo vos si podes a una version mas nueva, a partir de la 4.1 MySQL acepta subconsultas.
Saludos.
  #4 (permalink)  
Antiguo 24/02/2005, 11:57
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 8 meses
Puntos: 0
Ok, pero sigo sin saber lo primero: es lo mismo enviar varias subconsultas juntas que una a una?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 28/02/2005, 14:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Revisa el manual oficial de Mysql .. ahí veras como se hacen sub-consultas para Mysql 4.0 e inferiores a base de JOIN .. INNERT JOIN y demás historias .. Eso son los detalles que tiene Mysql en sus versiones .. no soporta todo el standard de SQL (ANSI 9x?) que otros motores de BD como MS SQL Server, Oracle, PostgreSQL .. etc.

Un saludo,
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 02:03.