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

validaciones entre varias compras SQL, subconsultas

Estas en el tema de validaciones entre varias compras SQL, subconsultas en el foro de Mysql en Foros del Web. hola miren tengo una consulta, en la cual deberia validar varias veces por lo que creo que junto a php , deberia hacerlo en partes ...
  #1 (permalink)  
Antiguo 02/12/2015, 06:12
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 14 años, 5 meses
Puntos: 5
validaciones entre varias compras SQL, subconsultas

hola miren tengo una consulta, en la cual deberia validar varias veces por lo que creo que junto a php , deberia hacerlo en partes y no en una sola consulta, miren por ejemplo


en resumen el tema es asi...

tengo clientes que realizan compras por ejemplo sera asi

cliente / id_compra (COMPRAS)

1-----------45
2-----------7
3-----------88
4-----------46
1-----------32
1-----------102
4-----------66
3-----------99
3-----------105

-------------------------

y por otro lado tengo una tabla donde tengo los id_compra a los que se envio mails, pueden ser calificadas

id_compra (MAILS_ENVIADOS)

32
102
88
66
7
105

--------------------------

y por otro lado tengo las compra que ya fueron calificadas

id_compra (CALIFICADAS)

7
105

--------------
bueno lo que quiero es buscar por un determinado ID, supongamos que es "3" validar sus id_compras , en este caso son (88,99,105)
ahi seria una validacion . luego verificar que esas compras esten en la tabla (MAILS ENVIADOS) osea en la segunda tabla que coloque, osea que esas compras estuvieron aptas para ser calificadas, ahi seria una segunda validacion. y por ultimo de esas compras de ese usuario, teniendo las que estuvieron aptas para ser calificadas, descartar las que esten en la ultima tabla , osea en la tabla CALIFICADAS

por ejemplo del cliente 3 hizo las compras (88,99,105) tuvo para ser calificadas la (88,105) pero solo califico la (105) entonces entre esas validaciones lo que me deberia traer es solo la compra "88"

yo preferi hacerlo con sql y php., asi ? por las validaciones...



osea abajo le entra las variables de cliente y de una compra esta query devuelve SI o NO. si puede ser calificada. por ahi la compra no existe como compra del cliente, tal vez no se le envio el mail, y tal vez nunca estuvo apta para ser calificada, o ya se califico...

Código MySQL:
Ver original
  1. SELECT a.id_compra FROM compras po JOIN MAILS_ENVIADOS b
  2.          ON a.id_compra=b.id_compra WHERE a.id_customer=3;

Código MySQL:
Ver original
  1. SELECT 1 FROM CALIFICADAS WHERE id_compra=88;
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las reglas del foro, por favor.,

Última edición por gnzsoloyo; 02/12/2015 a las 07:19
  #2 (permalink)  
Antiguo 02/12/2015, 07:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: validaciones entre varias compras SQL, subconsultas

Código MySQL:
Ver original
  1. SELECT a.id_compra
  2. FROM compras a
  3.     INNER JOIN MAILS_ENVIADOS b ON a.id_compra=b.id_compra
  4. WHERE a.id_customer=3
  5.    AND NOT EXISTS (SELECT 1 FROM calificadas ca WHERE ca.id_compra = a.id_compra );

Eso devolvería aquellas compras a cuyos clientes se les envió e-Mail, pero aún no han sido calificadas.

Código MySQL:
Ver original
  1. SELECT a.id_compra, IF(b.id_compra IS NULL, 'e-Mail no enviadol', 'Pendiente de calificacion') Estado
  2. FROM compras a
  3.     INNER JOIN MAILS_ENVIADOS b ON a.id_compra=b.id_compra
  4. WHERE a.id_customer=3
  5.    AND NOT EXISTS (SELECT 1 FROM calificadas ca WHERE ca.id_compra = a.id_compra );

Esto devuelve una segunda columna indicando el estado de envios o respuestas de e-Mail.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: compras, join, php, select, sql, subconsultas, tabla
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 11:48.