Modifica Seleziona query con dove la clausola di una query per avere una sola selezione nella query

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

  •  25-08-2022
  •  | 
  •  

Domanda

Ok quindi come posso cambiare questo:

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'

per avere solo uno selezionato?

Presumo di dover usare una qualche forma di join interiore, ma non sono sicuro di WT e come

È stato utile?

Soluzione

per sostituire il tuo in clausola, potresti farlo

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

Ma un inner join non è lo stesso di un in clausola. Quindi non dovresti più usare select *, ma almeno select quallev.*

E se il join recupera più di 1 qual_qualification per ciascuno quallev_qualificationlevel, otterrai risultati duplicati, quindi potresti aver bisogno di un distinct clausola.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top