[英]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.