2010-05-22 49 views
0

我有一個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)否

+0

哪一列給你提問?你能格式化你的查詢,以便可以讀取它嗎? – 2010-05-22 20:49:51

+0

我想通了。我不需要使用'points'來預置lat和longi列,而是需要以'distResults'開頭,因爲這是使用的表別名。感謝大家的幫助。 – Jason 2010-06-24 00:01:17

回答

0

沒有看到你的模式,很難確切地知道問題是什麼。但我確實看到一個問題 - 將內部選擇的HAVING距離移動到外部選擇。 「距離」名稱不適用於內部選擇。我也將HAVING改爲WHERE,因爲沒有GROUP BY。

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 * 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) AS distResultsInner 
     WHERE 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 
+0

好的謝謝,但我得到這個錯誤與上述查詢: #1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以找到在''附近使用的正確語法')AS distResults LEFT JOIN類別USING(category_id)LEFT JOIN審覈第11行的U' – Jason 2010-05-24 19:32:19

+0

原始文章更新爲顯示模式 – Jason 2010-05-24 19:40:50

+0

是的, 。我更新了查詢。 – mdma 2010-05-24 22:07:06

相關問題