PDA

Ver la Versión Completa : consultar tres tablas y mostrar campo vacío


cl2raul
23-11-2019, 15:18:00
Hola a todos, tengo un problema al consultar una base de datos sqlite3... Quiero hacer una consulta dónde utilizo 3 tablas, el problema es que tengo un campo vacío (Marca_Id), este campo lo utilizo para vincular la tabla Marcas con la tabla Artículos, y así obtener los campos MarcaNombre y MarcaImg... Siguiendo la lógica, si este campo está vacío no puedo llamar los campos MarcaNombre y MarcaImg y debe mostrarlos vacío.

cl2raul
23-11-2019, 15:38:51
Aaqui una captura de pantalla de la consulta, 37953795

novato_erick
23-11-2019, 17:19:45
Hola Compañero:

no tengo una experiencia grande en sql pero en fin las bases son estandart para todo lenguaje y las experiencia sin numerar asi que te sugiero utilizar

Ejemplo:


SELECT a1, a2, b1, b2
FROM A
FULL OUTER JOIN Productos ON Articulos.Productos_Id = Productos.Id_productos;

Group by Articulos.Nombre


esto es la idea de lo que puedes hacer para verificar y saber que realmente te arroja.


Saludos y Bendiciones;

cl2raul
23-11-2019, 18:29:03
Gracias novato Erick, lo probaré, pero recuerda que utilizo 3tablas una tienes los nombre de los productos y el id, otra es marcas, tiene id, nombre e imagen, y por último la tabla artículos, que tiene nombre, descripción, imagen, idmarca(que puede estar vacío) y idproductos... El problema es que cuando agrego en artículos y resulta que este no tiene una marca, se queda en nulo, cuando visualizo la tabla artículos me carga el primer nombre y la imagen de la marca

novato_erick
23-11-2019, 18:33:30
Gracias novato Erick, lo probaré, pero recuerda que utilizo 3tablas una tienes los nombre de los productos y el id, otra es marcas, tiene id, nombre e imagen, y por último la tabla artículos, que tiene nombre, descripción, imagen, idmarca(que puede estar vacío) y idproductos... El problema es que cuando agrego en artículos y resulta que este no tiene una marca, se queda en nulo, cuando visualizo la tabla artículos me carga el primer nombre y la imagen de la marca

es correcto el ejemplo que te postie fue con fines ilustrativos puedes agregar n cantidad de tablas relacionadas usando el FULL OUTER JOIN siempre te arrojara los campos que no esten. tambien puedes ver algo pareceido a la definicion de las uniones muy visual por cierto... :D:D:D:D:D:D:D:D:D:D

https://clubdelphi.com/foros/showthread.php?t=94308




Saludos;

novato_erick

novato_erick
23-11-2019, 18:40:13
también puedes leer un poco de aquí:

https://www.w3resource.com/sqlite/sqlite-left-join.php

hay mucho material ilustrativo, educativo y profesional y sobre todo este foro que enriquece mucho los conocimientos por los compañeros.


Saludos;

novato_erick
23-11-2019, 18:50:09
El problema es que cuando agrego en artículos y resulta que este no tiene una marca, se queda en nulo, cuando visualizo la tabla artículos me carga el primer nombre y la imagen de la marca

Disculpa no me habia percatado en esta parte:

ahí hay un asunto de lógica. hay posibles soluciones para corregir eso:

1- Tienes tu tabla madre de marcas la cual tienes marcas especificas en mi caso para corregir ese problema y no tener ese inconveniente cree un registro llamado SIN MARCA la cual al ingresar desde el formulario de Artículos simplemente se selecciona eso me ayudó mucho a la hora de mantener la integridad de la info con las consultas mas si usamos llaves foraneas.

me expliqué?

En fin si está a tu alcance realizar esa modificación en tu formulario de artículos es lo que te recomiendo pero si ya estas en producción bueno te la puedes arreglar con la consulta anidada como ya he mencionado puedes colocar la función coalesce(X,Y,...) "Creo que sqlLite es lo mismo que Firebird "para que no traiga "NULL" en el reporte algo desagradable ya que siempre se quiere ver info.

Saludos;

novato_erick

cl2raul
23-11-2019, 21:30:26
Gracias, no me sirvió pero me dio la idea de cómo solucionarlo, utilizando left outer join

novato_erick
24-11-2019, 16:30:16
Gracias, no me sirvió pero me dio la idea de cómo solucionarlo, utilizando left outer join


Es la idea de este foro.


Saludos;

Sonyah92
08-12-2019, 20:58:28
también puedes leer un poco de aquí:


hay mucho material ilustrativo, educativo y profesional y sobre todo este foro que enriquece mucho los conocimientos por los compañeros.


Saludos;

Hola, muchas gracias por compartir el enlace.