这是我第一次使用 JOIN 方法,并没有很好地适应。我有这个表($SupportUserTable
和$SupportUserPerDepaTable
):
CREATE TABLE IF NOT EXISTS `razorphyn_support_user_departments` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`department_id` BIGINT(11) UNSIGNED NOT NULL,
`department_name` VARCHAR(70) NOT NULL,
`user_id` BIGINT(11) UNSIGNED NOT NULL,
`holiday` ENUM('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY(`department_name`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
还有这个
CREATE TABLE IF NOT EXISTS `razorphyn_support_users` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`mail` VARCHAR(50) NOT NULL,
`password` VARCHAR(200) NOT NULL,
`reg_key` VARCHAR(260) NOT NULL,
`tmp_password` VARCHAR(31) NULL,
`ip_address` VARCHAR(50) NOT NULL,
`status` ENUM('0','1','2','3','4') NOT NULL DEFAULT '3',
`holiday` ENUM('0','1') NOT NULL DEFAULT '0',
`mail_alert` ENUM('no','yes') NOT NULL DEFAULT 'yes',
`assigned_tickets` INT(5) UNSIGNED NOT NULL DEFAULT 0,
`solved_tickets` BIGINT(11) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY(`mail`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=55;
这就是我写的查询:
SELECT a.id,a.name
FROM ".$SupportUserTable." a
INNER JOIN ".$SupportUserPerDepaTable." b
ON (a.id=b.user_id)
WHERE a.status='2' OR b.department_id=?
ORDER BY a.status ASC, a.name ASC
基本上我想从第一个表中检索所有 id 和 name:
- 第
status
一个表中的为 2 - 第二
department_id
个表中的 等于一个值,在这种情况下,选择第一个表 id 等于第二个表 user_id
重新制定:
查询必须符合以下条件之一:
- a.status='2'=> 检索 a.name 和 a.id
- a.department_id=value => 检索 a.id 和 a.name 其中 a.id=b.user_id
但我无法检索任何记录。