Subconsulta De Una Columna Que Contiene Solo Un Id?[Resuelto]


Ir a la página 1, 2  Siguiente

Objetivo: Subconsulta De Una Columna Que Contiene Solo Un Id?[Resuelto]
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?

ú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.

Select a.campo1, a.campo2,a.campo3, b.nombre from productos a left join proveedores b on a.idproveedor = b.rowid


Mas o menos...

Perfil MP  
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.

Perfil MP  
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
calcena escribió: [Ver mensaje]
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.


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
Perfil MP  
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.

Perfil MP  
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
Citar:
¿es correcto tener inconsitencias en una DB?

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"

Perfil MP  
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
shordi escribió: [Ver mensaje]
No te líes con eso de que sean llaves foráneas, la consulta se hace exactamente igual que con otros campos.

Select a.campo1, a.campo2,a.campo3, b.nombre from productos a left join proveedores b on a.idproveedor = b.rowid


Mas o menos...


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?
Citar:
me suena que esa linea no es correcta, ya que like debe estar presente


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
Select a.campo1, a.campo2,a.campo3, b.nombre from productos a left join proveedores b on a.idproveedor = b.rowid where micampo like '%mitextbox.tex%'

Perfil MP  
Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
shordi escribió: [Ver mensaje]
Citar:
me suena que esa linea no es correcta, ya que like debe estar presente


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
Select a.campo1, a.campo2,a.campo3, b.nombre from productos a left join proveedores b on a.idproveedor = b.rowid where micampo like '%mitextbox.tex%'



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:

inventario

productos

proveedores

Objetivo: Re: Subconsulta De Una Columna Que Contiene Solo Un Id?
calcena escribió: [Ver mensaje]
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.


gracias por el dato, importante aclaración

Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No 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