2013-10-05 5 views
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_ruang и mr_ranap_dokter и получить ruper

и if bagian=perawat, он присоединится таблицу m_unit и muser_tdinas и получить nama

, но если может возвращать только данные, как любой другой способ сделать это? что я не могу изменить свою базу данных

ответ

1

Возможно, это не лучшее решение, но я решил использовать процедуру для своей проблемы, вот моя процедура;

CREATE DEFINER=`root`@`%` PROCEDURE `GetRuperRanap`(lIdUser Varchar(12)) 
BEGIN 
    Declare lBagian VarChar(20); 
    SELECT bagian into lBagian FROM `muser` where id_user = lIdUser; 
    if lBagian='DOKTER' then 
     SELECT distinct b.ruper as ruper from bsl_ruang b join mr_ranap_dokter d on (b.noregis=d.noregis) where d.dokter = lIdUser; 
    else 
     SELECT u.nama as ruper FROM m_unit u join muser_tdinas t on(t.unit=u.unit) where id_user = lIdUser; 
    end if; 
END; 

и мне просто нужно назвать его по запросу, надеюсь, что это поможет

Смежные вопросы