繁体   English   中英

选择与enry表连接时,为什么类别名称为null

[英]why category name is null when select join with enry table

我有两张桌子......首先是入场券

CREATE TABLE IF NOT EXISTS `entry` (
  `entry_id` int(11) NOT NULL AUTO_INCREMENT,
  `entry_cat_id` int(11) NOT NULL,
  `entry_name` varchar(255) NOT NULL,
  `entry_body` text NOT NULL,
  `img_url` varchar(255) NOT NULL,
  `image_link` varchar(255) NOT NULL,
  `entry_state` tinyint(1) DEFAULT '0',
  `comment_count` int(11) NOT NULL DEFAULT '0',
  `entry_count` int(11) NOT NULL DEFAULT '0',
  `entry_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`entry_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 ;

--
-- Dumping data for table `entry`
--

INSERT INTO `entry` (`entry_id`, `entry_cat_id`, `entry_name`, `entry_body`, `img_url`, `image_link`, `entry_state`, `comment_count`, `entry_count`, `entry_created`) VALUES
(27, 15, 'title fot entry', 'content', '', '', 0, 0, 0, '2013-04-14 14:47:56');

而escond是entry_category

CREATE TABLE IF NOT EXISTS `entry_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(150) NOT NULL,
  `slug` varchar(150) NOT NULL,
  `cat_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

--
-- Dumping data for table `entry_category`
--

INSERT INTO `entry_category` (`category_id`, `category_name`, `slug`, `cat_created`) VALUES
(10, 'rrrrrrrr', 'rrrrrrr', '0000-00-00 00:00:00'),
(15, 'gggggg', 'ttttttttt', '2012-12-10 13:47:28');

当使用内部联接选择以获取类别和条目名称时,我看到category_name为null

SELECT entry.entry_id, entry_category.category_name, entry.entry_name
FROM entry
INNER JOIN entry_category
ON entry.entry_id=entry_category.category_id;

为什么以及我要做什么才能看到类别名称

我想你是在加入错误的领域。 当我想要加入entry.entry_cat_id字段时,您正在加入entry.entry_id字段。

尝试将您的查询更改为:

SELECT entry.entry_id, entry_category.category_name, entry.entry_name
FROM entry
    INNER JOIN entry_category
        ON entry.entry_cat_id=entry_category.category_id;

顺便说一句 - 您现有的查询不应返回样本数据的任何结果。 要查看entry_category表中的NULL记录,您需要使用OUTER JOIN

加入有错误的条款

你需要加入category_id,但在条目表category_id在entry_cat_id字段中,所以你可以像这样加入

    SELECT entry.entry_id, entry_category.category_name, entry.entry_name
    FROM entry
    INNER JOIN entry_category
    ON entry.entry_cat_id=entry_category.category_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM