Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-10-2016
itsspxndx itsspxndx is offline
Registrado
NULL
 
Registrado: jul 2016
Posts: 6
Poder: 0
itsspxndx Va por buen camino
Unhappy Articulos no vendidos por cliente

Buenos dias o buenas tardes amigos. Necesito apoyo de este foro, vengo trabajando sobre una consulta que parece ser muy sencillo pero por mas que le busco, aun no logro concretarlo bien.
Lo que necesito es llamar todos los articulos no vendidos pero por cada cliente, Mis tablas son la siguiente (solo puse campos necesario):

tabla que almacenan todos los artículos
ARTICULOS
articulo_id
Nombre

tabla que almacena los movimientos vendidos de cada articulo
DOCTO_VE_DET
docto_ve_det_id
docto_ve_id
articulo_id

tabla que almacena los documentos ligados con los movimientos y clientes
DOCTO_VE
docto_ve_id
cliente_id

codigo que he realizado
Código SQL [-]
FOR SELECT A.ARTICULO_ID
FROM ARTICULOS A
LEFT JOIN DOCTOS_VE_DET B
ON B.ARTICULO_ID = A.ARTICULO_ID
LEFT JOIN DOCTOS_VE C
ON C.DOCTO_VE_ID = B.DOCTO_VE_ID
AND C.CLIENTE_ID = 18634 (id de un cliente de ejemplo)
WHERE B.ARTICULO_ID IS NULL
INTO ARTICULO_ID
DO SUSPEND;

Pero no me ha funcionado, siempre me llama a todos los articulos sin respetar al cliente que he referenciado.
¿Alguien puede ayudarme por favor?
Responder Con Cita
  #2  
Antiguo 21-10-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
Hola

Intenta con esta consulta

Código SQL [-]
select cliente_id,  articulos.*
-- RELACION COMPLETA DE CLIENTES Y ARTICULOS
from (docto_ve, articulos)
WHERE NOT (cliente_id, articulo_id) IN (
  -- RELACION DE ARTICULOS POR CLIENTE
  select cliente_id, articulo_id
  from docto_ve
  inner join docto_ve_det on docto_ve_det.docto_ve_id=docto_ve.docto_ve_id
  group by cliente_id, articulo_id
)
GROUP BY cliente_id, articulo_id

IMPORTANTE: Solo te devolvera los clientes que tengan compras, si quieres incluir todos los clientes sustituye "docto_ve" del from principal por la tabla de clientes.

Espero que te sirva
Un saludo
Responder Con Cita
  #3  
Antiguo 21-10-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
La respuesta anterior esta implementada para MySQL, si no es este tu motor de BD tendrás que aplicar la forma IN con multicampos a tu respectivo motor, o puedes usar esta otra forma donde ya no esta el IN

Código SQL [-]
select docto_ve.cliente_id,  articulos.*
-- RELACION COMPLETA DE CLIENTES Y ARTICULOS
FROM (docto_ve, articulos)
LEFT join (
  -- RELACION DE ARTICULOS POR CLIENTE
  select cliente_id, articulo_id
  from docto_ve
  inner join docto_ve_det on docto_ve_det.docto_ve_id=docto_ve.docto_ve_id
  group by cliente_id, articulo_id
) dat ON dat.cliente_id=docto_ve.cliente_id  AND dat.articulo_id=articulos.articulo_id
WHERE dat.articulo_id is NULL
GROUP BY docto_ve.cliente_id, articulos.articulo_id

Un saludo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta de No coincidentes para productos no vendidos ctronx MySQL 6 04-04-2017 02:45:36
Consulta para informe de cantidad de articulos vendidos agustinbus Firebird e Interbase 5 11-09-2012 05:51:58
tabla articulos josi Varios 28 02-04-2008 11:30:55
Artículos en cd nugame Conexión con bases de datos 0 01-12-2004 14:03:45
Los artículos que mas aparecen magm2000 SQL 4 23-02-2004 17:40:55


La franja horaria es GMT +2. Ahora son las 01:04:50.


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
Copyright 1996-2007 Club Delphi