buenas....
sinceramente no se como formular la pregunta....
pero trata de lo siguiente
tenemos una tabla productos donde se encuentra una llave foránea a el id de proveedores osea un numero integer
por otro lado tenemos un txt donde haremos búsquedas de nombres de proveedores, pero no podemos hacer una búsqueda directa en la tabla productos, porque ahí solo esta el id del proveedor no su nombre.
como se hace esto?
una subconsulta? como seria esa subconsulta?
tal vez obtener primero todos los nombres de proveedores en un array y recién buscar ahí según el filtro aplicado?
como se hace este proceso?
Subconsulta De Una Columna Que Contiene Solo Un Id?[Resuelto]
Objetivo: Subconsulta De Una Columna Que Contiene Solo Un Id?[Resuelto]
última edición por v3ctor el Martes, 30 Agosto 2016, 21:59; editado 3 veces
última edición por v3ctor el Martes, 30 Agosto 2016, 21:59; editado 3 veces
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
No te líes con eso de que sean llaves foráneas, la consulta se hace exactamente igual que con otros campos.
Mas o menos...
Mas o menos...
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
En mi opinión, la consulta debe ser:
select b.nombre,a.descripcion
from tblproductos as a
inner joint tblproveedores as b
on a.id_pro=b.id
where []
de esta forma consigues el nombre del proveedor (directo de la tabla) y la descripción (por poner un campo) de la tabla productos, A y B son Alias para simplificar las consultas.
Saludos.
select b.nombre,a.descripcion
from tblproductos as a
inner joint tblproveedores as b
on a.id_pro=b.id
where []
de esta forma consigues el nombre del proveedor (directo de la tabla) y la descripción (por poner un campo) de la tabla productos, A y B son Alias para simplificar las consultas.
Saludos.
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
Inner join te deja fuera de la consulta los productos que no contengan id de proveedor o cuyo id de proveedor es erróneo. Eso hace que, en caso de error en tus bases de datos, tales regisgros sean "invisibles" y no puedas detectar lo que hay de malo en ellas. Sobre todo al ver que los recuentos que hagas con otras consultas no te cuadran con las filas que devuelve ésta.
Left join, por el contrario, muestra todos los registros de productos y el nombre del proveedor si es que el enlace es bueno, dejando el campo nombre del proveedor a NULL en caso de error, lo cual es muy fácilmente detectable.
Saludos.
última edición por shordi el Jueves, 18 Agosto 2016, 10:18; editado 2 veces
calcena escribió: [Ver mensaje]
Inner join te deja fuera de la consulta los productos que no contengan id de proveedor o cuyo id de proveedor es erróneo. Eso hace que, en caso de error en tus bases de datos, tales regisgros sean "invisibles" y no puedas detectar lo que hay de malo en ellas. Sobre todo al ver que los recuentos que hagas con otras consultas no te cuadran con las filas que devuelve ésta.
Left join, por el contrario, muestra todos los registros de productos y el nombre del proveedor si es que el enlace es bueno, dejando el campo nombre del proveedor a NULL en caso de error, lo cual es muy fácilmente detectable.
Saludos.
última edición por shordi el Jueves, 18 Agosto 2016, 10:18; editado 2 veces
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
Buenas shordi, como bien indicas LEFT join nos trae todos los registros de productos, pero mi pregunta es
¿es correcto tener inconsitencias en una DB?
para eso tenemos los PK - FK que evitan mediante Constraint, etc.
Por otra parte, también es posible que el compañero solo tenga datos en un sitio y no en otro, por lo que LEFT le va mucho mejor.
Eso ya depende, para mi gusto y desarrollos casi al 98% INNER JOIN porque solo tengo datos constrastados.
Detectar una inconsistencia en DB es un quebradero de cabezas, se debe implementar muy bien desde un principio si no ....son horas de debug.
Saludos.
¿es correcto tener inconsitencias en una DB?
para eso tenemos los PK - FK que evitan mediante Constraint, etc.
Por otra parte, también es posible que el compañero solo tenga datos en un sitio y no en otro, por lo que LEFT le va mucho mejor.
Eso ya depende, para mi gusto y desarrollos casi al 98% INNER JOIN porque solo tengo datos constrastados.
Detectar una inconsistencia en DB es un quebradero de cabezas, se debe implementar muy bien desde un principio si no ....son horas de debug.
Saludos.
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
Por supuesto que no es correcto... pero si tu base es 100% consistente, el resultado de left y de inner es exactamente el mismo. ¿Qué ventaja tiene entonces Inner?
Además, en cuestión de inconsistencias... "el que esté libre de culpa que tire la primera piedra"
Citar:
Por supuesto que no es correcto... pero si tu base es 100% consistente, el resultado de left y de inner es exactamente el mismo. ¿Qué ventaja tiene entonces Inner?
Además, en cuestión de inconsistencias... "el que esté libre de culpa que tire la primera piedra"
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
me suena que esa linea no es correcta, ya que like debe estar presente
ya que debemos buscar por un filtro que nos dará un textbox.text
shordi escribió: [Ver mensaje]
me suena que esa linea no es correcta, ya que like debe estar presente
ya que debemos buscar por un filtro que nos dará un textbox.text
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
A éstas alturas ya deberías ser capaz de añadir el where por tí mismo...
Vale, te lo pongo yo, pa que no te pierdas
Citar:
A éstas alturas ya deberías ser capaz de añadir el where por tí mismo...
Vale, te lo pongo yo, pa que no te pierdas
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
según esa sentencia quedaría algo así.. pero no anda no se que hago mal.. necesito ver una sentencia real correcta para entender bien como es la sintaxis....
dejo tres capturas:
shordi escribió: [Ver mensaje]
según esa sentencia quedaría algo así.. pero no anda no se que hago mal.. necesito ver una sentencia real correcta para entender bien como es la sintaxis....
SELECT a.*, b.nombre FROM productos a LEFT JOIN proveedores b ON a.idproveedor = b.idproveedor WHERE nombre LIKE '%Sin%'
dejo tres capturas:
Página 1 de 2
No puede crear mensajesNo puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.1588s (PHP: -38% SQL: 138%)
Consultas SQL: 31 - Debug off - GZIP Activado