Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consultar tres tablas y mostrar campo vacío (https://www.clubdelphi.com/foros/showthread.php?t=94313)

cl2raul 23-11-2019 15:18:00

consultar tres tablas y mostrar campo vacío
 
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

1 Archivos Adjunto(s)
Aaqui una captura de pantalla de la consulta, Archivo Adjunto 3795Archivo Adjunto 3795

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:
Código SQL [-]

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

Cita:

Empezado por cl2raul (Mensaje 534561)
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

Cita:

Empezado por cl2raul (Mensaje 534561)
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

Cita:

Empezado por cl2raul (Mensaje 534567)
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

Cita:

Empezado por novato_erick (Mensaje 534563)
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.


La franja horaria es GMT +2. Ahora son las 15:52:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi