Confusión sobre combinación de tablas en consultas SQL

  • Autor Autor InformaticaPC
  • Fecha de inicio Fecha de inicio
InformaticaPC

InformaticaPC

Delta
Programador
Tengo una consulta que quizás sea muy tonta, pero que ahora mismo me tiene confuso y agradecería mucho que me lo aclarasen.

Se supone que las siguientes consultas son idénticas:

-----------
select per.idpersona, per.nombre, per.idprovincia, pro.idprovincia, pro.provincia
from personas per, provincias pro
where
(
(per.idprovincia = pro.idprovincia) AND
(pro.provincia = 'LAS PALMAS') OR
(pro.idprovincia = 5)
);
-----------
select per.idpersona, per.nombre, per.idprovincia, pro.idprovincia, pro.provincia
from personas per INNER JOIN provincias pro ON (per.idprovincia = pro.idprovincia)
where
(
(pro.provincia = 'LAS PALMAS') OR
(pro.idprovincia = 5)
);
-----------

... Pero sin embargo no es así, devuelven registros diferentes (la primera los devuelve incorrectos, sin asociar bien 'idprovincia' en algunos registros).

Sin embargo sí que funciona del siguiente modo (agrupando las condiciones):


---------------
select per.idpersona, per.nombre, per.idprovincia, pro.idprovincia, pro.provincia
from personas per, provincias pro
where
(
(per.idprovincia = pro.idprovincia) AND
( (pro.provincia = 'LAS PALMAS') OR (pro.idprovincia=5) )
);
---------------

En su día cuando lo estudié siempre utilizamos sin problema (aparentemente) la primera de las formas, yo luego aprendeí las otras... pero ahora mismo me surgido este caso y estoy descolocado desde ayer, ya que se supone que en el primer y segundo casos se obtiene una tabla con los registros relacionados únicamente, y que luego sobre los campos de cada fila se aplica el resto de condiciones.

:s
 
tienes otro id.provincia con provincia = 'LAS PALMAS' ?
 
Nada ya está aclarado gracias !
 
Última edición:
Atrás
Arriba