簡體   English   中英

在查詢范圍內選擇價格

[英]select price Between a range in query

大家好,我想知道如何選擇一個范圍之間的價格bt,例如:1000 ... 2000 ... [Min(2100)... Max(4000)] ... 5000 ...

價格列在工作表中

我的查詢是:

 $sql = "SELECT DISTINCT bk.title AS Title, YEAR(bk.date_released) AS Year, bk.price AS Price, cat.name AS Category, aut.name AS Author FROM books bk JOIN categories cat ON cat.id = bk.category JOIN books_covers bk_co ON bk_co.book_id = bk.id JOIN covers co ON co.id = bk_co.cover_id JOIN books_authors bk_aut ON bk_aut.book_id = bk.id JOIN authors aut ON aut.id = bk_aut.author_id JOIN books_languages bk_lan ON bk_lan.book_id = bk.id JOIN languages lan ON lan.id = bk_lan.lang_id JOIN books_locations bk_loc ON bk_loc.book_id = bk.id JOIN locations loc ON loc.id = bk_loc.location_id WHERE (bk.price >= 2100 AND bk.price <= 4000) OR (bk.price >= 1000 AND bk.price <= 2000) "; if (isset($_GET['srch_for'])){ $locations = array(); $getters = array(); $queries = array(); foreach($_GET as $key => $value) { $temp = is_array($value) ? $value : trim($value); if (!empty($temp)) { list($key) = explode("-",$key); if ($key == 'srch_locations'){ array_push($locations,$value); } if (!in_array($key,$getters)){ $getters[$key] = $value; } } } if (!empty($locations)) { $loc_qry = implode(",",$locations); } if(!empty($getters)) { foreach($getters as $key => $value){ ${$key} = $value; switch($key) { case 'srch_for': array_push($queries, "(bk.title LIKE '%$srch_for%' || bk.description LIKE '%$srch_for%' || bk.isbn LIKE '%$srch_for%')"); break; case 'srch_category': array_push($queries, "bk.category = $srch_category"); break; case 'srch_cover': array_push($queries, "bk_co.cover_id = $srch_cover"); break; case 'srch_author': array_push($queries, "bk_aut.author_id = $srch_author"); break; case 'srch_language': array_push($queries, "bk_lan.lang_id = $srch_language"); break; case 'srch_year': array_push($queries, "YEAR(bk.date_released) = $srch_year"); break; case 'srch_locations': array_push($queries, "bk_loc.location_id IN ($loc_qry)"); break; } } } if(!empty($queries)) { $sql .= " WHERE "; $i=1; foreach($queries as $query) { if ($i < count($queries)) { $sql .= $query." AND "; }else{ $sql .= $query; } $i++; } } $sql .= " ORDER BY bk.title ASC"; } 

我更新了代碼謝謝你提前

您可以使用BETWEEN

WHERE bk.price BETWEEN '5000' AND '8000'

更多信息在這里

WHERE (bk.price >= 2100 AND bk.price <= 4000)

如果您希望價格范圍介於[Min(2100)... Max(4000)]之間,則在加入后查詢到查詢末尾

您可以使用OR設定多個價格范圍

WHERE (bk.price >= 2100 AND bk.price <= 4000)
OR    (bk.price >= 1000 AND bk.price <= 2000)

暫無
暫無

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

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