Description:
Trying to perform a compound JOIN and LEFT JOIN, but an error message is returned saying "Unknown column 'inMediaType' in 'on clause'" even though the field is declared as a key.
I had the same problem in v4.1, reported it, and you ended up fixing it in a later release. The same query works in v4.1.22, and I would like to upgrade, but this is holding me back. I've tried earlier versions of v5.0, but the same results.
When I take out the first JOIN, it works as expected.
[MySQL][ODBC 3.51 Driver][mysqld-5.0.51b-community-nt-log]Unknown column 'inMediaType' in 'on clause'
-------------------------------------------------------------------------------
From MySQL Query Browser: "Unknown column 'inMediaType' in 'on clause' [1054]"
From MySQL console:
-------------------------------------------------------------------------------
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.67-community-nt-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use backupdb
Database changed
mysql> SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription, plOther01
-> FROM Inventory, Pool
-> LEFT JOIN MediaTypes ON (inMediaType = mtIndex)
-> WHERE plOffsiteStorageIdx = 9
-> AND plEnabled = 'Y'
-> AND inPoolIdx = plPoolIdx
-> AND plRotateOffsite = 'Y'
-> AND inLocationIdx = 4
-> ORDER BY inReturnDate, inVolID;
ERROR 1054 (42S22): Unknown column 'inMediaType' in 'on clause'
mysql>
-------------------------------------------------------------------------------
#=============================================================================
mysql> SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription
-> FROM Inventory
-> LEFT JOIN MediaTypes ON (inMediaType = mtIndex)
-> WHERE inLocationIdx = 4
-> ORDER BY inReturnDate, inVolID;
+---------+-------------+--------------+---------------+--------+--------------------------------------------------------+
| inVolID | inWriteDate | inReturnDate | inOSscanlabel | mtType | inDescription |
+---------+-------------+--------------+---------------+--------+--------------------------------------------------------+
| A1200 | 2008-08-01 | 2008-08-16 | 011020014 | 8mm | NULL |
| A1201 | 2008-08-01 | 2008-08-16 | 011020015 | 8mm | NULL |
| A1202 | 2008-08-01 | 2008-08-16 | 011020016 | 8mm | NULL |
| A1203 | 2008-08-01 | 2008-08-16 | 011020017 | 8mm | |
| A1204 | 2008-08-01 | 2008-08-16 | 011020018 | 8mm | |
| A1205 | 2008-08-01 | 2008-08-16 | 011020019 | 8mm | Volume # 1 of 2, Set: A1205, A1206 |
| A1206 | 2008-08-01 | 2008-08-16 | 011020020 | 8mm | Volume # 2 of 2, Set: A1205, A1206 |
| 030053 | 2008-07-26 | 2008-10-04 | 011020107 | LTO3 | NULL |
| 030054 | 2008-07-27 | 2008-10-04 | 011020108 | LTO3 | NULL |
| 030055 | 2008-07-30 | 2008-10-04 | 011020109 | LTO3 | NULL |
| 030056 | 2008-08-01 | 2008-10-04 | 011020110 | LTO3 | NULL |
| 020175 | 2008-07-27 | 2008-12-05 | NULL | LTO3 | NULL |
| 020176 | 2008-07-28 | 2008-12-05 | NULL | LTO3 | NULL |
| 020177 | 2008-07-29 | 2008-12-05 | NULL | LTO3 | NULL |
| 020178 | 2008-07-27 | 2008-12-05 | NULL | LTO3 | NULL |
| 020179 | 2008-07-31 | 2008-12-05 | NULL | LTO3 | NULL |
+---------+-------------+--------------+---------------+--------+--------------------------------------------------------+
16 rows in set (0.22 sec)
mysql>
How to repeat:
Here are the SQL statements for the SELECT and table definitions:
SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription, plOther01
FROM Inventory, Pool
LEFT JOIN MediaTypes ON (inMediaType = mtIndex)
WHERE plOffsiteStorageIdx = 9
AND plEnabled = 'Y'
AND inPoolIdx = plPoolIdx
AND plRotateOffsite = 'Y'
AND inLocationIdx = 4
ORDER BY inReturnDate, inVolID;
#==============================================================================
CREATE TABLE `inventory` (
`inTapeIdx` int(11) NOT NULL auto_increment,
`inVolID` varchar(30) default NULL,
`inWriteDate` date default NULL,
`inOffsiteDate` date default NULL,
`inReturnDate` date default NULL,
`inLocationIdx` int(11) default '11',
`inSysID` int(11) NOT NULL default '0',
`inSlot` tinyint(3) default '0',
`inPoolIdx` int(11) NOT NULL default '0',
`inNotes` mediumtext,
`inNotesArNode` int(11) default '0',
`inChangedBy` varchar(20) default NULL,
`inChangedIP` varchar(50) default NULL,
`inChangedDate` datetime default NULL,
`inUsed` varchar(10) default NULL,
`inPrevSlot` tinyint(3) default '0',
`inRackNumber` int(11) default '0',
`inDateAdded` datetime default NULL,
`inManufacturer` varchar(80) default NULL,
`inStorageWritten` varchar(10) default NULL,
`inInternalVolID` varchar(20) default NULL,
`inPurchasedFrom` varchar(50) default NULL,
`inReplace` enum('Y','N') default 'N',
`inHold` enum('Y','N') default 'N',
`inRetire` enum('Y','N') default 'N',
`inBadTapeCount` tinyint(3) unsigned default '0',
`inLastBTCUpdate` datetime default NULL,
`inMediaType` int(11) default '0',
`inOSscanlabel` varchar(50) default NULL,
`inDescription` varchar(100) default NULL,
`inTapeContentsDate` datetime default NULL,
`inTapeContents` mediumtext,
PRIMARY KEY (`inTapeIdx`),
UNIQUE KEY `inVolID` (`inVolID`),
KEY `inWriteDate` (`inWriteDate`),
KEY `inOffsiteDate` (`inOffsiteDate`),
KEY `inReturnDate` (`inReturnDate`),
KEY `inLocationIdx` (`inLocationIdx`),
KEY `inSysID` (`inSysID`),
KEY `inPoolIdx` (`inPoolIdx`),
KEY `inRackNumber` (`inRackNumber`),
KEY `inDateAdded` (`inDateAdded`),
KEY `inManufacturer` (`inManufacturer`),
KEY `inReplace` (`inReplace`),
KEY `inHold` (`inHold`),
KEY `inMediaType` (`inMediaType`),
KEY `inOSscanlabel` (`inOSscanlabel`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#------------------------------------------------------------------------------
CREATE TABLE `pool` (
`plPoolIdx` int(11) NOT NULL auto_increment,
`plPoolName` varchar(15) NOT NULL default '',
`plPoolDescr` varchar(255) default NULL,
`plPoolSysID` int(11) NOT NULL default '0',
`plDaysOffsite` smallint(5) unsigned default '0',
`plTapeRetension` smallint(5) unsigned default '0',
`plTextOverRetension` varchar(10) NOT NULL default '',
`plDaysPull` smallint(5) unsigned default '0',
`plWkDayPickedUp` tinyint(3) unsigned default '0',
`plOffsiteStorageIdx` int(11) default NULL,
`plContactIdx` int(11) default NULL,
`plMediaType` int(11) default '0',
`plLastUpdated` datetime default NULL,
`plLastUpdatedByUser` varchar(20) default '',
`plEnabled` enum('N','Y') default 'Y',
`plAutoProcess` enum('N','Y') default 'N',
`plOffsiteRotationType` enum('D','W','N') default 'D',
`plOffsiteNumberOfDays` smallint(5) unsigned default '0',
`plWhenFinalizeTapes` enum('N','S') default 'N',
`plWeeklyProcessSubmit` datetime default NULL,
`plWeeklyProcessSchedDate` datetime default NULL,
`plWeeklyProcess` datetime default NULL,
`plWeeklyProcessByUser` varchar(50) default NULL,
`plWeeklyProcessUID` varchar(19) default '',
`plFinalizeProcessSubmit` datetime default NULL,
`plFinalizeProcess` datetime default NULL,
`plFinalizeProcessByUser` varchar(50) default NULL,
`plFinalizeProcessUID` varchar(19) default '',
`plSetPrefix` enum('N','Y') default 'N',
`plPrefix` varchar(5) default '',
`plHidePrefix` enum('N','Y') default 'N',
`plSetPostfix` enum('N','Y') default 'N',
`plPostfix` varchar(5) default '',
`plHidePostfix` enum('N','Y') default 'N',
`plRotateOffsite` enum('N','Y') default 'Y',
`plNotifyOffsite` enum('N','Y') default 'N',
`plNotifyOffsiteEmail` mediumtext,
`plNotifyOffsiteBody` mediumtext,
`plOther01` varchar(50) default '',
`plOther02` varchar(50) default '',
`plOther03` varchar(50) default '',
`plLifeCycle` tinyint(3) unsigned default '5',
`plLifeCycleAction` text,
`plBillStorageOverage` enum('N','Y') default 'Y',
`plNotes` mediumtext,
`plNotesArNode` int(11) default '0',
`plMinScratch` tinyint(3) unsigned default '10',
PRIMARY KEY (`plPoolIdx`),
KEY `plPoolName` (`plPoolName`),
KEY `plPoolSysID` (`plPoolSysID`),
KEY `plOffsiteStorageIdx` (`plOffsiteStorageIdx`),
KEY `plContactIdx` (`plContactIdx`),
KEY `plEnabled` (`plEnabled`),
KEY `plOffsiteRotationType` (`plOffsiteRotationType`),
KEY `plMediaType` (`plMediaType`),
KEY `plBillStorageOverage` (`plBillStorageOverage`),
KEY `plAutoProcess` (`plAutoProcess`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#------------------------------------------------------------------------------
CREATE TABLE `mediatypes` (
`mtIndex` int(11) NOT NULL auto_increment,
`mtType` varchar(8) NOT NULL default '',
`mtDescription` varchar(50) NOT NULL default '',
`mtRawSize` varchar(10) default NULL,
`mtCompressedSize` varchar(10) default NULL,
`mtMinimumSize` varchar(10) default NULL,
PRIMARY KEY (`mtIndex`),
UNIQUE KEY `mtType` (`mtType`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Description: Trying to perform a compound JOIN and LEFT JOIN, but an error message is returned saying "Unknown column 'inMediaType' in 'on clause'" even though the field is declared as a key. I had the same problem in v4.1, reported it, and you ended up fixing it in a later release. The same query works in v4.1.22, and I would like to upgrade, but this is holding me back. I've tried earlier versions of v5.0, but the same results. When I take out the first JOIN, it works as expected. [MySQL][ODBC 3.51 Driver][mysqld-5.0.51b-community-nt-log]Unknown column 'inMediaType' in 'on clause' ------------------------------------------------------------------------------- From MySQL Query Browser: "Unknown column 'inMediaType' in 'on clause' [1054]" From MySQL console: ------------------------------------------------------------------------------- Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.0.67-community-nt-log MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use backupdb Database changed mysql> SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription, plOther01 -> FROM Inventory, Pool -> LEFT JOIN MediaTypes ON (inMediaType = mtIndex) -> WHERE plOffsiteStorageIdx = 9 -> AND plEnabled = 'Y' -> AND inPoolIdx = plPoolIdx -> AND plRotateOffsite = 'Y' -> AND inLocationIdx = 4 -> ORDER BY inReturnDate, inVolID; ERROR 1054 (42S22): Unknown column 'inMediaType' in 'on clause' mysql> ------------------------------------------------------------------------------- #============================================================================= mysql> SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription -> FROM Inventory -> LEFT JOIN MediaTypes ON (inMediaType = mtIndex) -> WHERE inLocationIdx = 4 -> ORDER BY inReturnDate, inVolID; +---------+-------------+--------------+---------------+--------+--------------------------------------------------------+ | inVolID | inWriteDate | inReturnDate | inOSscanlabel | mtType | inDescription | +---------+-------------+--------------+---------------+--------+--------------------------------------------------------+ | A1200 | 2008-08-01 | 2008-08-16 | 011020014 | 8mm | NULL | | A1201 | 2008-08-01 | 2008-08-16 | 011020015 | 8mm | NULL | | A1202 | 2008-08-01 | 2008-08-16 | 011020016 | 8mm | NULL | | A1203 | 2008-08-01 | 2008-08-16 | 011020017 | 8mm | | | A1204 | 2008-08-01 | 2008-08-16 | 011020018 | 8mm | | | A1205 | 2008-08-01 | 2008-08-16 | 011020019 | 8mm | Volume # 1 of 2, Set: A1205, A1206 | | A1206 | 2008-08-01 | 2008-08-16 | 011020020 | 8mm | Volume # 2 of 2, Set: A1205, A1206 | | 030053 | 2008-07-26 | 2008-10-04 | 011020107 | LTO3 | NULL | | 030054 | 2008-07-27 | 2008-10-04 | 011020108 | LTO3 | NULL | | 030055 | 2008-07-30 | 2008-10-04 | 011020109 | LTO3 | NULL | | 030056 | 2008-08-01 | 2008-10-04 | 011020110 | LTO3 | NULL | | 020175 | 2008-07-27 | 2008-12-05 | NULL | LTO3 | NULL | | 020176 | 2008-07-28 | 2008-12-05 | NULL | LTO3 | NULL | | 020177 | 2008-07-29 | 2008-12-05 | NULL | LTO3 | NULL | | 020178 | 2008-07-27 | 2008-12-05 | NULL | LTO3 | NULL | | 020179 | 2008-07-31 | 2008-12-05 | NULL | LTO3 | NULL | +---------+-------------+--------------+---------------+--------+--------------------------------------------------------+ 16 rows in set (0.22 sec) mysql> How to repeat: Here are the SQL statements for the SELECT and table definitions: SELECT inVolID, inWriteDate, inReturnDate, inOSscanlabel, mtType, inDescription, plOther01 FROM Inventory, Pool LEFT JOIN MediaTypes ON (inMediaType = mtIndex) WHERE plOffsiteStorageIdx = 9 AND plEnabled = 'Y' AND inPoolIdx = plPoolIdx AND plRotateOffsite = 'Y' AND inLocationIdx = 4 ORDER BY inReturnDate, inVolID; #============================================================================== CREATE TABLE `inventory` ( `inTapeIdx` int(11) NOT NULL auto_increment, `inVolID` varchar(30) default NULL, `inWriteDate` date default NULL, `inOffsiteDate` date default NULL, `inReturnDate` date default NULL, `inLocationIdx` int(11) default '11', `inSysID` int(11) NOT NULL default '0', `inSlot` tinyint(3) default '0', `inPoolIdx` int(11) NOT NULL default '0', `inNotes` mediumtext, `inNotesArNode` int(11) default '0', `inChangedBy` varchar(20) default NULL, `inChangedIP` varchar(50) default NULL, `inChangedDate` datetime default NULL, `inUsed` varchar(10) default NULL, `inPrevSlot` tinyint(3) default '0', `inRackNumber` int(11) default '0', `inDateAdded` datetime default NULL, `inManufacturer` varchar(80) default NULL, `inStorageWritten` varchar(10) default NULL, `inInternalVolID` varchar(20) default NULL, `inPurchasedFrom` varchar(50) default NULL, `inReplace` enum('Y','N') default 'N', `inHold` enum('Y','N') default 'N', `inRetire` enum('Y','N') default 'N', `inBadTapeCount` tinyint(3) unsigned default '0', `inLastBTCUpdate` datetime default NULL, `inMediaType` int(11) default '0', `inOSscanlabel` varchar(50) default NULL, `inDescription` varchar(100) default NULL, `inTapeContentsDate` datetime default NULL, `inTapeContents` mediumtext, PRIMARY KEY (`inTapeIdx`), UNIQUE KEY `inVolID` (`inVolID`), KEY `inWriteDate` (`inWriteDate`), KEY `inOffsiteDate` (`inOffsiteDate`), KEY `inReturnDate` (`inReturnDate`), KEY `inLocationIdx` (`inLocationIdx`), KEY `inSysID` (`inSysID`), KEY `inPoolIdx` (`inPoolIdx`), KEY `inRackNumber` (`inRackNumber`), KEY `inDateAdded` (`inDateAdded`), KEY `inManufacturer` (`inManufacturer`), KEY `inReplace` (`inReplace`), KEY `inHold` (`inHold`), KEY `inMediaType` (`inMediaType`), KEY `inOSscanlabel` (`inOSscanlabel`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; #------------------------------------------------------------------------------ CREATE TABLE `pool` ( `plPoolIdx` int(11) NOT NULL auto_increment, `plPoolName` varchar(15) NOT NULL default '', `plPoolDescr` varchar(255) default NULL, `plPoolSysID` int(11) NOT NULL default '0', `plDaysOffsite` smallint(5) unsigned default '0', `plTapeRetension` smallint(5) unsigned default '0', `plTextOverRetension` varchar(10) NOT NULL default '', `plDaysPull` smallint(5) unsigned default '0', `plWkDayPickedUp` tinyint(3) unsigned default '0', `plOffsiteStorageIdx` int(11) default NULL, `plContactIdx` int(11) default NULL, `plMediaType` int(11) default '0', `plLastUpdated` datetime default NULL, `plLastUpdatedByUser` varchar(20) default '', `plEnabled` enum('N','Y') default 'Y', `plAutoProcess` enum('N','Y') default 'N', `plOffsiteRotationType` enum('D','W','N') default 'D', `plOffsiteNumberOfDays` smallint(5) unsigned default '0', `plWhenFinalizeTapes` enum('N','S') default 'N', `plWeeklyProcessSubmit` datetime default NULL, `plWeeklyProcessSchedDate` datetime default NULL, `plWeeklyProcess` datetime default NULL, `plWeeklyProcessByUser` varchar(50) default NULL, `plWeeklyProcessUID` varchar(19) default '', `plFinalizeProcessSubmit` datetime default NULL, `plFinalizeProcess` datetime default NULL, `plFinalizeProcessByUser` varchar(50) default NULL, `plFinalizeProcessUID` varchar(19) default '', `plSetPrefix` enum('N','Y') default 'N', `plPrefix` varchar(5) default '', `plHidePrefix` enum('N','Y') default 'N', `plSetPostfix` enum('N','Y') default 'N', `plPostfix` varchar(5) default '', `plHidePostfix` enum('N','Y') default 'N', `plRotateOffsite` enum('N','Y') default 'Y', `plNotifyOffsite` enum('N','Y') default 'N', `plNotifyOffsiteEmail` mediumtext, `plNotifyOffsiteBody` mediumtext, `plOther01` varchar(50) default '', `plOther02` varchar(50) default '', `plOther03` varchar(50) default '', `plLifeCycle` tinyint(3) unsigned default '5', `plLifeCycleAction` text, `plBillStorageOverage` enum('N','Y') default 'Y', `plNotes` mediumtext, `plNotesArNode` int(11) default '0', `plMinScratch` tinyint(3) unsigned default '10', PRIMARY KEY (`plPoolIdx`), KEY `plPoolName` (`plPoolName`), KEY `plPoolSysID` (`plPoolSysID`), KEY `plOffsiteStorageIdx` (`plOffsiteStorageIdx`), KEY `plContactIdx` (`plContactIdx`), KEY `plEnabled` (`plEnabled`), KEY `plOffsiteRotationType` (`plOffsiteRotationType`), KEY `plMediaType` (`plMediaType`), KEY `plBillStorageOverage` (`plBillStorageOverage`), KEY `plAutoProcess` (`plAutoProcess`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; #------------------------------------------------------------------------------ CREATE TABLE `mediatypes` ( `mtIndex` int(11) NOT NULL auto_increment, `mtType` varchar(8) NOT NULL default '', `mtDescription` varchar(50) NOT NULL default '', `mtRawSize` varchar(10) default NULL, `mtCompressedSize` varchar(10) default NULL, `mtMinimumSize` varchar(10) default NULL, PRIMARY KEY (`mtIndex`), UNIQUE KEY `mtType` (`mtType`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;