繁体   English   中英

将两个表合并为1个SQL查询

[英]Two tables into 1 SQL Query

我正在使用以下查询按位置在页面上显示一些列表:

SELECT *,
 ((ACOS(SIN($lat * PI() / 180) * SIN(gps_lat * PI() / 180) + COS($lat * PI() / 180) * COS(gps_lat * PI() / 180) * COS(($lon - gps_long) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
  FROM listings

我现在也想按建筑物类型过滤上述清单。 单独的表格记录了清单ID和建筑物类型ID,如下所示:

SELECT * 
  FROM building_types_listings 
 WHERE listing_id = listings.id 
   AND building_type_id = '$building_type'

如何将两个查询合并到一个SQL语句中?

尝试类似的方法:

SELECT whatever fields you need,
       ((ACOS(SIN($lat * PI() / 180) * SIN(gps_lat * PI() / 180) + COS($lat * PI() / 180) * COS(gps_lat * PI() / 180) * COS(($lon - gps_long) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance
FROM listings
  JOIN building_types_listings
    ON listings.id = building_types_listings.listing_id
WHERE building_type_id = '$building_type'

但是,您绝对想重新考虑如何构建查询并在其中插入字符串。 如果$ building_type恰好是(减去双引号)“'; DELETE FROM listings;-”,会发生什么? 我建议您依靠某种类似于sprintf的功能(在PHP中,这通常意味着您需要准备好的语句),而不要使用不赞成使用的虚假魔术引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM