|
Página 1 de 2
|
Subconsulta De Una Columna Que Contiene Solo Un Id?[Resuelto]
Autor |
Mensaje |
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
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?
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
última edición por v3ctor el Martes, 30 Agosto 2016, 21:59; editado 3 veces
|
#1 Miercoles, 17 Agosto 2016, 15:05 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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...
=================== No podemos regresar
|
#2 Miercoles, 17 Agosto 2016, 16:45 |
|
|
calcena
Ingeniero Programador
Registrado: Julio 2016
Mensajes: 272
Edad: 47
|
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.
|
#3 Jueves, 18 Agosto 2016, 09:49 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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.
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.
=================== No podemos regresar
última edición por shordi el Jueves, 18 Agosto 2016, 10:18; editado 2 veces
|
#4 Jueves, 18 Agosto 2016, 10:17 |
|
|
calcena
Ingeniero Programador
Registrado: Julio 2016
Mensajes: 272
Edad: 47
|
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.
|
#5 Jueves, 18 Agosto 2016, 10:42 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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"
=================== No podemos regresar
|
#6 Jueves, 18 Agosto 2016, 11:51 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
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...
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
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#7 Jueves, 18 Agosto 2016, 17:34 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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%'
=================== No podemos regresar
|
#8 Jueves, 18 Agosto 2016, 19:20 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
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%'
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:
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#9 Domingo, 28 Agosto 2016, 20:50 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
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.
gracias por el dato, importante aclaración
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#10 Martes, 30 Agosto 2016, 21:41 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|