2016-11-09 79 views
0

我在表(患者),其包含在(源碼分貝)表項(ID,NOM,PNOM,DDN,日期,比蘭,法令)源碼選擇數據,並插入到另一表作爲行

例如1行的結構:

<table border="1"> 
 
    <tr> 
 
    <td>id</td><td>nom</td><td>pnom</td><td>ddn</td><td>date</td><td>bilan</td><td>ordonnance</td> 
 
    </tr> 
 
    <tr> 
 
    <td>1</td><td>Someone</td><td>Someone</td><td>12/12/1992</td><td>12/01/2016</td><td>?12/01/2016!dat goes here?15/01/2016!dat goes here?nn/nn/nnnn!nnn goes here</td><td>?12/01/2016!dat goes here?15/01/2016!dat goes here?nn/nn/nnnn!nnn goes here</td> 
 
    </tr> 
 
</table>

我已經創建了兩個表 「比蘭」 和 「法令」,它們都包含

id, pid, date, data 

是否有可能,通過SQL,到:

select id, bilan from patient 

然後

insert into bilan (pid, date, data) Values (patient.id, '12/01/2016', 'dat goes here'); 
insert into bilan (pid, date, data) Values (patient.id, '15/01/2016', 'dat goes here'); 
insert into bilan (pid, date, data) Values (patient.id, 'nn/nn/nnnn', 'nnn goes here'); 

與 「法令」

+0

查看UPDATE或REPLACE JOIN –

+0

* user3240704 :: How? –

+0

喜歡[這](http://stackoverflow.com/a/3845931/3240704)但是,與sqllite3可能會有一些變化 –

回答

0

同樣的事情,我沒有SQLlite來測試這一點,它是改編自this answer

UPDATE bilan 
    SET 
      pid = (SELECT ordonnance.pid 
           FROM ordonnance 
           WHERE ordonnance.id = bilan.id) 
     , date = (SELECT ordonnance.date 
           FROM ordonnance 
           WHERE ordonnance.id = bilan.id) 
     , data = (SELECT ordonnance.data 
           FROM ordonnance 
           WHERE ordonnance.id = bilan.id) 
    WHERE 
     EXISTS (
      SELECT * 
      FROM ordonnance 
      WHERE ordonnance.id = bilan.id 
     ) 
+0

我真的很感謝你的幫助,非常感謝你! –

0

的問題是,也許並不清楚。 例如,下面是列表的一個示例:「bilan」來自表格「patient」中的id:「17」

?08/01/2014!0 | 1 | 0 | 1 | 0 | 0 | 04/03/2015!1 | 1 | 1 | 1 | 1 | 0?24/11/2016!0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0

想要的結果,在表比蘭,是這三列:

ID:1 PID:17 日期:2014年8月1日 數據:0 | 1 | 0 | 1 | 0 | 0

id:2 pid:1 7 日期:2015年4月3日 數據:1 | 1 | 1 | 1 | 1 | 0

ID:3 PID:17 日期:24/11/2016 數據:0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0

我的INSERT語句,在應用中,是:

"UPDATE patient SET bilan = ifnull(bilan || '?" + today_ +"!" +$s+"', '?" + today_ +"!" +$s+"') WHERE ID="+oCurrent.id; 

我做了這個解決方案:

Update patient set bilan=bilan|| '?' where bilan is not null; 

然後:

--steps from here to be repeated untill all bilan are null 
insert into bilan (pid, date, data) 
SELECT id, 
substr(bilan, instr(bilan, '?')+1 , instr(bilan, '!') -2), 
substr(
    substr(bilan, instr(bilan, '!')+1), 
    1, 
    instr( substr(bilan, instr(bilan, '!')+1), '?')-1 
    ) 
FROM patient where bilan is not null; 

--next 
Update patient 
set bilan = substr(
    substr(bilan, instr(bilan, '?')+1), 
    instr(substr(bilan, instr(bilan, '?')+1), '?') 
    ) 
where bilan is not null; 
--next 
Update patient set bilan = NULL where bilan ='?'; 
--end 
相關問題