【问题标题】:Two tables one contain records and second conatain location i want to show first table record with out join两个表一个包含记录,第二个包含位置我想显示第一个表记录而不连接
【发布时间】:2021-03-09 23:13:26
【问题描述】:

我正在处理它 两个表包含记录;一个是管理表,其中包含所有详细信息,第二个商店位置首先我想检查纬度和经度并从 shop_location 获取结果它工作正常,然后我想检查商店的状态是打开并显示结果

这是我的 MYSQL QUERY,效果很好

SELECT DISTINCT s_number,radious, ( 3959 * ACOS( COS( RADIANS( 
   latitude ) ) * COS( RADIANS( "33.5967558" ) ) * COS( RADIANS( 
    "73.3869814" ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude 
  ) ) * SIN( RADIANS("33.5967558" ) ) ) ) AS distance FROM 
   Shop_Location HAVING distance <= radius/1000 ORDER BY distance 
     ASC

这是我的第二个查询

SELECT * from Admins WHERE shopstatus='ON'

两个表中的电话号码相同但不是唯一的我想从 shop_location Query 中获取结果,然后检查商店的状态 (ON) 显示结果。

我想用 Query 解决它。

【问题讨论】:

  • '没有加入' ?需要详细说明吗?

标签: php jquery mysql mysql-error-1064


【解决方案1】:

假设两个表都链接了“s_number”(店号),你可以试试下面的SQL

SELECT DISTINCT Shop_Location.s_number,radious, ( 3959 * ACOS( COS( RADIANS( 
   latitude ) ) * COS( RADIANS( "33.5967558" ) ) * COS( RADIANS( 
    "73.3869814" ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude 
  ) ) * SIN( RADIANS("33.5967558" ) ) ) ) AS distance FROM 
   Shop_Location, admins where
Shop_Location.s_number=admins.s_number and admins.shopstatus='ON'
 HAVING distance <= radius/1000 ORDER BY distance 
     ASC

【讨论】:

  • 对我来说似乎是一个加入
【解决方案2】:

可能是这样的:

SELECT DISTINCT
    Shop_location.s_number,
    Shop_location.radious,
    (
        3959 * ACOS(
            COS(RADIANS(latitude)) * COS(RADIANS("33.5967558")) * COS(
                RADIANS("73.3869814") - RADIANS(Shop_location.longitude)
            ) + SIN(
                RADIANS(Shop_location.latitude)
            ) * SIN(RADIANS("33.5967558"))
        )
    ) AS DISTANCE,
    Admins.shopstatus
FROM
    Shop_Location
LEFT JOIN
    Admins
ON
    Admins.s_number = Shop_location.s_number
HAVING
    DISTANCE <= radius / 1000
ORDER BY
    DISTANCE ASC

【讨论】:

    【解决方案3】:

    这是正确的答案

    SELECT DISTINCT 
    Admins.email,Admins.address,Admins.adminname,
    Admins.diliveryfee,Admins.endingtime,Admins.minorder
    ,Admins.name,Admins.password,Admins.shopimage,
    Admins.shopmessage,Admins.phonenumber,
     Admins.shopname,Admins.shopstatus FROM (
     SELECT Admins.email,Admins.address,Admins.adminname,Admins.diliveryfee,Admins.endingtime,Admins.minorder,Admins.name,Admins.password,Admins.shopimage,Admins.shopmessage,Admins.phonenumber,Admins.shopname,Admins.shopstatus,Shop_Location.radious AS shopLocationRadius, ( 6371 * ACOS( COS( 
      RADIANS( latitude ) ) * COS( RADIANS( "33.5967558" ) ) * 
      COS( RADIANS( "73.3869814" ) - RADIANS( longitude ) ) + 
        SIN( RADIANS( latitude ) ) * SIN( 
         RADIANS("33.5967558" ) 
          ) ) ) AS distance FROM Shop_Location INNER JOIN 
        Admins ON 
        (Admins.phonenumber = Shop_Location.s_number) WHERE 
        Admins.shopstatus='ON'  HAVING distance <= radious/1000 
       ORDER BY distance ASC)
         AS Admins
    

    【讨论】:

      猜你喜欢
      • 2013-06-15
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2020-06-29
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      相关资源
      最近更新 更多