【问题标题】:sqlite select data from column and insert into an other table as a rowsqlite 从列中选择数据并作为行插入到另一个表中
【发布时间】:2016-11-25 09:24:15
【问题描述】:

我在表 (患者) 的 (sqlite db) 中有条目,其中包含 (id, nom, pnom, ddn, date, bilan, ordonnance)

例如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>

我创建了两个表“bilan”和“ordonnance”,它们都包含

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');

与“法令”相同

【问题讨论】:

  • 使用 JOIN 签出 UPDATE 或 REPLACE
  • * user3240704 :: 怎么样?
  • this 但是使用 sqllite3 可能会有一些变化

标签: sqlite


【解决方案1】:

我没有 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
        )

【讨论】:

    【解决方案2】:

    这个问题可能还不清楚。 例如,下面是列的示例:“患者”表中 ​​id:“17”中的“bilan”

    ?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

    在 bilan 表中,想要的结果是这三行:

    id: 1 进程号:17 日期:2014 年 8 月 1 日 数据:0|1|0|1|0|0

    id:2 进程号:17 日期:2015 年 4 月 3 日 数据:1|1|1|1|1|0

    id:3 进程号:17 日期:24/11/2016 数据:0|0|0|0|1|1|0|0|0|0

    我在应用程序中的插入语句是:

    "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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 2014-02-17
      • 1970-01-01
      • 2020-06-19
      • 2014-12-04
      相关资源
      最近更新 更多