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