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

[SOLUCIONADO] listar anuncios a los que el usuario no ha aplicado

Estas en el tema de listar anuncios a los que el usuario no ha aplicado en el foro de Mysql en Foros del Web. Hola a todos, Tengo la siguiente duda, Estoy trabajando en un sistema de avisos clasificados, los usuarios inician sesion y acceden a los avisos clasificados ...
  #1 (permalink)  
Antiguo 23/05/2016, 14:02
 
Fecha de Ingreso: octubre-2013
Ubicación: COLOMBIA
Mensajes: 28
Antigüedad: 10 años, 6 meses
Puntos: 0
listar anuncios a los que el usuario no ha aplicado

Hola a todos,

Tengo la siguiente duda,

Estoy trabajando en un sistema de avisos clasificados, los usuarios inician sesion y acceden a los avisos clasificados de la empresa, pueden enviar solicitudes a los anuncios en caso de estar interesados (por ejemplo en el caso de las vacantes laborales)

En la tabla anuncios están todos los atributos del los anuncios, titulo, descripción, estadoAnuncio, fecha de publicación...

En la tabla solicitudes por su parte esta un registro por cada solicitud que se halla enviado al anuncio, los campos de esta tabla son: idSolicitud, idAnuncio, idPersona, idEmpresa, estadoPersona, estadoEmpresa... El campo idPersona es FK con la tabla personas y el campo idEmpresa es FK con la tabla empresas.

Necesito listar todas los anuncios a los que el usuario no halla aplicado

Como podria hacerlo?


Gracias de antemano,

Cualquier ayuda es bienvenida
  #2 (permalink)  
Antiguo 23/05/2016, 14:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: listar anuncios a los que el usuario no ha aplicado

En tu descripcion tienes todos los datos necesarios para realizar la consulta. SImplemente debes excluir a los que aparecen en la tabla que mencionas en esta parte:
Cita:
En la tabla solicitudes por su parte esta un registro por cada solicitud que se halla enviado al anuncio, los campos de esta tabla son: idSolicitud, idAnuncio, idPersona, idEmpresa, estadoPersona, estadoEmpresa... El campo idPersona es FK con la tabla personas y el campo idEmpresa es FK con la tabla empresas.
¿Cual es la duda? ¿Como escribirías TU esa consulta de exclusión de ese conjunto?

Desde ya no parece compleja... Consultas de exclusion pueden encontrar en casi todos los manuales y tutoriales.
¿Probaste hacerla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/05/2016, 14:25
 
Fecha de Ingreso: octubre-2013
Ubicación: COLOMBIA
Mensajes: 28
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: listar anuncios a los que el usuario no ha aplicado

Maestro! gnzsoloyo, primero que todo muchas gracias, usted es toda una eminencia en el tema y gracias a su valiosa ayuda he podido solucionar algunos de los inconvenientes mas grandes que he tenido en bases de datos.

La consulta que hice es la siguiente:
Código MySQL:
Ver original
  1. SELECT DISTINCT * FROM slctds AS s RIGHT JOIN anuncios AS v ON s.idAnuncio = v.idAnuncio
  2. INNER JOIN empresas AS e ON v.idEmpresa = e.idEmpresa INNER JOIN paises AS p ON v.idPais = p.idPais
  3. INNER JOIN ciudades AS c ON v.idCiudad = c.idCiudad WHERE v.estadoAnuncio=1 AND s.idPersona!='$idUser'

Última edición por gnzsoloyo; 23/05/2016 a las 14:47
  #4 (permalink)  
Antiguo 23/05/2016, 14:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: listar anuncios a los que el usuario no ha aplicado

En base a eso, esta sería la forma más simple:
Código MySQL:
Ver original
  1.     *
  2.     anuncios v
  3.         INNER JOIN
  4.     empresas e ON v.idEmpresa = e.idEmpresa
  5.         INNER JOIN
  6.     paises p ON v.idPais = p.idPais
  7.         INNER JOIN
  8.     ciudades c ON v.idCiudad = c.idCiudad
  9.     v.estadoAnuncio = 1
  10.         AND v.idAnuncio NOT IN (SELECT
  11.             idAnuncio
  12.         FROM
  13.             slctds
  14.         WHERE
  15.             idPersona = '$idUser');
__________________
¿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 23/05/2016, 15:54
 
Fecha de Ingreso: octubre-2013
Ubicación: COLOMBIA
Mensajes: 28
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: listar anuncios a los que el usuario no ha aplicado

Funciona perfectamente!!

Muchas Gracias,

Saludos Cordiales.

Etiquetas: anuncios, campo, fecha, tabla, usuario
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 22:09.