2013-12-16 4 views
2

План состоит в том, чтобы левое соединение от работы таблицы к проекту таблицы. После этого я хочу, чтобы отфильтровать результат с подстановочные 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 - ДОПОЛНИТЕЛЬНОЕ условие.

ответ

2
SELECT 
    * 
FROM 
    work 
LEFT JOIN 
    project 
ON 
    work.idproject = project.idproject 
WHERE 
    work.workdate LIKE '2013-12-%'; 

должен сделать трюк. Вы хотите присоединиться к проекту по ID проекта, но фильтровать работу по дате. Поэтому фильтрация должна выполняться в части WHERE.

+0

Ах, я вижу мою проблему, спасибо. Проблема решена – swaechter

+0

, если это так, используйте 'INNER JOIN'. –

1

Как я понимаю вашу проблему, я думаю, что дополнительное условие должно идти в WHERE -clause:

SELECT * 
FROM work 
LEFT JOIN project ON work.idproject=project.idproject 
WHERE work.workdate LIKE '2013-12-%'; 
Смежные вопросы