SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.07.2009 17:39:41

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Переход с MySQL 4 на MySQL 5

Есть запрос который работает на MySQL 4
а в MySQL 5 Выдает ошибку....

[Err] 1054 - Unknown column 'Catalog_TovarCvet.CvetId' in 'on clause'

Вот сам запрос, помогите поправить синтаксис:

SELECT
    `Catalog_Cvet`.`Id`,
    `Catalog_Cvet`.`Name`,
    `Catalog_TovarCvet`.`SCvetId`,
    COUNT(*) AS `TovarCount`
FROM `Catalog_Cvet`
INNER JOIN `Catalog_Tovar` ON `Catalog_TovarCvet`.`CvetId` = `Catalog_Cvet`.`Id`
INNER JOIN `Catalog_TovarCvet` ON `Catalog_TovarCvet`.`TovarId` = `Catalog_Tovar`.`Id`
WHERE `Catalog_Tovar`.`SeriaId` = 5001
GROUP BY `Catalog_Cvet`.`Id`
ORDER BY `TovarCount` DESC

Неактивен

 

#2 27.07.2009 18:12:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Переход с MySQL 4 на MySQL 5

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

SELECT
    `Catalog_Cvet`.`Id`,
    `Catalog_Cvet`.`Name`,
    `Catalog_TovarCvet`.`SCvetId`,
    COUNT(*) AS `TovarCount`
FROM `Catalog_Cvet`
INNER JOIN `Catalog_Tovar` ON `Catalog_Tovar`.`Id` = `Catalog_Cvet`.`Id`
INNER JOIN `Catalog_TovarCvet` ON `Catalog_TovarCvet`.`TovarId` = `Catalog_Tovar`.`Id`
WHERE `Catalog_Tovar`.`SeriaId` = 5001
GROUP BY `Catalog_Cvet`.`Id`
ORDER BY `TovarCount` DESC

Неактивен

 

#3 28.07.2009 09:25:03

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Re: Переход с MySQL 4 на MySQL 5

К сожалению поправки не дают необходимого результата....
Структура таблицы получается правильная, но все значения в ней NULL sad
Вот таблицы участвующие в запросе:

CREATE TABLE `Catalog_Cvet` (
  `Id` smallint(5) unsigned NOT NULL auto_increment,
  `Code` varchar(10) NOT NULL default '',
  `Name` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`Id`),
  UNIQUE KEY `Code` (`Code`)
) TYPE=MyISAM


--------------------------------------------------------------

