我一直在处理因使用Join-Ons而不是逗号连接而导致的问题。我的SQL目前看起来像这样:
SELECT islandID AS parentIslandID, islandName, island.longDesc,
imageLocation, COUNT(resort.resortID) AS totalResorts, resort.resortID
FROM island, resort, images
join resort as r1
on island.islandID = resort.parentIslandID
where
r1.resortID IN (
59,62,65,69,71,72,74,75,76,82,86,89,91,93,95,105,
106,116,117,118,120,121,122,123,124,125,126,127,
131,145,146,150,157,159,160,167,170,174,176,185,188,189,193,
194,198,199,200,203,205,213,217
)
&& resort.active = '-1'
GROUP BY resort.parentIslandID
ORDER BY totalResorts DESC
执行时,我收到以下错误:
#1054 - Unknown column 'island.islandID' in 'on clause'
我做了一些研究并了解错误的起源但是我试图通过为“孤岛”表创建别名来纠正这个问题。当我这样做时,像“island.longDesc”这样的列就是“未知”。
如果有人能够纠正似乎是一个小的语法问题,我将非常感激。我更习惯使用逗号连接这么简单。谢谢你的帮助 -
-Aaron
编辑:
Images Structure:
CREATE TABLE `images` (
`imageID` int(11) NOT NULL auto_increment,
`imageType` int(11) NOT NULL COMMENT 'used to tell if its for an artist, header image, etc.',
`parentObjectID` int(11) NOT NULL COMMENT 'used to tell what island/resort the image applies to',
`imageLocation` text NOT NULL,
`largeImageLocation` text NOT NULL,
`imageLinkLabel` text NOT NULL,
`imageURL` text NOT NULL,
PRIMARY KEY (`imageID`)
)
Island Structure:
CREATE TABLE `island` (
`islandID` int(11) NOT NULL auto_increment,
`islandName` text NOT NULL,
`shortDesc` text NOT NULL,
`longDesc` text NOT NULL,
`getTo` text NOT NULL,
`getAround` text NOT NULL,
`photoInfo` text NOT NULL,
`flowerInfo` text NOT NULL,
`musicInfo` text NOT NULL,
`cakeInfo` text NOT NULL,
`activityInfo` text NOT NULL,
`wedCoord` text NOT NULL,
`regs` text NOT NULL,
`climate` text NOT NULL,
`languageID` int(11) NOT NULL,
`currencyID` int(11) NOT NULL,
`wideAccept` int(11) NOT NULL,
`passportReq` int(11) NOT NULL,
`picture` text NOT NULL,
`daysSearchable` int(11) NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`islandID`)
)
Resort Structure:
CREATE TABLE `resort` (
`resortID` int(11) NOT NULL auto_increment,
`resortName` text NOT NULL,
`parentIslandID` int(11) NOT NULL,
`longDesc` text NOT NULL,
`website` text NOT NULL,
`genBooking` text NOT NULL,
`eventCoord` text NOT NULL,
`amenInfo` text NOT NULL,
`roomInfo` text NOT NULL,
`coordInfo` text NOT NULL,
`localeInfo` text NOT NULL,
`spaInfo` text NOT NULL,
`roomPrice` text NOT NULL,
`maxGuests` text NOT NULL,
`picture` text NOT NULL,
`search_Inclusive` int(11) NOT NULL,
`search_resortType` int(11) NOT NULL,
`search_onBeach` int(11) NOT NULL,
`search_wedCoord` int(11) NOT NULL,
`search_roomRate` int(11) NOT NULL,
`search_airportDist` int(11) NOT NULL,
`search_HotelSuite` tinyint(1) NOT NULL,
`search_VillaCondo` tinyint(1) NOT NULL,
`search_Amenities` text NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`resortID`)
)
答案 0 :(得分:4)
您正在混合两种不同类型的JOIN
语法 - FROM
中列出表的隐式类型和显式JOIN
类型。相反,尝试:
SELECT
islandID AS parentIslandID,
islandName,
island.longDesc,
imageLocation,
COUNT(r1.resortID) AS totalResorts,
r1.resortID
FROM island
JOIN resort r1 ON island.islandID = r1.parentIslandID
JOIN images ON island.islandID = images.parentObjectID
WHERE
r1.resortID IN (
59,62,65,69,71,72,74,75,76,82,86,89,91,93,95,105,
106,116,117,118,120,121,122,123,124,125,126,127,
131,145,146,150,157,159,160,167,170,174,176,185,188,189,193,
194,198,199,200,203,205,213,217
)
AND resort.active = '-1'
GROUP BY r1.parentIslandID
ORDER BY totalResorts DESC
**在发布表格结构后编辑包含岛JOIN
。
此外:
AND
而不是&&
来表示布尔AND AS
关键字(JOIN resort r1
)resort
别名r1
(r1.resortID
)