Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con consulta

Estas en el tema de ayuda con consulta en el foro de Mysql en Foros del Web. Tengo un pequeño problema que no se como resolver y seguro que para alguno de ustedes es muy facil. Tengo una tabla (clientes con un ...
  #1 (permalink)  
Antiguo 20/08/2009, 09:57
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
ayuda con consulta

Tengo un pequeño problema que no se como resolver y seguro que para alguno de ustedes es muy facil.

Tengo una tabla (clientes con un campo que es id_cliente)
otra tabla que es (comanda con un campo que es id_cliente)
y otra tabla que es (feines con un campo que es id_cliente)

a parte de estos campos tienen otros mas genericos , estos son los que uso para enlazarlas entre ellas.

lo que necesito es saber los clientes (id_cliente) que tienen entradas en cada una de las dos tablas y que no se repita la informacion)

vaya, que me salgan solo los identificadores de cliente

puede ser que un cliente este enlazado a comandes, pero que no este enlazado a feines y al rebes.

Espero haberme explicado bien y gracias de antemano
  #2 (permalink)  
Antiguo 20/08/2009, 10:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 9 meses
Puntos: 360
Respuesta: ayuda con consulta

flanagan44

Sin un ejemplo, difícilmente se te entiende.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 20/08/2009, 10:52
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: ayuda con consulta

Con algo asi sacas todos los datos que requieres
Cita:
SELECT idCliente FROM clientes,comanda,feines WHERE clientes.idcliente=comanda.idcliente and clientes.idcliente=feines.idcliente
y con algo asi los diferencias
Cita:
SELECT DISTINTC
S.E.U.O.
  #4 (permalink)  
Antiguo 20/08/2009, 10:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: ayuda con consulta

Suponiendo que en cada uno haya n campo id, la cosa andaría por aquí...:
Código SQL:
Ver original
  1. SELECT cliente_id, COUNT(comandes_id) EnComande, COUNT(feines_id) EnFeines
  2. FROM cliente t1 LEFT JOIN comandes t2 USING(cliente_id)
  3.           LEFT JOIN feines t3 USING(cliente_id)
  4. GROUP BY cliente_id;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 20/08/2009, 11:02
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ayuda con consulta

Cita:
Iniciado por huesos52 Ver Mensaje
flanagan44

Sin un ejemplo, difícilmente se te entiende.

saludos
dime que necesitas para el ejemplo?

haber si con esto va mejor.
Código:
tabla clienttabla feines tabla comandes

id_client                           id_feina               id_comanda                                          
cif                                     id_client               id_client
nom                                 data                     data
direccio                            facturar                entregada
poblacio                           facturada             facturar
cp                                                                 facturada
provincia
Lugo por ejemplo tenemos los clientes:

Pedro --> (1,B000000000,Pedro,calle 13,pozuelo,09878,porahy)
que tiene la faena
(1,1,2009/05/05,1,0)
y el pedido (1,1,2009/05/06,1,1,0)
y esta el otro cliente
Andres --> (2,B200000000,Andres,calle 14,pozuela,09879,porahy)
que solo tiene una fena
(2,2,2009/06/05,1,0)
y esta Luis --> (3,B000033000,Luis,calle 15,pozuelo,09878,porahy)
que no tiene ni faenas ni pedidos
y por ultimo queda
Alberto --> (4,B044000000Alberto,calle 13,pozuelo,09878,porahy)
que tiene 2 pedidos
(2,4,2009/05/07,1,1,0)
(3,4,2009/05/09,1,1,0)

Pues teniendo todo esto montado necessitaria que me devolviese:

Pedro 1
Andres 2
Alberto 4

vaya, necesitaria solo los clientes que tienen alguna cosa pendiente de facturar, independientemente que sea una faena o un pedido
y que no me salga el nombre ni el identificador repetido


espero que con esto quede mas claro, gracias de nuevo y un saludo
  #6 (permalink)  
Antiguo 20/08/2009, 11:05
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ayuda con consulta

Ahora he visto las otras respuestas, lo intento y os digo alo
gracias
  #7 (permalink)  
Antiguo 20/08/2009, 11:11
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ayuda con consulta

Cita:
Iniciado por nonpublic Ver Mensaje
Con algo asi sacas todos los datos que requieres

y con algo asi los diferencias


S.E.U.O.

con este no funciona, solo me muestra los que tienen pedidos y faenas

voy a por el otro
  #8 (permalink)  
Antiguo 20/08/2009, 11:22
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: ayuda con consulta

Cita:
Iniciado por flanagan44 Ver Mensaje
con este no funciona, solo me muestra los que tienen pedidos y faenas

voy a por el otro
Modifica la consulta y agregale un OR
  #9 (permalink)  
Antiguo 20/08/2009, 11:32
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: ayuda con consulta

he modificado esta con todos los condicionales y parece que me funciona
Código SQL:
Ver original
  1. SELECT client.id_client
  2. FROM client  LEFT JOIN comandes  USING(id_client)
  3. LEFT JOIN feines  USING(id_client)
  4. WHERE comandes.facturada=0
  5. AND comandes.Entregada=1
  6. AND comandes.Visible=1
  7. OR feines.facturada=0
  8. GROUP BY client.id_client
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:00.