CREATE TABLE `Catalog_Tovar` (
  `Id` int(10) unsigned NOT NULL auto_increment,
  `Code` varchar(10) NOT NULL default '',
  `Artikul` varchar(35) NOT NULL default '',
  `Name` varchar(100) NOT NULL default '',
  `CodeSinx` varchar(35) NOT NULL default '',
  `ProizvodId` smallint(5) unsigned NOT NULL default '0',
  `SeriaId` smallint(5) unsigned NOT NULL default '0',
  `EdinicaId` smallint(5) unsigned NOT NULL default '0',
  `VidPostId` smallint(5) unsigned NOT NULL default '0',
  `NaznachId` smallint(5) unsigned NOT NULL default '0',
  `TnvdId` smallint(5) unsigned NOT NULL default '0',
  `StranaId` smallint(5) unsigned NOT NULL default '0',
  `MateId` smallint(5) unsigned NOT NULL default '0',
  `Naznach_Id` smallint(5) unsigned NOT NULL default '0',
  `Price` float unsigned NOT NULL default '0',
  `Width` float unsigned NOT NULL default '0',
  `Height` float unsigned NOT NULL default '0',
  `Depth` float unsigned NOT NULL default '0',
  `Remains` float unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id`),
  UNIQUE KEY `CODE` (`Code`),
  KEY `SeriaId` (`SeriaId`),
  KEY `ProizvodId` (`ProizvodId`),
  KEY `NaznachId` (`NaznachId`),
  KEY `Naznach_Id` (`Naznach_Id`),
  KEY `Width` (`Width`),
  KEY `Height` (`Height`),
  KEY `Artikul` (`Artikul`),
  KEY `Remains` (`Remains`)
) TYPE=MyISAM


--------------------------------------------

CREATE TABLE `Catalog_TovarCvet` (
  `TovarId` int(10) unsigned NOT NULL default '0',
  `CvetId` smallint(5) unsigned NOT NULL default '0',
  `SCvetId` smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (`TovarId`,`CvetId`)
) TYPE=MyISAM


---------------------------------------------------------------------

И по выше обозначенному УБИЙСТВЕННОМУ smile запросу в MySQL4 получается таблица:

Четыре столбца:
Id    Name       SCvet        TovarCount

721  Old brass      0                   21
129  Chrome        0                   20
386  Cold             0                   19

-------------------------------------------------------------------

Уже мозг слома как к этому прийти в MySQL5 sad

Отредактированно north83 (28.07.2009 09:31:48)

Неактивен

 

#4 28.07.2009 14:03:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Переход с MySQL 4 на MySQL 5

А Вы уверены, что данные у вас есть? wink
У того запроса нет смысла, поэтому что получается в том отчете — предсказать сложно.

Если Вам нужно вывести количество товара по цветам, то нужно выбрать что-то типа
SELECT
    `Catalog_Cvet`.`Id`,
    `Catalog_Cvet`.`Name`,
    COUNT(*) AS `TovarCount`
FROM `Catalog_TovarCvet` tc
JOIN `Catalog_Cvet` c ON tc.CvetId = c.Id
JOIN `Catalog_Tovar`t ON tc.TovarId = t.Id
WHERE `Catalog_Tovar`.`SeriaId` = 5001
GROUP BY 1, 2
ORDER BY 3 DESC

Неактивен

 

#5 29.07.2009 14:15:52

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Re: Переход с MySQL 4 на MySQL 5

Не работает... уже не знаю что и делать (
[Err] 1054 - Unknown column 'Catalog_Cvet.Id' in 'field list'


Можно ли как то первый запрос поправить... ? я так понимаю проблема в синтаксисе ... ведь в 4ке все отрабатывает без ошибок
сейчас две идентичные базы
одна на 4ке, вторая на 5ке
на 4ке все ОК
на 5ке... уже не знаю, что и делать (

Неактивен

 

#6 29.07.2009 15:45:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Переход с MySQL 4 на MySQL 5

Упс, список полей скопировал у Вас, а названия не поправил. c.Id должно хватить.

Неактивен

 

#7 29.07.2009 15:57:08

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Re: Переход с MySQL 4 на MySQL 5

Это куда надо дописать ? )))
простите за "возможно" такие глупые вопросы

Неактивен

 

#8 29.07.2009 17:54:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Переход с MySQL 4 на MySQL 5

SELECT
    c.`Id`,
    c.`Name`,
    COUNT(*) AS `TovarCount`
FROM `Catalog_TovarCvet` tc
JOIN `Catalog_Cvet` c ON tc.CvetId = c.Id
JOIN `Catalog_Tovar`t ON tc.TovarId = t.Id
WHERE t.`SeriaId` = 5001
GROUP BY 1, 2
ORDER BY 3 DESC

Неактивен

 

#9 29.07.2009 18:04:22

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Re: Переход с MySQL 4 на MySQL 5

ААААААААААААА  Р А Б О Т А Е Т !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Вы просто Маг И волшебник !!!

Неактивен

 

#10 29.07.2009 18:05:40

north83
Участник
Зарегистрирован: 27.07.2009
Сообщений: 24

Re: Переход с MySQL 4 на MySQL 5

Посоветуйте толковую литературку по MySQL smile на которую не жалко денег

Неактивен

 

#11 29.07.2009 19:42:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Переход с MySQL 4 на MySQL 5

http://dev.mysql.com/doc/refman/5.1/en/index.html — это совсем бесплатно.
Ну и книжки Поля Дюбуа (Paul Dubois) я всегда советую, но они уже за денюшки, конечно.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson