MySQL разные версии другие результаты - PullRequest
1 голос
/ 17 мая 2010

эй, у меня есть 2 версии mysql на windows 5.1.39-community и на linux 5.1.39-log я выполняю запрос:

SELECT `o`.`idOffer`, 

       `o`.`offer_date`, 
       `p`.`factory`, 
       `c`.`short` AS `company`, 
       `s`.`name` AS `subcategory`, 
       `ct`.`name` AS `category`,
       count( (select count(1) from product where idProduct=idOffer group by idOffer) ) as b
 FROM `Offer` AS `o` 
 LEFT JOIN `Product` AS `p` ON o.idOffer = p.idOffer 
 LEFT JOIN `company` AS `c` ON o.company = c.id 
 LEFT JOIN `Subcategory` AS `s` ON s.idSubcategory = o.idSubcategory 
 LEFT JOIN `Category` AS `ct` ON ct.idCategory = s.idCategory 
 WHERE (o.idOffer = p.idOffer) GROUP BY `o`.`idOffer`

на окнах работает как положено, а на linux говорит:

ERROR 1242 (21000): Subquery returns more than 1 row

Есть ли способ заставить его работать на Linux без каких-либо обновлений / понижений mysql?

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Не знаю, связано ли это с этим, но таблицы Linux MySQL чувствительны к регистру, а таблицы Windows - нет (из-за файловой системы, я подозреваю), в любом случае у вас есть Product и product, и это будет вызвать некоторые проблемы.

Не знаю, действительно ли это является причиной проблемы в вашем вопросе, но это стена, в которую вы можете в итоге врезаться, и я подумал, что ее нужно поднять.

0 голосов
/ 17 мая 2010

Так как ваш SQL "as b" columnResult основан конкретно на SQL, а предложение WHERE для idOffer уже квалифицируется и ДОЛЖНО быть таким же, я бы удалил группу из этого столбцового элемента. Я могу только предположить, что могут быть некоторые пробельные данные или другие, которые ложно включаются, и «ID1» отличается от «ID1», получаемой неверно.

...