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

como hacer un select dentro de un select en Mysql

Estas en el tema de como hacer un select dentro de un select en Mysql en el foro de Bases de Datos General en Foros del Web. estoy trabajando con php y necesito hacer un select dentro de otro, por ahi lei k no se puede, pero si alguien sabe ojala me ...
  #1 (permalink)  
Antiguo 07/02/2003, 17:35
^_^
 
Fecha de Ingreso: noviembre-2002
Ubicación: ValparaPancho
Mensajes: 41
Antigüedad: 21 años, 5 meses
Puntos: 0
como hacer un select dentro de un select en Mysql

estoy trabajando con php y necesito hacer un select dentro de otro, por ahi lei k no se puede, pero si alguien sabe ojala me lo diga, ademas queria saber como bloquear tablas en mysql (algo asi como el lock, unlock)...









Gracias.-
__________________
___
  #2 (permalink)  
Antiguo 07/02/2003, 22:06
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 4 meses
Puntos: 1
MySQL no te deja hacer subselects y por otro lado si buscas eso de lock en este mismo foro... ya se pregunto yo lo vi y si no www.mysql.com

Saludos
  #3 (permalink)  
Antiguo 10/02/2003, 08:09
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
lastimosamente urjose tienes razon, MySql no posee la capacidad de realizar subquerys (no al menos en las versiones standares) pero parece que en eso se esta trabajando y funciona pero lastimosamente bajo su rendimiento (rapidez)
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #4 (permalink)  
Antiguo 10/02/2003, 22:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Bueno .. Mysql hasta 3.x no soporta sub-selects .. pero si que en su manual indican como se debe hacer en Mysql usando LEFT JOIN

http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html

Con Mysql 4 (q ya está en fase "alfa") se podrán hacer las sub-consultas clásicas.

Un saludo,
  #5 (permalink)  
Antiguo 12/02/2003, 13:24
^_^
 
Fecha de Ingreso: noviembre-2002
Ubicación: ValparaPancho
Mensajes: 41
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias por sus respuestas, ojala k la nueva version traiga esta necesaria cualidad...
__________________
___
  #6 (permalink)  
Antiguo 12/02/2003, 14:18
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Porqué no hacemos una prueba ?
Porque no publicas aqui el query con sub-query que quieres hacer, y vemos si es posible reformularlo para que se pueda ejecutar con un JOIN.

saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #7 (permalink)  
Antiguo 12/02/2003, 15:39
^_^
 
Fecha de Ingreso: noviembre-2002
Ubicación: ValparaPancho
Mensajes: 41
Antigüedad: 21 años, 5 meses
Puntos: 0
a ver si me pueden ayudar, casi todos los subselects son con cosas relacionadas como esto

tengo 2 tablas

CREATE TABLE cliente (
Cod_Cli smallint(6) unsigned NOT NULL auto_increment,
Nom_Cli varchar(25) NOT NULL,
Usr_Name_Cli varchar(10) NOT NULL,
Mail_Cli varchar(25),
Dir_Cli varchar(25),
Ciudad_Cli varchar(15),
Pais_Cli varchar(15),
Fono_Cli varchar(15) NOT NULL,
Fax_Cli varchar(15),
PRIMARY KEY (Cod_Cli),
UNIQUE Nom_Cli (Nom_Cli)
);

---------------------------------------------------------------------
CREATE TABLE nave (
Cod_Nave smallint(6) unsigned DEFAULT '0' NOT NULL,
Nom_Nave varchar(25) NOT NULL,
Ban_Nave varchar(15) NOT NULL,
PRIMARY KEY (Cod_Nave, Nom_Nave)
);

---------------------------------------------------------------------


El codigo de la Nave corresponde al Codigo del Cliente, entonces, por ej. para saber las naves de un Cliente de codigo (Cod_Cli )12345, es solo saber k naves tienen 12345 como cod_nave, entonces para saber todas las naves de todos los clientes yo deberia haber hecho algo asi


Cita:
select * from cliente, nave where cod_cli = (select Cod_nave from nave)

esop.. gracias
__________________
___
  #8 (permalink)  
Antiguo 12/02/2003, 16:51
 
Fecha de Ingreso: abril-2002
Ubicación: Monterrey
Mensajes: 36
Antigüedad: 22 años
Puntos: 1
Bueno, si entendí bien lo que tu necesitas es comparar los códigos de las naves con los de los clientes y pues yo trabajo los queries en MySQL cuando se me presenta validaciones como en este caso lo escribiría así;

Cita:
SELECT cl.*, n.* FROM cliente cl, nave n WHERE cl.Cod_Cli = n.Cod_nave
también utilizando el IN puedes hacerlo, quedaría algo así :

Cita:
SELECT * FROM cliente, nave WHERE Cod_Cli IN (SELECT Cod_nave FROM nave)
Pruébalo para ver si te sirve y si no pues a buscar otra forma.

Y para bloquear las tablas uso esto:

Código PHP:
$abre mysql_query (" LOCK TABLES cliente WRITE") or die (mysql_error());
  
$borrar mysql_query ("$sql") or die (mysql_error());
$cierra mysql_query (" UNLOCK TABLES") or die (mysql_error()); 
__________________
UNIX: AIX
Linux: RHEL | CentOS
Personal: OS X

Última edición por Livin; 12/02/2003 a las 18:25
  #9 (permalink)  
Antiguo 21/08/2008, 14:40
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: como hacer un select dentro de un select en Mysql

Por favor ayudenme. Les explico:
El tema va sobre equipos y partidos de baloncesto

Tengo 2 tablas (calendario_nba y equipo_nba)
- calendario_nba: (id, local, visitante, fecha)
- equipo_nba: (id, nombre, ciudad)

Los campos 'local' y 'visitante' de la tabla `calendario_nba` hacen referencia al campo 'id' de la tabla `equipo_nba`

Lo que quiero es hacer un SELECT de la tabla `calendario_nba` pero en cada registro lo que quiero es obtener el 'nombre' y 'ciudad' de cada 'local' y 'visitante'

Es muy basico lo que quiero y aunque no se si me he explicado espero lo entiendan.

Gracias
  #10 (permalink)  
Antiguo 21/08/2008, 15:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: como hacer un select dentro de un select en Mysql

Prueba este:
SELECT l.nombre AS
LOCAL , l.ciudad AS ciudad_local, v.nombre AS visitante, v.ciudad AS ciudad_visitante, c.fecha
FROM (
equipo_nba l, equipo_nba v
)
INNER JOIN calendario_nba c ON l.id = c.local
AND v.id = c.visitante

POR CIERTO: te has metido en un hilo antiguo que nada tiene que ver con lo que quieres. En estos casos debes abrir un hilo nuevo.

Última edición por jurena; 21/08/2008 a las 15:21
  #11 (permalink)  
Antiguo 21/08/2008, 15:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: como hacer un select dentro de un select en Mysql

Muchisimas gracias!!
Te lo agradezco de veras, me has salvado de un apuro. Lo habia intentado todo.

Siento no haber planteado el problema en el hilo correcto, pero esque ya no sabia por donde tirar
Muchas gracias de nuevo
  #12 (permalink)  
Antiguo 21/08/2008, 22:24
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
Respuesta: como hacer un select dentro de un select en Mysql

No se permite revivir mensajes viejos y por favor, realiza tus consultas aparte.

Cerrado.
__________________
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
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:34.