簡體   English   中英

MySQL檢查是否存在具有類別的行

[英]MySQL check if row with category exists

我在此查詢中使用Haversine公式,並且一直有效。 目的是檢查每行是否具有$ deflin值中的某些類別,該值看起來像$ deflin = category1,category2,category3。 結果將顯示50公里以內的行,並且其中是否包含$ deflin定義的任何類別。 不確定如何使用WHERE IN或LIKE處理該問題。 任何幫助表示贊賞。

MySQL查詢

$awaka = "SELECT *,
( 6371 * acos( cos( radians(?) ) * cos( radians(job_latitude) ) *   
cos(radians(?) - radians(job_longitude) ) + sin( radians(?) ) *   
sin( radians(job_latitude) ) ) ) AS distance FROM job, users   
WHERE job.listee_id = users.user_id AND job.job_category LIKE ?   
HAVING distance < 50";

$result = $this->db->query($awaka, array($conlat, $conlong, $conlat, $deflin));     

我認為您不喜歡使用LIKE運算符,因為它僅搜索列中的模式,並且只希望不返回確實具有您的類別之一的行。 相反,您應該使用IN子句檢查作業是否屬於您的類別之一:

// contains the id for each category
$categories = array(1, 4, 5, 6);
$deflin = implode(',', $categories);

// if job_category is a text column you could do like this instead
$categories = array('category1', 'category2', 'category3');
$deflin = implode(',', $categories);    

$awaka = "SELECT *,
( 6371 * acos( cos( radians(?) ) * cos( radians(job_latitude) ) *   
cos(radians(?) - radians(job_longitude) ) + sin( radians(?) ) *   
sin( radians(job_latitude) ) ) ) AS distance FROM job, users   
WHERE job.listee_id = users.user_id AND job.job_category IN ($deflin)   
HAVING distance < 50";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM