Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表别名--字段列表中的未知列_Sql_Mysql - Fatal编程技术网

Sql 表别名--字段列表中的未知列

Sql 表别名--字段列表中的未知列,sql,mysql,Sql,Mysql,我有一个sql查询,它在两个表上执行左连接,其中一些列是不明确的。我可以为连接的表添加前缀,但当我尝试在from子句中为表中的一列添加前缀时,它会告诉我未知列。我甚至试着给那张表一个别名,像这样…从点到点,用p作为表的前缀,但这也不起作用。我做错了什么?我的问题是: SELECT point_title, point_url, address, city, state, zip_code, phone, `points`.`lat`, `points`.`longi`, featur

我有一个sql查询,它在两个表上执行左连接,其中一些列是不明确的。我可以为连接的表添加前缀,但当我尝试在from子句中为表中的一列添加前缀时,它会告诉我未知列。我甚至试着给那张表一个别名,像这样…从点到点,用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
以下是所涉及表的架构:

积分表: 字段类型空默认注释 点11号 点\标题varchar255号 类别识别号int11号 说明文字编号 点url varchar255号 地址:varchar255号 城市瓦查尔255号 州varchar255号 邮政编码varchar255号 电话号码 文件名varchar255否 lat varchar25号 朗吉瓦查25号 用户id int2 No.0 特色国际1号0 国际1号 kmlno int2第0号 lastupdate varchar255号 图像\u url varchar255号

审查表: 字段类型空默认注释 审查id int11号 复习int1第0课 审查标题varchar255号 审查说明文本编号 星点int11第0位 用户id int11否0 点11号 lat varchar25号 朗吉瓦查25号 lastupdate varchar255号 状态varchar1 No r

类别表: 字段类型空默认注释 类别识别号int11号 标题varchar255号 说明文字编号 文件名varchar255否 图像\u名称varchar255号 状态int1 No.0
lastupdate varchar255 No

如果没有看到您的模式,很难确定问题出在哪里。但我确实看到了一个问题-将距离小于25的选项从内部选择移动到外部选择。距离名称对于内部选择不可用。我也改变了必须去哪里,因为没有分组

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

哪个专栏给了你这个问题?你能把你的查询格式化以便能读出来吗?我想出来了。我不需要在lat和longi列前面加上“points”,而需要在前面加上“DistrisUlts”,因为这是正在使用的表别名。谢谢大家的帮助。好的,谢谢,但是我在上面的查询中遇到了这个错误:1064-你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解在第11行使用“AS distResults LEFT JOIN category USING category_id LEFT JOIN reviews U”的正确语法