0

if 句を使用してテーブルからデータを取得する必要があります。これは、私がやろうとしていることの例です。

select if (condition='example',
(/*query1(return more than one row)*/),
(/*query2(return more than one row)*/) as data from table1 where iduser='1'

私の完全なクエリ:

SELECT 
if(bagian='DOKTER',
(SELECT b.ruper
from bsl_ruang b 
join mr_ranap_dokter d 
on (b.noregis=d.noregis) 
where d.dokter = '999999'),
(SELECT u.nama 
FROM m_unit u 
join muser_tdinas t 
on(t.unit=u.unit) 
where id_user = '999999')) as ruper 
FROM `muser` where id_user = '999999'

私のテーブル;

bsl_ruang                    mr_ranap_dokter       
++========++======++         ++========++========++
||noregis ||ruper ||         ||dokter  ||noregis ||
++========++======++         ++========++========++
||10000000||ruper1||         ||9999999 ||10000000||
||10000001||ruper2||         ||9999999 ||10000001||
++========++======++         ++========++========++

m_unit                       muser_tdinas                  m_user
++========++======++         ++========++========++        ++========++=======++
||unit    ||nama  ||         ||id_user ||unit    ||        ||id_user ||bagian ||
++========++======++         ++========++========++        ++========++=======++
||00001   ||ruper1||         ||8888888 ||00001   ||        ||9999999 ||DOKTER ||
||00002   ||ruper2||         ||8888888 ||00002   ||        ||8888888 ||PERAWAT||
++========++======++         ++========++========++        ++========++=======++

まとめ

そのためif bagian=dokter、テーブルに参加bsl_ruangmr_ranap_dokterて取得しますruper

if bagian=perawat、テーブルに参加m_unitmuser_tdinas、取得しますnama

しかし、句が1つのデータしか返すことができない場合、これを行う他の方法はありますか? データベースを変更できないことに注意してください

4

1 に答える 1