Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Diferencia en MySQL!! (https://www.clubdelphi.com/foros/showthread.php?t=81364)

Artigas72 08-11-2012 01:41:59

Diferencia en MySQL!!
 
Hola, soy principiante en mysql y manejo de datos...
y hay algo que necesito, pero hasta ahora no he encontrado información relevante...
Seria algo como hacer la operación diferencia en MySQL...

esto es: Tengo 2 tablas y necesito saber que esta en la primera y no esta en la segunda...

Si alguién me puede dar una mano...
Sólo con un ejemplo me alcanza!

Desde ya, Muchas gracias!
:)

AzidRain 08-11-2012 02:11:35

te recomiendo MySQL CookBook, ahi viene una receta para obtener eso, por cierto muy bien explicada y con ejemplo sencillo como el que quieres.

Si quieres un poco de teoria, tienes que hacer un "left join" de la tabla1 con la tabla2 suponiendo que tienen un campo que las relacione.

Digamos que
supongamos que tenemos tabla1 y tabla2 con un campo comun llamado folio, que es el que las relaciona.

hacemos:
Código SQL [-]
select tabla1.folio, tabla2.folio 
from tabla1
left join tabla2 on (tabla2.folio=tabla1.folio)
Todos los folios que no esten en tabla2 pero sí en tabla1 aparecen como Null

Filtrando el query:
Código SQL [-]
select tabla1.folio, tabla2.folio 
from tabla1
left join tabla2 on (tabla2.folio=tabla1.folio)
where tabla2.folio is null

Obtenemos solo los folios que existen en tabla1 pero no en tabla2, si quieres saber los que si existen en tabla2, basta con cambiar el "is null" por "is not null".

Artigas72 08-11-2012 02:26:43

Voy a probarla ahora
 
Voy a probar este metodo ahora, pero encontre este aca:
Código SQL [-]
Mostrando registros 0 - 1 (2 total, Consulta levou 0.0009 segundos)
SELECT * 
FROM empleados
WHERE ci NOT 
IN (

SELECT ci
FROM cumple
WHERE fecha_hora_entrada > ( 
SELECT CURDATE( ) )
)
Sólo hay un problema: Zeos me tira error de SQL, pero lo probe en localhost y me anda lo más bien...
:/

PD.:
Ci -> Int
Fecha_Hora_entrada -> Datetime

:/ No se que puede ser!

Me tira error cerca de
Código SQL [-]
Select Curdate

La verdad que no se!
:/

ecfisa 08-11-2012 03:46:22

Cita:

Empezado por Artigas72 (Mensaje 448896)
Sólo hay un problema: Zeos me tira error de SQL, pero lo probe en localhost y me anda lo más bien...

Hola Artigas72.

Para poder ayudarte mejor, es conveniente que copies y pegues la porción de código donde se está provocando el error. No menos importante es que pongas textualmente el mensaje de error que estas recibiendo.

Saludos.

olbeup 08-11-2012 09:06:32

Cita:

Empezado por Artigas72 (Mensaje 448896)
Voy a probar este metodo ahora, pero encontre este aca:
Código SQL [-]
Mostrando registros 0 - 1 (2 total, Consulta levou 0.0009 segundos)
SELECT * 
FROM empleados
WHERE ci NOT 
IN (

SELECT ci
FROM cumple
WHERE fecha_hora_entrada > ( 
SELECT CURDATE( ) )
)
Sólo hay un problema: Zeos me tira error de SQL, pero lo probe en localhost y me anda lo más bien...
:/

PD.:
Ci -> Int
Fecha_Hora_entrada -> Datetime

:/ No se que puede ser!

Me tira error cerca de
Código SQL [-]
Select Curdate

La verdad que no se!
:/

No entiendo de las funciones de MySQL pero si quitas el SELECT CURDATE y solo dejar el CURDATE ya que es un función de MySQL y no necesita el SELECT, dejando la consulta en:
Código SQL [-]
SELECT * 
  FROM empleados
  WHERE ci NOT IN (
                   SELECT ci
                     FROM cumple
                     WHERE fecha_hora_entrada > CURDATE()
                  )
Un saludo

roman 08-11-2012 17:56:17

Cita:

Empezado por Artigas72 (Mensaje 448896)
Voy a probar este metodo ahora, pero encontre este aca:
Código SQL [-]
SELECT * 
FROM empleados
WHERE ci NOT 
IN (

SELECT ci
FROM cumple
WHERE fecha_hora_entrada > ( 
SELECT CURDATE( ) )
)

Aquí estás usando una subconsulta y, normalmente, un join es más eficiente que una suconsulta, de manera que yo seguiría la sugerencia de AzidRain.

// Saludos

Casimiro Notevi 08-11-2012 18:02:35

Además, todo esto no es MySql en concreto, sino SQL en general.


La franja horaria es GMT +2. Ahora son las 02:57:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi