我有一个SQL查询执行2个表中的某些列不明确的左连接。我可以在连接的表格的前面加上前缀,但是当我尝试在FROM子句中从表格的前面添加一列时,它会告诉我未知列。我甚至试图给这个表一个别名像这样...从点AS p和使用“p”表前缀表,但是也没有工作。有人能告诉我我做错了什么吗?这里是我的查询:表别名 - 字段列表中的未知列
SELECT point_title, point_url, address, city, state, zip_code,
phone, `points`.`lat`, `points`.`longi`, featured,
kmlno, image_url, category.title, category_id,
point_id, lat, longi, reviews.star_points, reviews.review_id,
count(reviews.point_id) as totals
FROM (SELECT *,
(3959 * acos(cos(radians('37.7717185')) * cos(radians(lat))
* cos(radians(longi) - radians('-122.4438929'))
+ sin(radians('37.7717185')) * sin(radians(lat)))) AS distance
FROM points
HAVING distance < '25') as distResults
LEFT JOIN category USING (category_id)
LEFT JOIN reviews USING (point_id)
WHERE (point_title LIKE '%Playgrounds%' OR category.title LIKE '%Playgrounds%')
GROUP BY point_id
ORDER BY totals DESC, distance
LIMIT 0, 10
这里是所涉及的表的模式:
积分表: 字段类型Null默认注释 point_id INT(11)否
point_title VARCHAR(255)无
CATEGORY_ID INT(11)否
描述文本没有
point_url VARCHAR(255)否
地址VARCHAR(255)否
城市VARCHAR(255)无
状态为varchar(255)无
ZIP_CODE VARCHAR(255)无
电话为varchar(255)无
名VARCHAR(255)无
LAT VARCHAR(25)否
隆基VARCHAR(25)否
USER_ID INT(2)无0
功能INT(1)是0
状态INT(1)否1个
kmlno INT(2)无0
LASTUPDATE VARCHAR(255)否
IMAGE_URL VARCHAR(255)无
评价表: 字段类型Null默认注释 REVIEW_ID INT(11)否
审查INT(1)否0
review_title VARCHAR(255)无
review_desc文本没有
star_points INT(11)是0
USER_ID INT(11)是0
point_id INT(11)否
LAT VARCHAR(25)否
茇VARCHAR(25)否
LASTUPDATE VARCHAR(255)否
状态VARCHAR(1)没有R
分类表: 字段类型Null默认注释 CATEGORY_ID INT(11)否
标题VARCHAR(255)否
描述文本否
文件名的varchar(255)否
IMAGE_NAME VARCHAR(255)否
状态INT(1)是0
LASTUPDATE VARCHAR(255)否
哪一列给你提问?你能格式化你的查询,以便可以读取它吗? – 2010-05-22 20:49:51
我想通了。我不需要使用'points'来预置lat和longi列,而是需要以'distResults'开头,因为这是使用的表别名。感谢大家的帮助。 – Jason 2010-06-24 00:01:17