SQL - seleccionar todos complejo

 
Vista:
sin imagen de perfil

seleccionar todos complejo

Publicado por hola (3 intervenciones) el 27/08/2015 16:30:11
Buenos dias gente.

Tengo las siguientes tablas:

medicamento(id, nombre)
persona(id, nombre)
cliente(id, tipo)
clientepersona(idcliente, idpersona)
empresa(id, nombre, idpersonadueno)
establecimiento(id, idempresa, nombre)
clienteestablecimiento(idcliente, idestablecimiento)
remitosalida(id, numeroremito, serieremito, fecharemito, idcliente)
remitosalidadetalle(idremitosalida, idmedicamento, cantidad)

yo tengo que listar todos los remitos de salidas con su detalle, el medicamnto y el cliente del remito,
el tema que como hay varios cliente no se como hacer, puede llegar a sacar todos los remitos con su detalle, su medicamento y su cliente pero solo de un tipo de cliente (es decir de cliente persona por ejemplo, qie para sacar los datos de la persona hago join con persona).

pero tengo que listar todos los remitos con los clientepersonas y los clienteestablecimiento.

esto lo que yo hago:

select vrsd.rsd_idmedicamento,vresa.resa_fecharemito,vresa.resa_numeroremito,vresa.resa_serie , vrsd.rsd_cantidad, vcli.cli_id,vper.*
from vet_remitosalida vresa,vet_remitosalidadetalle vrsd,vet_cliente vcli, vet_clientepersona vclpe, vet_persona vper,
where
vresa.resa_idcliente = vcli.cli_id
and vcli.cli_id in (
select vclpe2.clpe_idcliente from vet_clientepersona vclpe2 where vclpe2.clpe_idcliente = vclpe.clpe_idcliente
and vclpe2.clpe_idpersona = vper.per_id)

con esto puedo sacar los remitos del clientepersona con los datos de la persona

pero despues de los parentisis le pongo

or (vcli in(aca hago la seleccion con cliente establecimiento, con empresa y con el dueno de la empresa y me tiro muchas filas que no son las que tengo registradas)

Desde ya muchas gracias
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

seleccionar todos complejo

Publicado por Isaias (1921 intervenciones) el 27/08/2015 20:13:52
¿En que motor de base de datos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

seleccionar todos complejo

Publicado por hola (3 intervenciones) el 27/08/2015 20:30:50
Gracias por tu respuesta.
Utlizo phpMyAdmin mysql , no se la version

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

seleccionar todos complejo

Publicado por hola (3 intervenciones) el 28/08/2015 06:43:07
CREO que lo pude solucionar, si esta mal por favor avisenme.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
select
resa_fecharemito as resa_fecharemito,
resa_numeroremito as resa_numeroremito,
resa_serie as resa_serie,
resa_idcliente as resa_idcliente,
rsd_idmedicamento as rsd_idmedicamento,
rsd_cantidad as rsd_cantidad,
per_id as per_id,
per_nombre as per_nombre,
per_apellido as per_apellido,
cli_numerosocio as cli_numerosocio,
'' as est_idestablecimiento,
'' as est_dicose,
'' as emp_id,
'' as emp_rut
from
((((vet_remitosalida
Join vet_remitosalidadetalle on resa_id = rsd_idresa)
Join vet_cliente on cli_id = resa_idcliente)
Join vet_clientepersona on clpe_idcliente = cli_id)
Join vet_persona on per_id = clpe_idpersona)
union
select
resa_fecharemito as resa_fecharemito,
resa_numeroremito as resa_numeroremito,
resa_serie as resa_serie,
resa_idcliente as resa_idcliente,
rsd_idmedicamento as rsd_idmedicamento,
rsd_cantidad as rsd_cantidad,
per_id as per_id,
per_nombre as per_nombre,
per_apellido as per_apellido,
cli_numerosocio as cli_numerosocio,
est_idestablecimiento as est_idestablecimiento,
est_dicose as est_dicose,
emp_id as emp_id,
emp_rut as emp_rut
from
((((((vet_remitosalida
Join vet_remitosalidadetalle on resa_id = rsd_idresa)
Join vet_cliente on cli_id = resa_idcliente)
Join vet_clienteestablecimiento on cles_idcliente = cli_id)
Join vet_establecimiento on est_idestablecimiento = cles_idestablecimiento)
join vet_empresa on emp_id = est_idempresa)
Join vet_persona on per_id = emp_idpersonadueno);

Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar