Вопрос по выборке

fbbeginnner
Дата: 06.01.2013 14:27:56
Добрый день, имеются две таблицы:


CREATE TABLE IF NOT EXISTS `showcase` (
`ObjId` char(36) NOT NULL,
`IsDeleted` smallint(6) DEFAULT '0',
`code` varchar(51) DEFAULT '',
`name` varchar(255) DEFAULT '',
`description` varchar(255) DEFAULT '',
`delivery` int(11) DEFAULT '0',
`maxgoodscount` bigint(20) DEFAULT '0',
`codesupplier` varchar(255) DEFAULT '',
`logo` char(36) DEFAULT '00000000-0000-0000-0000-000000000000',
`islogo` int(11) DEFAULT '0',
`usesystemdiscount` int(11) DEFAULT '0',
`usesuppdiscount` int(11) DEFAULT '0',
`mindiapazon` double DEFAULT '0',
`maxdiapazon` double DEFAULT '0',
`currentnumber` double DEFAULT '0',
`baner` char(36) DEFAULT '00000000-0000-0000-0000-000000000000',
`isbaner` int(11) DEFAULT '0',
PRIMARY KEY (`ObjId`),
KEY `showcase_FK_Numer_code` (`code`),
KEY `showcase_FK_Code` (`code`),
KEY `showcase_FK_Sort` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

И вторая:

CREATE TABLE IF NOT EXISTS `suppliers` (
`ObjId` char(36) NOT NULL,
`IsDeleted` smallint(6) DEFAULT '0',
`code` varchar(51) DEFAULT '',
`ncontract` varchar(101) DEFAULT '',
`fio` varchar(101) DEFAULT '',
`name` varchar(101) DEFAULT '',
`namefull` varchar(101) DEFAULT '',
`inn` varchar(255) DEFAULT '',
`kpp` varchar(255) DEFAULT '',
`document` varchar(255) DEFAULT '',
`city` varchar(255) DEFAULT '',
`adressfact` varchar(255) DEFAULT '',
`adressurid` varchar(255) DEFAULT '',
`url` varchar(255) DEFAULT '',
`phone1` varchar(255) DEFAULT '',
`phone2` varchar(255) DEFAULT '',
`email1` varchar(255) DEFAULT '',
`email2` varchar(255) DEFAULT '',
`fax1` varchar(255) DEFAULT '',
`fax2` varchar(255) DEFAULT '',
`balans` double DEFAULT '0',
`codactiv` varchar(51) DEFAULT '',
`activ` int(11) DEFAULT '0',
`password` varchar(51) DEFAULT '',
`smsalias` varchar(51) DEFAULT '',
`allowalias` varchar(51) DEFAULT '',
PRIMARY KEY (`ObjId`),
KEY `suppliers_FK_Numer_code` (`code`),
KEY `suppliers_FK_Code` (`code`),
KEY `suppliers_FK_Sort` (`namefull`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Запрос:
SELECT * FROM showcase LEFT JOIN suppliers ON showcase.codesupplier = suppliers.code AND codesupplier IN(000000027,000000023,000000008,000000022,000000021) GROUP BY showcase.code

В результате этого запроса выдаются все записи из таблицы showcase, т.е. условие AND codesupplier IN(000000027,000000023,000000008,000000022,000000021) не срабатывает.

Укажите, пожалуйста, на мою ошибку в запросе.

Результат запроса в скриншоте, красным овалом выделены значения полей, которые не должны там присутствовать
miksoft
Дата: 06.01.2013 14:48:39
А для чего у вас слово LEFT в запросе?
InterSky
Дата: 06.01.2013 15:02:33
Всё правильно!
У исправте, вместо
JOIN suppliers ON showcase.codesupplier = suppliers.code AND codesupplier IN (...
должно быть
JOIN suppliers ON showcase.codesupplier = suppliers.code WHERE codesupplier IN (...
fbbeginnner
Дата: 06.01.2013 15:29:23
miksoft
А для чего у вас слово LEFT в запросе?


? не понял вопроса.

InterSky
Всё правильно!
У исправте, вместо
JOIN suppliers ON showcase.codesupplier = suppliers.code AND codesupplier IN (...
должно быть
JOIN suppliers ON showcase.codesupplier = suppliers.code WHERE codesupplier IN (...


Да. я уже исправил запрос. спасибо.
miksoft
Дата: 06.01.2013 15:37:00
fbbeginnner
miksoft
А для чего у вас слово LEFT в запросе?


? не понял вопроса.
Вы уверены, что вам нужен именно LEFT JOIN, а не просто JOIN ?
Впрочем, судя по предыдущему ответу, похоже, что моя гипотеза была неверна.