План состоит в том, чтобы левое соединение от работы таблицы к проекту таблицы. После этого я хочу, чтобы отфильтровать результат с подстановочные work.workdate = «2013-12-%» - результат должен быть работа, которая была сделана в этом месяце в сочетании с проектомMySQL оставил соединение с дополнительным подобным условием
Таблица работы
CREATE TABLE IF NOT EXISTS `work` (
`idwork` int(11) NOT NULL AUTO_INCREMENT,
`iduser` int(11) NOT NULL,
`idproject` int(11) NOT NULL,
`workdate` varchar(45) NOT NULL,
`duration` varchar(45) NOT NULL,
`description` varchar(45) NOT NULL,
PRIMARY KEY (`idwork`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
Таблица проекта
CREATE TABLE IF NOT EXISTS `project` (
`idproject` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`id` int(11) DEFAULT NULL,
PRIMARY KEY (`idproject`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
Заявление
SELECT * FROM work LEFT JOIN project ON work.idproject=project.idproject AND work.workdate LIKE '2013-12-%';
- Выход: Каждая строка. Строки, которые не с декабря 2013 года имеют нулевые значения в рамках проекта
- Ожидаемый выход: Ряды только с декабря 2013
Так где же моя проблема? Нужно ли использовать скобки или что-то в этом роде? Я искал в Stackoverflow, но всегда находил проблемы, в которых LIKE был в JOIN, но это не то, что я хочу. LIKE - ДОПОЛНИТЕЛЬНОЕ условие.
Ах, я вижу мою проблему, спасибо. Проблема решена – swaechter
, если это так, используйте 'INNER JOIN'. –