使用SQL语句将表行ID的值与另一个ID分配

时间:2014-08-06 18:24:46

标签: php mysql sql codeigniter

所以在我的数据库中我有两个表。笑话和评论。我希望能够将评论的post_id分配给笑话的joke_id,因此它将分配和检索与该笑话相关的评论。我的问题是我很擅长编写SQL语句,并且对于如何连接两个表来实现这一点并不是最模糊的。

我的笑话表如下:

CREATE TABLE IF NOT EXISTS `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  `category_id` int(11) NOT NULL,
  `vote` int(255) NOT NULL,
  `date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

我的评论表如下:

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL,
  `comment` text NOT NULL,
  `joke_id` int(11) NOT NULL,
  `post_id` int(11) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

目前,我通过分配$ post_id =“1”获取数据,但我想将其更改为$ post_id = $ joke_id(笑话ID在同一个函数中,但是我我不知道怎么做。)

如果有任何帮助,我正在使用带有codeigniter的MVC。

在我的控制器中,我有一个名为comments的php文件,它有一个名为insertComment的函数,如下所示:

public function insertComment(){

//extracts the data from the ajax
extract($_POST);
if($_POST['act'] == 'add-com'){
    //assigned the db rows with the actual data which was inputted
    $data = array(
        'name' => htmlentities($name),
        'comment' => htmlentities($comment),
        //id_post should correlate to the joke_id
        'id_post' => $id_post = "1"

        );


    $this->comments_m->insertComment($data);
}

和我的insertComment函数,在comment_m函数的模型中看起来像这样:

function insertComment (){

extract($_POST);
if($_POST['act'] == 'add-com'){
    $data = array(
        'name' => htmlentities($name),
        'comment' => htmlentities($comment),
        'id_post' => $id_post = "1"

    );

    if(strlen($data['name']) <= '1'){
        $data['name'] = 'Guest';
    }

    $this->db->insert('comments', $data);
}
}

要最终确定,如果有人可以帮助将两个表连接在一起的SQL语句,那将是一个很大的帮助,其中joke_id具有与注释的post_id相同的值,这将使其成为该笑话的唯一。

谢谢

1 个答案:

答案 0 :(得分:1)

连接这两个表的SQL是 -

SELECT `jokes`.*, `comments`.*
FROM `jokes`
LEFT OUTER JOIN `comments`
ON `jokes`.`joke_id` = `comments`.`joke_id`

这将返回每个笑话的所有评论。然后,您可以通过添加WHERE子句来过滤或限制 -

WHERE `jokes`.`joke_id` = 1