Я понятия не имел о вашей схеме, но вот что я сделал (и она отлично работает!)
CREATE TABLE `districts` (
`id` INT(10) unsigned NOT NULL,
`DD` CHAR(20) NOT NULL,
`text` CHAR(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `councils` (
`id` INT(10) unsigned NOT NULL,
`DD` CHAR(20) NOT NULL,
`CC` CHAR(20) NOT NULL,
`text` CHAR(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `person` (
`id` INT(10) unsigned NOT NULL,
`DD` CHAR(20) NOT NULL,
`CC` CHAR(20) NOT NULL,
`name` CHAR(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO districts (`id`, `DD`, `text`) VALUES ('1','01','texas');
INSERT INTO districts (`id`, `DD`, `text`) VALUES ('2','02','ny');
INSERT INTO districts (`id`, `DD`, `text`) VALUES ('5','03','washington');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('1','01','01','text1');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('2','02','01','text2');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('3','02','03','text4');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('4','03','01','text5');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('5','03','02','text6');
INSERT INTO councils (`id`, `DD`, `CC`, `text`) VALUES ('6','01','02','text7');
INSERT INTO person (`id`, `name`, `DD`, `CC`) VALUES ('1','john','02','03');
INSERT INTO person (`id`, `name`, `DD`, `CC`) VALUES ('2','mike','03','02');
INSERT INTO person (`id`, `name`, `DD`, `CC`) VALUES ('3','julia','01','02');
SELECT p.name, d.text AS district, c.text AS council
FROM person p
INNER JOIN districts d ON p.DD = d.DD
INNER JOIN councils c ON p.DD = c.DD
AND p.CC = c.CC
WHERE 1