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

Uso de Joins (no se como hacer) Subquery, no.

Estas en el tema de Uso de Joins (no se como hacer) Subquery, no. en el foro de Mysql en Foros del Web. Hola, espero que puedan ayudarme.. en toda mi base de datos hay un momento donde debo hacer x consultas entre las dos tablas siguientes: --- ...
  #1 (permalink)  
Antiguo 12/04/2006, 17:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 148
Antigüedad: 19 años
Puntos: 0
Uso de Joins (no se como hacer) Subquery, no.

Hola, espero que puedan ayudarme.. en toda mi base de datos hay un momento donde debo hacer x consultas entre las dos tablas siguientes:

---
(tabla) juegos (donde se almacenan los juegos disponibles para registrarse)
- nombre
- info
---

---
(tabla) equipos (donde se almacenan los equipos que se regiustren en x juegos)
- equip
- juego
- puntos
etc...
---

Ok, esto funciona asi.. para saber si un equipo esta registrado en x juego.. pues solo debo revisar (hacer una consulta) a la tabla "equipos" entonces ahi saco como resultado en que juegos se encuentra registrado x equipo.

SELECT juego FROM equipos WHERE equip = 'EQUIPO_PEPE'

Pero claro.. luego quiero mostrarle a ese equipo (en una segunda consulta) en que juegos AUN no se ha registrado y puede hacerlo. Lo cual gracias al resultado de la primer consulta debo incorporarla en la segunda consulta donde en ella primero compruebo todos los juegos disponibles (tabla->juegos) y sacar como resultado los nombres de los juegos en el cual el x equipo no esta registrado.

Ejemplo Concreto??

Supongamos que en la tabla "juegos" tengo los siguientes: JUEGO1,JUEGO2,JUEGO3,JUEGO4

El x equipo se encuentra registrado en el JUEGO1 y JUEGO2

Lo cual el resultado de la segunda/ultima consulta deberia ser JUEGO3 y JUEGO4 (el cual aun no se ha registrado).

Entonces como podria hacerlo??, si utilizo un subquery NOT IN ($query) funciona,. ok.. pero eso solo me sirve en versionas avanzadas de mysql como la 5.0..

Otra manera, es usar JOINS, ok, pero en mi caso no se como hacerlo... y puede que lo que este mal.. sea la ORGANIZACION de mis tablas.

Espero que puedan orientarme, gracias.
__________________
(8)Esta es la numero uno, que te sigue a todas partes,
siempre con sus estandartes,
y un grito de corazon, RACING CAMPEON
RACING CAMPEON, en el este y el oeste,
en el norte y en el sur, brillara blanca y celeste la academia RACING CLUB y la acade, y la acade... (8)
  #2 (permalink)  
Antiguo 16/04/2006, 00:55
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
¿Y tienes que hacerlo todo desde una consulta SQL?

Porque se me ocurre que podrías hacerlo en dos consultas diferentes. Claro que en una sería genial, pero no quieres subconsultas.

Imagino que usas PHP, entonces lo que se me ocurre reza algo así (va al vuelo, podría haber errores y metidas de pata):

Código PHP:
//
//obtenemos en qué juegos está inscrito el equipo de pepe por ejm.
$sql "SELECT juego_id FROM equipos WHERE equip = 'EQUIPO_PEPE'";

//en un array, metes el nombre de todos esos juegos
$result mysql_query($sql);
while(
$row mysql_fetch_array($result)) $juegos[] = $row['juego_id'];

//ahora ya tienes en $juegos un array con sus juegos inscritos
//si lo metes en un string estilo "3,5,9,10" ayudará más adelante
$cadena_juegos implode(','$juegos );

//¿en qué juegos no está metido el equipo de pepe?
$sql "SELECT juego_id FROM juegos WHERE  juego_id NOT IN ($cadena_juegos)"
Yo veo medio rara la estructura de tus tablas, se me hace que algo anda mal, pero como no estoy enterado de qué onda con el juego pues no puedo dar una opinión sobre una posible mejor estructura de las mismas que podría facilitar las consultas que estás pensando. =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
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 23:09.