2016-08-16 21 views
0

我有这样的SQL:MySQL的 - 如何利用现场数据点()函数

SELECT 
    userAddress.user_address_complete, 
    userAddress.user_address_point, 
    deliveryZone.delivery_zone_id, 
    St_contains(deliveryZone.delivery_zone_polygon, 
    Geomfromtext('POINT(userAddress.user_address_point)')) AS cnt 
FROM user_addresses userAddress 
LEFT JOIN delivery_zones deliveryZone 
    ON (deliveryZone.restaurants_id = 154 
    AND St_contains(deliveryZone.delivery_zone_polygon, 
    Geomfromtext('POINT(userAddress.user_address_point)')) 
    > 0) 
WHERE userAddress.user_address_user_id = 1 

问题是POINT(userAddress.user_address_point)应该使用userAddress.user_address_point现场数据,但SQL无法理解,这是一个场名字和行为像一个字符串,所以我们没有结果。

有什么建议吗?

回答

0

尝试从字符串中排除列名称。将它分成 'POINT('userAddress.user_address_point'))

SELECT 
    userAddress.user_address_complete, 
    userAddress.user_address_point, 
    deliveryZone.delivery_zone_id, 
    St_contains(deliveryZone.delivery_zone_polygon, 
    Geomfromtext('POINT('userAddress.user_address_point')')) AS cnt 
FROM user_addresses userAddress 
LEFT JOIN delivery_zones deliveryZone 
    ON (deliveryZone.restaurants_id = 154 
    AND St_contains(deliveryZone.delivery_zone_polygon, 
    Geomfromtext('POINT('userAddress.user_address_point')')) 
    > 0) 
WHERE userAddress.user_address_user_id = 1 
+0

我举一个错误:未定义的常量UserAddress用途 - 假设 'UserAddress'。我想这不是必要的方法来做到这一点,因为UserAddress是我的实体之一,它不能定义为常量变量。 – AFN

+0

好吧,我认为UserAddress是一个PHP模型。尝试将'PO'(UserAddress.userAddressPoint)\''替换为'POINT(UserAddress.userAddressPoint)' – miikes

+0

我改变了我的问题,请再次查看。 – AFN