J'ai un problème avec ma requête. Je ne sais pas comment l'écrire correctement.
Maintenant, j'ai:
prop_id rfp_id _astat_code
3,400 4,599 shr
3,401 4,599 shr
3,398 4,600 shr
3,399 4,600 shr
3,402 4,601 shr
3,403 4,601 awr
Dans un bpm, nous avons beaucoup de propositions avec un identifiant unique. Je veux afficher uniquement rfp_id qui n'a pas astat_code = 'awr'.
Par exemple, j'ai:
SELECT i.bpm_id
FROM t_bpm_process i
WHERE NOT EXISTS
(
SELECT 1
FROM t_rfp_proposal r
JOIN t_rfp_request AS rfp ON rfp.rfp_id=r.rfp_id
WHERE r._astat_code ='awr'
AND r.status_code!='del'
AND rfp.bpm_id=i.bpm_id
)
Je veux afficher uniquement rfp_id 4599, 4600. p >
La formule doit être universelle. Car il y aura par exemple 12 rfp_id, donc ça ne peut pas être fait uniquement pour 3 rfps. Pouvez-vous m'aider?
3 Réponses :
Vous pouvez essayer d'utiliser un NOT IN
SELECT i.bpm_id FROM t_bpm_process i where i.rfp_id NOT IN ( select rfp_id from t_bpm_process where astat_code='awr' )
cela devrait faire l'affaire
select i.bpm_id
from t_bpm_process i,
t_rfp_proposal r,
t_rfp_request rfp
where rfp.bpm_id = i.bpm_id
and r.status_code != 'del'
and r._astat_code = 'awr'
SELECT i.bpm_id
FROM t_bpm_process i
LEFT JOIN
(
SELECT rfp.bpm_id
FROM t_rfp_proposal r
JOIN t_rfp_request rfp ON rfp.rfp_id=r.rfp_id
WHERE r._astat_code ='awr'
AND r.status_code!='del'
) AS t ON i.bqm_id = t.bqm_id
WHERE t.bqm_id IS NULL
Quel est le problème avec votre requête?
cela aurait probablement fonctionné en le changeant simplement en
select *où vous avezselect 1. Edit: non, il n'y a pas de comparaison en cours. ... Quoi qu'il en soit ... Aussi, envisagez de choisir une réponse à accepter.