Bases de Datos > SQL Server

 Consultas Anidadas

(1/2) > >>

Altareum:
Hola gente. Ayer me estuve peleando con el SQL, la verdad, cada día quiero más a MySql (seguro que voy a recibir críticas por este comentario).

Estoy tratando de hacer un "subquery", entre comillas porque algunos me dicen que eso no es un subquery, de la forma:

Select * from (select campo1, campo2 from tabla1) as tabla 2

En realidad la consulta que tengo que hacer es más compleja que eso. Lo que necesito, es sacar ciertos datos de tabla1, y en base a esto, usarlo como tabla "temporal" para la consulta (obviamente no me sirve crear una tabla temporal).

En Mysql eso puedo hacerlo, pero no encuentro la forma de implementarlo en SQL server, todo lo que encontré es con un subquery en el where o como un campo más en el select.


Altareum.

jpaler:
en mysql he hecho esto:

--- Citar ---Select *,(select c1 from t1),(select c2 from t2) from tabla2
--- Fin de la cita ---
pero no estoy seguro si lo soporta SQL Server y no se si te sirva de algo...
Salu2 !!!

lencho:

--- Cita de: "jpaler" --- en mysql he hecho esto:

--- Citar ---Select *,(select c1 from t1),(select c2 from t2) from tabla2
--- Fin de la cita ---
pero no estoy seguro si lo soporta SQL Server y no se si te sirva de algo...
Salu2 !!!
--- Fin de la cita ---
pues si Jpaler, sql server lo soporta.

BYTE.

F_Tanori:

--- Cita de: "Altareum" ---...cada día quiero más a MySql (seguro que voy a recibir críticas por este comentario).
--- Fin de la cita ---
pues de mi parte ....  :bravo:  :beer:



--- Cita de: "Altareum" ---Select * from (select campo1, campo2 from tabla1) as tabla 2
--- Fin de la cita ---

Yo recuerdo que si es posible hacer eso, lo que creo no es posible es colocar un alias con espacio "as tabla 2" (as tabla2 / as tabla_2 )

pero si puedes hacer subconsultas de ese tipo (siempre y cuando no devuelvan mas de 1 registro lo normal  :rolleyes: )


Saludos

Altareum:

--- Cita de: "F_Tanori" --- pero si puedes hacer subconsultas de ese tipo (siempre y cuando no devuelvan mas de 1 registro lo normal  :rolleyes: )
--- Fin de la cita ---
Pues eso es lo que necesito. El problema es que tengo dos tablas, votos_x_video y videos. Votos_x_video contiene un registro por cada voto hecho.
Lo que necesito hacer es obtener los 20 videos más votados y de esos, mostrar 3 aleatoriamente. Obviamente debe ser independiente del lenguaje, por lo cual debo resolverlo con sql.

Había pensado hacer:

--- Código: Text --- Select * from (    select count(votos) as cantidad, id_video    from votos_x_video    GROUP BY id_video    order by cantidad    limit 20) as tabla1inner join videoswhere videos.id_video = tabla.id_videoorder by rand() limit 3  
Pero no se como hacerlo con sql, en mysql funciona bárbaro.
Ojo, la consulta la escribí, como la haría en mysql. por eso los Limit

Altareum.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa