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

sobre una consulta en mysql (MINUS)

Estas en el tema de sobre una consulta en mysql (MINUS) en el foro de Bases de Datos General en Foros del Web. Wenas, necesito hacer una consulta en mysql que me saque todos los resultados de una consulta que no esten en los resultados de otra consulta, ...
  #1 (permalink)  
Antiguo 23/04/2003, 11:28
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
sobre una consulta en mysql (MINUS)

Wenas, necesito hacer una consulta en mysql que me saque todos los resultados de una consulta que no esten en los resultados de otra consulta, es decir, con otras BD se utiliza MINUS pero en mysql no se como se implementa esto.
Creo que queda bastante claro pero un ejemplo sería el siguiente:

select alumno from curso1
MINUS
select alumno from curso2

Es decir, que muestre los alumnos que han hecho el curso 1 pero no el curso 2.

Gracias
  #2 (permalink)  
Antiguo 23/04/2003, 11:37
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Utiliza LEFT JOIN...

SELECT curso1.alumno FROM curso1 LEFT JOIN curso2 ON curso1.alumno=curso2.alumno WHERE curso2.alumno IS NULL

Esto te entregaría todos los alumnos del curso 1 que no asistieron al curso 2...

Saludos!!

Bibliografia:
http://www.mysql.com/doc/en/JOIN.html
__________________
Manoloweb
  #3 (permalink)  
Antiguo 24/04/2003, 12:08
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias, lo probaré
  #4 (permalink)  
Antiguo 26/04/2003, 06:18
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Vale, ya lo he probado y ahora me surge otro problema, para una consulta tan sencilla como la que puse en el primer post está claro pero ahora necesito hacer una consulta más complicada, he probado miles de combinaciones y no consigo obtener lo que quiero. Voy a exponer el problema a ver si alguien me lo soluciona:

Tengo 3 tablas:
-- Aulas : id, código
-- Reservas: id, aula, hora
-- FechasReserva: id, reserva, fecha

Me explico, el campo aula de la tabla reservas coincide con el id de un Aula, al igual que el campo reserva de la tabla FechasReserva coincide con el id de la tabla Reservas. Una reserva solo puede ser de un aula pero una reserva puede tener varias fechasReserva. Bueno ya estais metidos en situación. La consulta que quiero hacer es la siguiente:

-- Que me muestre el código de las aulas que para una determinada fecha y una hora determinada NO ESTEN RESERVADAS, es decir, libres.

Lo he probado casi todo pero no consigo sacarlo.


Gracias, de antemano.
  #5 (permalink)  
Antiguo 29/04/2003, 05:21
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Hola de nuevo, no me quiero hacer pesado pero es que necesito saberlo lo antes posible, les puedo asegurar que no lo pregunto aquí por comodidad, me he tirado bastante tiempo probando cosas y no he sido capaz de sacar la dichosa consulta, se ve q lo mio es programar pero no las consultitas a las BD.

Gracias otra vez.

Ha sonado a muy desesperado este post? jajjaja

Thanks
  #6 (permalink)  
Antiguo 29/04/2003, 11:24
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Bueno, no parece tan complicado... espera un poco...
__________________
Manoloweb
  #7 (permalink)  
Antiguo 29/04/2003, 11:33
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Bueno, unas preguntas...

Tengo 3 tablas:
-- Aulas : id, código
-- Reservas: id, aula, hora (que tipo de campo es hora? y las registras?)
-- FechasReserva: id, reserva, fecha (es fecha un campo date?)
__________________
Manoloweb
  #8 (permalink)  
Antiguo 29/04/2003, 12:09
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Bueno, te contesto aquí tb, el campo hora es un varchar(5) y la fecha es un DATE, no hagas caso de la hora, con la fecha es suficiente.


Gracias
  #9 (permalink)  
Antiguo 29/04/2003, 12:30
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Bueno, me parece que esto deberá solucionarse con 2 consultas y la ayuda de PHP...

Código PHP:
$sql1="select aula from reservas left join fechasreserva on reservas.id=fechasreserva.reserva where fechasreserva.fecha='2003/04/29' and reservas.hora=15"
$qr_ocupadasmysql_query($sql1);
while (
$rs_ocupadas=mysql_fetch_row($qr_ocupadas)){
    
$ocupadas[]=$rs_ocupadas["aula"];
}
$ocupadas=implode(",",$ocupadas);

