Modifiez la requête de sélection avec la clause d'une requête pour avoir une seule sélection dans la requête

StackOverflow https://stackoverflow.com/questions/20353260

  •  25-08-2022
  •  | 
  •  

Question

Ok alors comment puis-je changer ceci:

select * from quallev_qualificationlevel quallev
where quallev.quallev_qual_id in (/* */ select qual.qual_id from qual_qualification qual, qde_qualificationdescription qde
where (qual.qual_id = qde.qde_qual_id)
and qual.qual_startdate <= '2013-12-02'
and qual.qual_enddate >= '2013-12-02'
and qde.qde_namepurpose_cd_id = 7294
and qde.qde_langauge_id = 2
and qde.qde_startdate <= '2013-12-02'
and qde.qde_enddate >= '2013-12-02'
order by qual.qual_id,
        qual_code /* */)
and quallev.quallev_startdate <= '2013-12-02'
and quallev.quallev_enddate >= '2013-12-02'

pour avoir un seul choix?

Je suppose que je dois utiliser une forme de jointure intérieure, tout simplement pas sûr WT et comment

Était-ce utile?

La solution

Pour remplacer votre in clause, tu pourrais faire

inner join qual_qualification qual on qual.qual_id = quallev.quallev_qual_id
inner join qde_qualificationdescription qde on qual.qual_id = qde.qde_qual_id

Mais un inner join n'est pas la même chose qu'un in clause. Donc tu ne devrais plus utiliser select *, mais au moins select quallev.*

Et si le jointure récupére plus de 1 qual_qualification pour chaque quallev_qualificationlevel, vous obtiendrez des résultats en double, vous pouvez donc avoir besoin d'un distinct clause.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top