Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 19-feb-2005, 02:12   #1 (permalink)
DjNelson está en el buen camino
 
Fecha de Ingreso: julio-2003
Mensajes: 675
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)
DjNelson está desconectado   Responder Citando
Antiguo 22-feb-2005, 12:39   #2 (permalink)
DjNelson está en el buen camino
 
Fecha de Ingreso: julio-2003
Mensajes: 675
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-feb-2005 a las 12:42.
DjNelson está desconectado   Responder Citando
Antiguo 22-feb-2005, 13:44   #3 (permalink)
javier_82 ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
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.
javier_82 está desconectado   Responder Citando
Antiguo 24-feb-2005, 10:57   #4 (permalink)
DjNelson está en el buen camino
 
Fecha de Ingreso: julio-2003
Mensajes: 675
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)
DjNelson está desconectado   Responder Citando
Antiguo 28-feb-2005, 13:08   #5 (permalink)
Moderador
Cluster llegará a ser famoso muy prontoCluster llegará a ser famoso muy pronto
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago - Chile
Mensajes: 34.439
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,
Cluster está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 08:54.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93