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 と名前を取得したいと考えています。
- 最初の
status
表の は 2 です - 2 番目の
department_id
テーブルの は値に等しい。この場合、2 番目のテーブル user_id と等しい最初のテーブル ID を選択する
再定式化:
クエリは、次の条件のいずれかに一致する必要があります。
- a.status='2'=> a.name と a.id を取得する
- a.department_id=value => a.id=b.user_id の a.id と a.name を取得します
しかし、レコードを取得できません。