我有3个表标签,tag_type,user_alert 表结构如下:
CREATE TABLE `tags` (
`tag_id` int(11) NOT NULL,
`tag_name` varchar(255) CHARACTER SET utf8 NOT NULL,
`tagtype_id` int(11) NOT NULL,
`status` tinyint(1) NOT NULL,
`is_deleted` tinyint(1) NOT NULL,
`created_at` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
CREATE TABLE IF NOT EXISTS `tag_types` (
`tagtype_id` int(11) NOT NULL,
`tagtype_name_en` varchar(100) CHARACTER SET utf8 NOT NULL,
`tagtype_name_fr` varchar(100) NOT NULL,
`display_order` int(11) NOT NULL,
`tag_color` varchar(50) CHARACTER SET utf8 NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
CREATE TABLE IF NOT EXISTS `user_alert` (
`user_alert_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`is_removed` enum('yes','no') DEFAULT 'no',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
我已经创建了查询,但它对我不起作用。
select t.tag_name,t.tag_id,ty.tag_color,ty.tagtype_name_en as tagtype_name from tags as t INNER JOIN tag_types as ty ON t.tagtype_id=ty.tagtype_id INNER JOIN user_alert as ua ON ua.tag_id != t.tag_id where t.tagtype_id='5' and ua.user_id != '14'
我想进行查询 我正在传递 tagtype_id 和 user_id
当我传递tagtype_id时,我可以获得属于该tagtyped_id的所有标签,并且不想选择用户已订阅的标签。
但我做不到。我知道答案很简单,但不知道该怎么做。有人可以帮助我吗?
最佳答案
在JOIN中,必须使用“=”,不要使用“!=”。 您的条件必须适用于 where 语句而不是 join。
关于php - 我如何在 mysql php 中加入 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37430429/