$sql2="select * from aulas where id not in ($ocupadas)";
... 
Creo que por ahi va...

Saludos!
__________________
Manoloweb
  #10 (permalink)  
Antiguo 29/04/2003, 12:50
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias, ahora mismo lo pruebo, ya había pensado en algo así pero es que soy bastante cabezón en sacar esas cosas por coj... ya , jeje.

Pero creo que de momento voy a hacer lo que me propones.

ya te digo q tal me ha ido

ADEU
  #11 (permalink)  
Antiguo 30/04/2003, 11:49
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
TODO CORRECTO!!!

Gracias, funciona a la perfección, creo que me va a tocar hacer varias consultas para sacar este tipo de información. En ninguna versión del mysql esta disponible el MINUS, UNION, etc?

ADEU
  #12 (permalink)  
Antiguo 30/04/2003, 12:36
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Si, en MySQL tienes disponibles UNION, JOIN (inner, left y right)

Saludos!
__________________
Manoloweb
  #13 (permalink)  
Antiguo 30/04/2003, 21:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm y la hora porqué la tienes separada de la Fecha .. cuando dispones de campos tipo DATETIME para eso? .. Solo tienes que usar DATE_FORMAT() (de Msyql) para formatear la salida y obtener solo la fecha o solo la hora cuando la requieras ...

A su vez tienes funciones adicionales (en www.mysql.com -> funciones de tratamiento de fechas) para obtener la "hora" solo de un campo DATETIME que te entrega FECHA y HORA en un solo campo ...

Creo que .. visto ya como trabajar con JOIN y demas .. sería hora de plantearse "la optimización" de tu modélo de datos .. En concreto este punto que te hago mención sobre el tratamiento de Fechas/hora.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 01/05/2003, 05:09
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
vale, te explico: es que exactamente lo que estoy haciendo es una aplicación para reservar aulas, el ejemplo que puse en el post solo ponía una hora pero realmente hay una hora_inicial y una hora_final de la reserva, por eso lo que hago es meter las horas por separado en la tabla reservas y las fechas a parte en otra tabla ya que una misma reserva puede ser para varios dias.

Ahora que te he explicado esto, piensas que está bien diseñada la BD como la tengo? o harías algún cambio?

Gracias
  #15 (permalink)  
Antiguo 23/01/2008, 09:24
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Busqueda Re: TODO CORRECTO!!!

Hola, disculpa es la primera vez que me registro a este foro.... y viendo el tema que ya es un tema muy de atrás, yo trabajo en Telefónica del Perú y a manera personal me gustaría crear un Sistema el cual me permita Realizar reservas de Aulas ya que estoy manejando muchos locales y aulas y me gustaría tener mucho control sobre todo en las consultas....
Me gustaría me puedas brindar información de como lo podría hacer ya que el tema de MySQL lo conozco poco pero me gustaría conocerlo un poco más y ver como así tiene tan maravillosa funcionalidad.

Saludos.

Miguel Angel
P.D. la verdad esto me urge muchísimo......gracias

Cita:
Iniciado por josgat Ver Mensaje
Gracias, funciona a la perfección, creo que me va a tocar hacer varias consultas para sacar este tipo de información. En ninguna versión del mysql esta disponible el MINUS, UNION, etc?

ADEU
  #16 (permalink)  
Antiguo 23/01/2008, 09:26
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: sobre una consulta en mysql (MINUS)

Me gustaría implementar un Sistema de Reservas de Aulas, y quisiera si alguine puede ayudarme a como realizarlo en MySQL, ya que laboro en Telefónica del Perú y por ese motivo me registré en este foro a ver si me podían ayudar.
El sistema constaría en reservaciones de aulas, consultas y reportes de reservas.

Saludos,

MAB
  #17 (permalink)  
Antiguo 23/01/2008, 11:26
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
Re: sobre una consulta en mysql (MINUS)

Cerrado... Por favor realiza tus consultas de forma independiente y no revivas mensajes viejos.
__________________
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 21:53.