Devo relazionare in una unica SELECT due tabelle, di tutti i campi che ci sono gli unici che mi servono per la QUERY sono quelli sotto elencati (il DB é in spagnolo ed anche i campi).
(TABELLA documentos)
- id_documentos (chiave primaria)
- estatus_documentos (1 documento attivo, 2 documento non attivo)
- permisos_documentos (1 documento visibile a tutti ossia pubblico, 2 é privato ed é visibile solo se autorizzato ossia se l'usuario appare nella tabella permisos_documentos)
(TABELLA permisos_documentos)
- id_documentos (relazione con l'id_documentos della tabella 'documentos')
- id_usuario (id del usuario autorizzato)
In pratica devo visualizzare dei record in base ai seguenti filtri:
1) che il campo estatus_documentos = 1 ossia solo documenti attivi
2) che il campo permisos_documentos = 1 o se é con il valore 2 si visualizza solo se l'usuario appare nella tabella permisos documentos)
3) l'usuario di prova é il id_usuario = 45
Faccio un esempio pratico con DB di prova:
TABELLA documentos
id_documentos | estatus_documentos | permisos_documentos
33 1 1
34 1 2
35 1 2
36 2 1
TABELLA permisos_documentos
id_documentos | id_usuario
34 45
35 76
In questo esempio solo si deve visualizzare della tabella documentos i records:
33 (perché documento pubblico) e 34 (documento privato peró autorizzado nell'altra tabella con id_usuario = 45)
il 34 non lo visualizzo perché anche se é autorizzato non é l'usuario di prova e il 36 anche se pubblico non é attivo
la mia QUERY di prova anche se sbagliata... é la seguente:
SELECT * FROM documentos WHERE estatus_documentos = 1 AND permisos_documentos = 1 || (id_documentos IN (SELECT id_documentos FROM permisos_documentos WHERE id_usuario = 45))
Spero di essermi spiegato grazie a tutti.