Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
MySQL在何处加入_Mysql_Join - Fatal编程技术网

MySQL在何处加入

MySQL在何处加入,mysql,join,Mysql,Join,我有两张桌子- tbl_business ------------------------ | id | name | lat |long| |----|------|-----|----| | 1 | aaaa |12.45|6.88| |----|------|-----|----| | 2 | bbbb |12.34|6.45| |----|------|-----|----| | 3 | cccc |12.12|6.50| |----|------|-----|----| 及 现

我有两张桌子-

tbl_business
------------------------
| id | name | lat |long|
|----|------|-----|----|
|  1 | aaaa |12.45|6.88|
|----|------|-----|----|
|  2 | bbbb |12.34|6.45|
|----|------|-----|----|
|  3 | cccc |12.12|6.50|
|----|------|-----|----|

现在我想找到12.44和6.66之间1公里范围内的所有企业,以及交易数量。例如

| bid |dcount|
|-----|------|
|  1  |   2  |
|-----|------|
|  2  |   1  |
|-----|------|
|  3  |   0  |
|-----|------|
我现在正在使用这个查询-

SELECT bid, COUNT( id ) as count
FROM  `tbl_deals` 
WHERE bid
IN (
    SELECT id
    FROM tbl_business
    WHERE ( 6371 * ACOS( COS( RADIANS( 12.44 ) ) * COS( RADIANS( lat ) ) * COS( RADIANS( long ) - RADIANS( 6.66 ) ) + SIN( RADIANS( 12.44 ) ) * SIN( RADIANS( lat ) ) ) ) < 1
    )
GROUP BY bid
ORDER BY count DESC
我找到了公式。但这并没有显示出价3的计数=0。我猜我必须使用Left-join,但我不知道如何使用

select id, (select count(*) from tbl_deals,tbl_business a1 where tbl_deals.bid=a1.id and a1.id=a2.id and ( 6371 * ACOS( COS( RADIANS( 12.44 ) ) * COS( RADIANS( lat ) ) * COS( RADIANS( `long` ) - RADIANS( 6.66 ) ) + SIN( RADIANS( 12.44 ) ) * SIN( RADIANS( lat ) ) ) ) < 30) as count
from tbl_business a2
group by id
order by count desc
我使用您的数据和更改条件来满足结果

参考:

我使用您的数据和更改条件来满足结果

参考:

是的,您必须编写外部连接,业务左连接交易:


是的,您必须编写外部联接,业务左联接交易:


成功了。谢谢我想我应该多研究一下连接你有没有给初学者的资源?除了mysql文档:PAlso:这是有效的。谢谢我想我应该多研究一下连接你有没有给初学者的资源?除了mysql文档:PAlso:和
select id, (select count(*) from tbl_deals,tbl_business a1 where tbl_deals.bid=a1.id and a1.id=a2.id and ( 6371 * ACOS( COS( RADIANS( 12.44 ) ) * COS( RADIANS( lat ) ) * COS( RADIANS( `long` ) - RADIANS( 6.66 ) ) + SIN( RADIANS( 12.44 ) ) * SIN( RADIANS( lat ) ) ) ) < 30) as count
from tbl_business a2
group by id
order by count desc
SELECT 
      b.id
    , COUNT( d.bid ) AS dcount
FROM  
      tbl_business AS b
  LEFT JOIN
      tbl_deals AS d 
    ON 
      d.bid = b.id
WHERE 
      ( 6371 * ACOS( COS( RADIANS( 12.44 ) ) 
                   * COS( RADIANS( lat ) ) 
                   * COS( RADIANS( long ) - RADIANS( 6.66 ) ) 
                   + SIN( RADIANS( 12.44 ) ) 
                   * SIN( RADIANS( lat ) ) 
                   ) 
      ) < 1
GROUP BY 
      b.id
ORDER BY 
      dcount DESC