MySQL - comparar dos tablas en consulta

   
Vista:

comparar dos tablas en consulta

Publicado por jorge (4 intervenciones) el 16/05/2009 21:57:51
hola Pablo, favor me pueden ayudar con lo siguiente.

Tengo dos tablas para registrar el ganado existente en una finca.

Tabla1 = ficha (id_animal,fecha_nacio,foto)
Tabla2 = inventa (id_animal,fecha)

La primera es la ficha de cada animal o el inventario inicial de todos los animales presentes en el momento del conteo.

La segunda tabla la necesito para inventariar una vez al mes el ganado, y ver si el ganado esta completo o no, es decir comparar la primera tabla con la segunda tabla y los animales que no coincidan son los que hacen falta.

SELECT ficha.id_animal, inventa.id_animal FROM ficha,inventa WHERE ficha.id_animal <> inventa.id_animal

no acepta <>

FAVOR ME PUEDEN AYUDAR.

GRACIAS

Intente esto, tampoco funciona:

SELECT FROM ficha WHERE numero in( SELECT numero FROM inventa WHERE ficha.id_animal = inventa.id_animal);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comparar dos tablas en consulta

Publicado por Gonzalo GC (339 intervenciones) el 17/05/2009 03:05:09
SELECT
f.id_animal,
f.id_animal
FROM inventa i LEFT JOIN ficha f using(id_animal)
WHERE f.fecha_nacio IS NULL;

Hay que resolver cuáles son los que no están, y la primera consulta no te devolvía nada, porque en ese JOIN el campo id_animal es NULL.
La segunda funcionaría bien si lo que quieres es la lista de animales que está, no el que no está.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comparar dos tablas en consulta

Publicado por jorge (4 intervenciones) el 23/05/2009 08:52:36
Hola,

gracias por tu ayuda.

Igual continua saliendo error , seleccionas 2 veces ficha.id_animal FROM inventa , pero inventa no es la tabla
La i antes de LEFT o la f antes de using tienen algun significado??

SELECT
f.id_animal,
f.id_animal
FROM inventa i LEFT JOIN ficha f using(id_animal)
WHERE f.fecha_nacio IS NULL;

El inventario de ganado es muy diferente al de otro tipo de negocios, como una ferreteria.
La idea es saber al momento del conteo cuantos animales hacen falta.

Cuando se cuenta los animales, hay que contarlos todos, es decir la fecha es hoy, y el conteo es hoy, si hoy cuento solo una parte y digo mañana cuento el resto, no vale, porque hoy puedo tener 5, 7, 10 animales faltantes, que pueden ser vendidos y no los registre, uno de ellos muerto y no lo registre, uno desaparecido o perdido por el momento, y el saldo del faltante se los robaron.
El ganado no puede estar todo el dia en el conteo porque tiene que ir a los potreros a comer, debe tomar agua, y no lo puedo retener todo el dia y la noche y si no termino continuo el dia siguiente, porque mañana, pueden hacer falta mas animales, o como tambien los pèrdidos del dia del conteo ya aparecieron en el nuevo conteo.
Es un negocio muy dificil por el robo, por lo general solo contando la mayor cantidad de veces se puede descubrir si hay o no robo.

Esperando me puedas ayudar y correjir el error

Atte,

Jorge Andres Loor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comparar dos tablas en consulta

Publicado por Soidito (4 intervenciones) el 17/05/2009 03:08:51
Jorge:

Dale una leida a los JOIN (union) precisamente es para unir dos o mas tablas en donde tú puedes decidir que registros quieres considerar, los que existan en ambas tablas, lo que existan en la primera tabla pero no en la segunda o los que existan en la segunda tabla pero no existan en la primera.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comparar dos tablas en consulta

Publicado por Gonzalo GC (339 intervenciones) el 17/05/2009 08:07:22
Cuidado con las confusiones: JOIN no signfica UNION en SQL. Sino COMBINACION en todo caso.
La operación UNION existe en SQL e implica la sumatoria de dos consultas que tienen la misma cantidad de columnas. En cambio JOIN es la combinación de dos tablas en base a un criterio determinado devolviendo como resultado el producto algebraico de esa relación.
UNION y JOIN son, entonces, operaciones distintas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:con subconsultas

Publicado por ecologic systems (1 intervención) el 26/04/2010 18:50:33
Las respuesta es subconsultas mi compa:

SELECT * FROM tabla1 tbl1 WHERE tbl1.idanimal NOT IN
(SELECT tbl2.idanimal FROM tabla2 tbl2 WHERE tbl2.fecha BETWEEN $fechamin AND $fechamax)

La logica es esta: la subconsulta selecciona el id del registro cuya fecha se encuentre en un rango ($fechamin AND $fechamax) ese rango podria ser el mes de tu interes una semana o un dia como gustes.

Entonces, la consulta devuelve los ids de los animales que no aparecieron en ese rango de fechas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

comparar dos tablas en consulta

Publicado por xve (898 intervenciones) el 04/10/2012 09:55:52
Hola a todos, las maneras que comentais, estan bien, pero en el momento que hay muchos registros, las consultas se eternizan, ya que son comparaciones or, las cuales son muy lentas si hay muchos registros.

La mejor manera para saber los campos que están en una tabla únicamente seria algo así:

1
2
3
4
5
6
SELECT id_animal,count(*) as total FROM
(SELECT id_animal FROM Tabla1
UNION ALL
SELECT  id_animal FROM Tabla2) as list
GROUP BY id_animal
HAVING total=1


Si queremos saber los campos que se repiten en las dos tablas seria algo así:

1
2
3
4
5
6
SELECT id_animal,count(*) as total FROM
(SELECT id_animal FROM Tabla1
UNION ALL
SELECT  id_animal FROM Tabla2) as list
GROUP BY id_animal
HAVING total=2


Espero que os sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

comparar dos tablas en consulta

Publicado por guillermo (1 intervención) el 29/06/2016 04:24:06
1
2
3
4
5
6
select f.id_animal, f.fecha_nacio, i.id_animal, i.fecha, f.foto
from ficha f
inner join inventa i
on ( f.id_animal <> i.id_animal )
where f.fecha_nacio = 'dd-mm-yyyy'
and i.fecha = 'dd-mm-yyyy'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar