Cita:
Iniciado por sonystar_17 lo que quiere es verificar si "X" persona asistió o no a la charla , por eso mi comentario mas arriba.
necesita simplemente la cédula para extraer el estado de x persona.
ya sustentio se le explico!
Entiendo lo que dices en tu comentario anterior.
Pero hasta ahora las sentencias que habéis mostrado responden de a la pregunta
¿ha asistido o no X persona a alguna charla,
cualquiera de ellas ?
Cuando entiendo que la pregunta que se debe responder es: ¿ a asistido o no X persona a la charla
Y o a la charla del proyecto
Z?
Desglosemos un poco el tema, sólo por curiosidad.
¿ Un usuario puede asistir a una, a varias o a ninguna charla?
¿ A una charla pueden asistir uno, varios o ningún usuario ?
Si ambas respuestas son SÍ,
podemos deducir que esiste una relación N:N entre las entidades
usuarios y
charlas
derivada de la asistencia.
Por lo que necesitaremos 3 tablas mínimo para representar el modelo, corrijanme equivoco.
usuarios
PK_usuario
Resto de atributos
charlas
PK_charla
Resto de atributos
asistencias
PK_asistencia
FK_usuario
FK_charla
estado
Resto de atributos
Añadamos el proyecto.
proyectos
PK_proyecto
resto de atributos
¿Un usuario puede acceder al proyecto si participo en una charla,
cualquiera de ellas
o solo puede aceder al proyecto si participo en la
charla especifica del proyecto?
Si la respuesta es,
si participo en cualquiera de las charlas, la que sea:
Código SQL:
Ver originalSELECT * FROM asistencias WHERE FK_usuario=susarioX AND estado=asistio LIMIT 1
si devuelve almenos un registro es que asistio almeno a 1 charla,
de lo contrario no asistio a ninguna
Si la respuesta es,
si participo en una charla especifica, la del proyecto:
- Debemos añadir primero esa relacion entre charlas y proyectos ( una charla pertenece a un proyecto)
¿ Un proyecto puede tener una, varias o ninguna charla ? SI, una, varias o ninguna
¿ Una charla puede pertenecer a mas de un proyecto ? NO, solo a un proyecto
charlas
PK_charla
FK_proyecto
Resto de atributos
Ahora podemos preguntar ¿ El usuario X asitio a la charla del proyecto Z ?
Código SQL:
Ver originalSELECT * FROM asistencias
INNER JOIN charlas ON asistencias.FK_charla=charlas.PK_charla
WHERE asistencias.FK_usuario=X AND charlas.FK_proyecto=Z AND estado=asistio
--------------------
Lo que no termino de entender en tu enunciado es esta ultima relacion entre el proyecto, la charla y el usuario.
Tus relaciones son ambiguas y tus requerimientos poco precisos.
No pretendo sarmonearte ni mucho menos, pero es dificil, dar una respuesta certera cuando
la definicion del proyecto es ambigua, poco precisa o los requerimientos estan mal planteado
o no son claros.
---------------------
Veamos tu caso:
usuarios ( Almacena los usuarios del sistema )
id ( identificador unico )
cedula ( ¿es un PK de usuarios, es unico?, para que quieres el id entonces )
resto de atributos
pre_inscripcion ( Almacena los usuarios pre_inscritos a un proyecto)
(donde esta el PK)
cedula (FK tabla usuarios)
idcarreras ( a que hace referencia, de donde sale, es el PK)
estado (representa el estado; asite, no asiste, por asistir)
inscripcion_alumnos
id (PK)
idinscripcion_proyectos ( FK tabla inscripcion_proyectos)
cedula (FK tabla usuarios)
inscripcion_proyectos
id (PK)
resto de campos
Claramente viendo esto, en tus tablas falta determinar de forma clara y concisa tus requerimientos:
Un usuario cuando esta preinscrito. ¿Que significa? ¿ para que esta preinscrito ? ¿ par un proyecto, para todos los proyectos ? ¿ esiste una relacion entre proyectos y preinscritos?
En fin necesitas pulir este aspecto como bien han comentado.
por otro lado si respondes a estas preguntas y alas del ejemplo quizas pueda o podamos ayudarte con un ejemplo mas preciso.