Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用查询(SQL)从所有三个表中获取数据_Php_Mysql_Sql_Codeigniter_Join - Fatal编程技术网

Php 使用查询(SQL)从所有三个表中获取数据

Php 使用查询(SQL)从所有三个表中获取数据,php,mysql,sql,codeigniter,join,Php,Mysql,Sql,Codeigniter,Join,在我的数据库中,我有3个表 笑话: 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_TIMES

在我的数据库中,我有3个表

笑话:

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 `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
最后,评论:

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` 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 ;
这三个表需要连接在一起才能从每个表中获取数据。到目前为止,我已经使用了这三个查询,但没有幸运地得到我所需要的

我需要这个查询做的是

  • 将笑话id指定给注释中的笑话id,并在视图中显示笑话id
  • 将笑话的类别id指定给名称并显示它
  • 抢选票
  • 抓住笑话
第一个查询-此查询实际上获取了我想要的所有数据,但同时没有获取笑话id并将其传递给视图(因为我需要笑话id为该唯一id分配注释):

第二个查询-此查询将类别连接到正确的类别,并显示笑话和笑话id,以便我为其分配评论。但它没有显示任何评论

SELECT j.*, c.name 
FROM jokes j LEFT JOIN category c 
ON c.category_id = j.category_id 
WHERE joke_id = '$joke_id'
第三个查询——这个查询是由用户在堆栈溢出时提供的,但是当一个笑话没有附加任何注释时,它似乎给我带来了一大堆错误

SELECT c.*, j.*, co.*
FROM jokes j
INNER JOIN category c ON c.category_id = j.category_id
INNER JOIN comments co ON co.joke_id = j.joke_id
WHERE j.joke_id =  '$joke_id'

如果您能帮助更改此查询以将三个数据库中的所有项目合并在一起,我们将不胜感激

编辑所选字段以满足您的需要。此外,如果您只想显示一个笑话及其数据,则必须设置所需笑话的id,例如在WHERE上所做的设置

SELECT jokes.*, category.*, comments.* FROM jokes LEFT JOIN category ON jokes.category_id = category.category_id LEFT JOIN comments ON jokes.jokes_id = comments.joke_id

是对的,或者你能详细说明你到底需要什么吗??
SELECT jokes.*, category.*, comments.* FROM jokes LEFT JOIN category ON jokes.category_id = category.category_id LEFT JOIN comments ON jokes.jokes_id = comments.joke_id