查看完整版本: 關於MYSQL範圍讀取[已解決]
頁: [1]

han860 發表於 2016-9-2 01:14 PM

關於MYSQL範圍讀取[已解決]

本帖最後由 han860 於 2016-9-6 04:21 PM 編輯

事情是這樣的
因公司想做個景點介紹~地區分別為~
基隆到花蓮設定1~16~~
問題來了~~
現在假使相要搜尋新竹(5)~南投(9)~~
這樣搜尋5、6、7、8、9這是沒問題~~
現在公司想要連同5、4、3、2、1、16、15、14、13、12、11、10、9~這樣反向也要搜尋到~~
等於是要同時搜尋正向路線和反向路線~~
不知道有沒有高手指點一下~~多謝!!

<div></div>

alextang1030 發表於 2016-9-3 12:40 AM

我的想法是
你先從用戶那邊拿取他要的起點跟終點
再從資料庫裡拿出所有ID(只要ID)並按順序排好放array中(假設有可能不是按ID的大小來排順序)
然後用array_search 來找出起點的KEY跟終點的KEY
正向的就用FOR LOOP 從起點開始排到終點
取得新的正向ID ARRAY
反向的就先用FOR LOOP從起點開始往回到KEY0
取得一部份的反向ID ARRAY
再從總ARRAY 的END開始FOR LOOP回終點
那就可以取得剩下的ID順序放到反向ID ARRAY中

最後再去資料庫用ARRAY來拿東西就好了


以上是個人的看法,應該是有更好更簡單的
有勞其他大大幫忙了...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2016-9-3 05:52 AM

example:

SELECT * FROM tablename WHERE id >= 4 AND id <= 8 ORDER BY  id DESC;

就可以得到8, 7, 6, 5, 4 的結果

但是如果要跨越原點的時候
就需要分成兩次
或者乾脆照樓上的方式做

han860 發表於 2016-9-4 07:29 PM

多謝兩位大大解說~
alextang1030 大大的說明~我比較不懂~
所以要再研究研究~~~
chevylin0802 大大的說明~應該就是要分兩次了~~~

han860 發表於 2016-9-6 04:22 PM

感謝兩位大大的解說~~
問題已經解決了~~
多謝!!^^<br><br><br><br><br><div></div>

chevylin0802 發表於 2016-9-6 05:31 PM

han860 發表於 2016-9-6 04:22 PM static/image/common/back.gif
感謝兩位大大的解說~~
問題已經解決了~~
多謝!!^^

有做出來就好
雖然不是最佳的解決方案
不過有總比沒有的好

MySQL其實有很多的功能並沒有被人們所使用到
比如VIEW的功能
比如stored procedure/user defined function的功能
比如trigger的功能等

但對於想要更進一步的深入
甚至可能考慮過參與外國企業的大型研發計劃的話
那麼就有必要更深入的去研究那些部份
畢竟資料庫那麼多個語法與功能被定義出來並不是擺好看的
只是國內多數開發資料庫的人貪快而不去深究這些東西
事實上我更相信有許多人連commit都沒用過
這其實都不是好事
因為嚴謹度不夠的開發
往往充斥著不少看不見的BUG

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]