programing

Mysql SELECT CASE when something and return 필드

closeapi 2023. 10. 28. 07:56
반응형

Mysql SELECT CASE when something and return 필드

나는 nmu와 nmi 두개의 필드를 가지고 있습니다.

if nnmu is equal to 1, I need to return naziv_mesta from **mesto_istovara**,
else if it's =0 I need to return naziv_mesta from mesto_utovara table

그리고 역으로,

if nnmi is equal to 1, then I need  to return naziv_mesta from **mesto_utovara,** 
else if it's =0 need to return naziv_mesta from mesto_istovara.

처음에는 모든 것이 좋아 보이지만 어떻게든 값을 섞습니다. nnmi와 nnmu가 모두 0일 때 작동하지만 둘 중 하나의 값이 1일 때는 넌센스를 반환합니다.도와줄 사람?

select u.id_utovar,
             u.datum_isporuke,
             u.broj_otpremnice,
             r.naziv_robe,              
             CASE u.nnmu 
              WHEN u.nnmu ='0' THEN mu.naziv_mesta
              WHEN u.nnmu ='1' THEN m.naziv_mesta
             ELSE 'GRESKA'
             END as mesto_utovara,
             CASE u.nnmi
              WHEN u.nnmi = '0' THEN m.naziv_mesta 
              WHEN u.nnmi = '1' THEN mu.naziv_mesta
              ELSE 'GRESKA'
             END as mesto_istovara,                                                
             m.adresa,
             m.kontakt_osoba,
             m.br_telefona,
             u.broj_paleta,
             u.bruto,
             k.username,
             u.napomena,                  
             v.registracija,
             p.naziv_prevoznika,
             u.cena,
             u.korisnik_logistika,
             u.korisnik_analitika,
             u.datum_unosa,
             u.vreme_unosa,
             u.zakljucan,
             u.id_mesto_utovara,
             u.id_mesto_istovara,
             u.nnmu,
             u.nnmi             
      FROM utovar u ,mesto_utovara mu, mesto_istovara m, roba r, vozila v,prevoznik p, korisnik k
      WHERE u.id_mesto_istovara=m.id_mesto_istovara
       and k.id_korisnik = u.korisnik
       and r.id_robe=u.id_robe 
       and u.id_mesto_utovara = mu.id_mesto_utovara 
       and v.id_vozilo = u.id_vozilo 
       and p.id_prevoznik = u.id_prevoznik
       ORDER by u.id_utovar DESC

당신은 두개의 다른 것을 섞고 있습니다. CASE구문이 부적절합니다.

이 스타일 사용(검색)

  CASE  
  WHEN u.nnmu ='0' THEN mu.naziv_mesta
  WHEN u.nnmu ='1' THEN m.naziv_mesta
 ELSE 'GRESKA'
 END as mesto_utovara,

또는 이 스타일(심플)

  CASE u.nnmu 
  WHEN '0' THEN mu.naziv_mesta
  WHEN '1' THEN m.naziv_mesta
 ELSE 'GRESKA'
 END as mesto_utovara,

없음(단순하지만 부울 검색 술어 사용)

  CASE u.nnmu 
  WHEN u.nnmu ='0' THEN mu.naziv_mesta
  WHEN u.nnmu ='1' THEN m.naziv_mesta
 ELSE 'GRESKA'
 END as mesto_utovara,

MySQL에서는 다음을 테스트합니다.u.nnmu부울 식의 값과 같습니다.u.nnmu ='0'그 자체.여부와 관계없이u.nnmu1아니면0그 경우의 표현 자체의 결과적으로1

예를 들어 만약nmu = '0'그때()nnmu ='0')로 평가합니다.true(1) 그리고 ()nnmu ='1')로 평가합니다.false(0). 이들을 사례에 대입하면 다음과 같은 결과를 얻을 수 있습니다.

 SELECT CASE  '0'
  WHEN 1 THEN '0'
  WHEN 0 THEN '1'
 ELSE 'GRESKA'
 END as mesto_utovara

한다면nmu = '1'그때()nnmu ='0')로 평가합니다.false(0) 그리고 ()nnmu ='1')로 평가합니다.true(1). 이들을 사례에 대입하면 다음과 같은 결과를 얻을 수 있습니다.

 SELECT CASE  '1'
  WHEN 0 THEN '0'
  WHEN 1 THEN '1'
 ELSE 'GRESKA'
 END as mesto_utovara

언급URL : https://stackoverflow.com/questions/4356318/mysql-select-case-when-something-then-return-field

반응형