我的表足以在项目开始时得到我需要的东西,但现在我需要扩展它。
表s_ogr
id | ad | numara | yurt_id | egitim_id | yetkili_id | yetkili_ad
当前表s_kontrol
id | ogr_id | tur_id | durum_id | tarih | egitim_id | yurt_id
需要什么s_kontrol_k
id | ogr_id | ogr_numara |ogr_ad | tur_id | durum_id | tarih | egitim_id | yurt_id
行说明 ad = name
,ogr_id
为student_id
,yurt_id
为department_id
我的投射; s_kontrol
已经包含超过24000的数据。我需要它来展开s_kontrol_k
,但是应该从s_ogr
表中通过s_ogr
和{的匹配操作获取新的两个字段{1}}(s_ogr.id = s_kontrol.ogr_id和s_ogr.yurt_id = s_kontrol.yurt_id)。我发现我的错误不是将s_kontrol
作为ogr_id
的学生添加到id
我需要什么;一个有用的查询,它复制来自源的数据,但如何使用正确的值填充第三个表中的新字段
s_kontrol
我遇到问题的查询就是为什么我需要一个简单的表
INSERT INTO s_kontrol_k ( id , ogr_id , tur_id , durum_id , tarih , egitim_id , yurt_id )
SELECT id , ogr_id , tur_id , durum_id , tarih , egitim_id , yurt_id FROM s_kontrol
第二个
SELECT s_kontrol.ogr_id,
s_ogr.ad,
s_kontrol.tur_id,
s_kontrol.durum_id,
SUM(case s_kontrol.durum_id WHEN 1 THEN 1 else 0 end) var,
SUM(case s_kontrol.durum_id WHEN 2 THEN 1 else 0 end) gorevli,
SUM(case s_kontrol.durum_id WHEN 3 THEN 1 else 0 end) yok,
SUM(case s_kontrol.durum_id WHEN 4 THEN 1 else 0 end) izinli,
SUM(case s_kontrol.durum_id WHEN 5 THEN 1 else 0 end) hatimde
FROM s_kontrol, s_ogr
WHERE s_kontrol.ogr_id=s_ogr.numara
AND s_kontrol.yurt_id=s_ogr.yurt_id
and s_ogr.yurt_id=?
and tarih BETWEEN ? and ?
and tur_id IN (?)
GROUP BY s_kontrol.ogr_id
答案 0 :(得分:1)
您可以尝试以下内容。
INSERT INTO s_kontrol_k
( id , ogr_id , ogr_ad , tur_id , durum_id , tarih , egitim_id , yurt_id )
SELECT o.id , o.ogr_id , o.ogr_ad ,
s.tur_id , s.durum_id , s.tarih , s.egitim_id , s.yurt_id
FROM
s_kontrol s inner join s_ogr o on o.yurt_id =s.yurt_id;
INSERT INTO s_kontrol_k (
id, ogr_id, ogr_numara, ogr_ad, tur_id,
durum_id, tarih, egitim_id, yurt_id)
SELECT
s_kontrol.id,
s_ogr.id,
s_kontrol.ogr_id,
s_ogr.ad,
s_kontrol.tur_id,
s_kontrol.durum_id,
s_kontrol.tarih,
s_kontrol.egitim_id,
s_kontrol.yurt_id FROM
s_kontrol inner join
s_ogr WHERE
s_ogr.yurt_id = s_kontrol.yurt_id
and s_ogr.numara = s_kontrol.ogr_id
答案 1 :(得分:0)
首先复制相同的列
INSERT INTO s_kontrol_k (
id, ogr_numara, tur_id, durum_id, tarih,
egitim_id, yurt_id)
SELECT
id,
ogr_id,
tur_id,
durum_id,
tarih,
egitim_id,
yurt_id
FROM
s_kontrol
然后更新了值
UPDATE
s_kontrol_k
INNER JOIN s_ogr ON s_kontrol_k.ogr_numara = s_ogr.numara
and s_kontrol_k.yurt_id = s_ogr.yurt_id SET s_kontrol_k.ogr_id = s_ogr.id
UPDATE
s_kontrol_k
INNER JOIN s_ogr ON s_kontrol_k.ogr_numara = s_ogr.numara
and s_kontrol_k.yurt_id = s_ogr.yurt_id SET
s_kontrol_k.ogr_ad = s_ogr.ad
可以通过添加新行在主表上更新