根据另一个表的值更新一个表

时间:2013-06-16 01:08:36

标签: sql codeigniter

如果我在这里完全失败了,请告诉我,我真的在尝试。我想要做的是写一个更新查询,根据我在chapter_tbl上使用相同story_id的已批准章节的数量来更改story_tbl中的值。

所以基本上,如果一个故事没有经过批准的章节,那么在story_tbl中它就不应该被批准了。

我尝试了一些事情,但到目前为止,我可以说我正在做这种方式比需要更复杂。非常感谢一些帮助!

2 个答案:

答案 0 :(得分:3)

此查询将设置未批准章节的所有故事未被批准:

$this->db->query("UPDATE story_tbl SET approved = 'n' WHERE story_id NOT IN (SELECT DISTINCT story_id FROM chapter_tbl WHERE approved = 'y')");

这两个问题将取消批准所有故事,然后批准所有故事至少有一个批准的章节:(基本上是一个更慢,更长的方式做同样的事情,但有利于也批准故事与章节,已获批准)

$this->db->trans_start();
$this->db->query("UPDATE story_tbl SET approved = 'n'");
$this->db->query("UPDATE story_tbl SET approved = 'y' WHERE story_id IN (SELECT DISTINCT story_id FROM chapter_tbl WHERE approved = 'y')");
$this->db->trans_complete();

答案 1 :(得分:1)

UPDATE story_tbl AS story SET story.approved = 
    (SELECT COUNT(*)>0 FROM chapter_tbl AS chapter 
    WHERE story.id = chapter.story_id AND chapter.approved=1
    GROUP BY chapter.story_id)