iT邦幫忙

1

PHP Mysql 如何觸發找答案

網上找 SQL 觸發關鍵字找到 trigger , 但感覺不是這樣用 , 先用 SQL 搜尋到適合的 ROW , 再經由這個 ROW 的關鍵字 , 自動觸發找下一個 ROW 適合的關鍵字 , 是寫個 function 用 FOR 去迴圈比對嗎 ?

如下面 0615 的地瓜 , 觸發找到下一個時間順位 0715 及符合蘋果順位 , 這樣要如何自動觸發呢 ?

https://ithelp.ithome.com.tw/upload/images/20181014/20104326m6KsGy0JGe.png

看更多先前的討論...收起先前的討論...
code iT邦新手 5 級 ‧ 2018-10-15 09:47:30 檢舉
我覺得你都有說到你猜測是寫個function用for去比對了...為什麼不試試看呢@@"
我自認為程式最迷人的地方就是沒有標準方法,反正先把成果做出來(土砲),之後時間長了學得越來越多再來優化(標準化)
"網上找 SQL 觸發關鍵字找到 trigger , 但感覺不是這樣用" 觀念正確耶,真不容易
你要的答案跟 trigger 無關,你還是繞在 DML 上面,DB 設計沒那麼複雜,先把 DML 搞懂再問 DCL DDL 的問題
ccutmis iT邦高手 2 級 ‧ 2018-10-15 11:04:11 檢舉
不一定要把所有的東西都靠SQL解決,例如一個PHP+MySQL的多層選單只用一個表單記錄menuID,menuName,menuLevel,menuParent,sortOrder...
利害的或許可以用SQL語法一次性把選單階層順序排好再吐出到PHP端,對SQL語法沒這麽強的,也可以下簡單的SQL查詢再用PHP作選單階層排序啊,重點是快速解決問題。也許你把到時要實作在客戶端的程式語言(例如PHP,Python,C#,Java...etc)一併納入思考會比較簡單。
還是老話一句,不要拿sql做程式運行的行為。
請忠實的將sql當資料容器使用。
其它的用程式語言來幫你達到。

想學習sql上的搜尋應用,你要了解的東西還很多的,如結構上的配合處理等等。
想要用簡單的結構。就就好只利用程式語言來跑。
alex9453 iT邦新手 2 級 ‧ 2018-10-15 13:07:07 檢舉
我有做 function 但做不出來 , 才上來問 , 下面這樣還缺什麼 , 才能把搜尋到條件列印出來
$fruit_arr = array("地瓜","蘋果", "荔枝", "葡萄", "鳳梨", "西瓜","龍眼","榴槤","香蕉","柳丁");
function find_fruit($str)
{

for($i=0; $i<count($fruit_arr); $i++) {
if(strstr($str, $fruit_arr[$i])) {
return $fruit_arr[$i];
}
}
return NULL;
}
echo $str;
?>
看你的程式碼並不是做不出來。而是你完全沒搞懂你要的東西是什麼。
你這段程式碼跟你想要的,完全天差地遠。

根本就不知道你想要做什麼。

說真的,我還是那段老話。你目前需要學的並非是程式碼,而是架構邏輯觀念。
你的架構邏輯觀念可以說是等於0。這並不是有辦法用一言兩語就可以教的會的。
我只能告訴你,先學會如何述說你的需求。不要用sql或是程式碼來述說。
用文字訴說你想要做出來的東西是什麼。

你欠缺的是這個東西。因為你連你要的需求是什麼,都沒辦法了解跟知道。
你要如何去構建你的程式碥呢?
code iT邦新手 5 級 ‧ 2018-10-15 14:25:47 檢舉
你的程式碼跟你想要的好像不一樣吧.....
if一成立就return了,剩下的for還會跑嗎....
ccutmis iT邦高手 2 級 ‧ 2018-10-15 14:51:24 檢舉
寫程式最基本的是邏輯,跟用什麽語言無關,也就是說能用自然語言描述,例如:

陣列名$fruit_array=['地瓜','蘋果','茘枝','葡萄',....];
陣列名$results=[]; //存搜尋結果
變數$i=0;
While迴圈( $i<($fruit_array.長度-1))
{
查詢字串="SELECT * FROM fruit WHERE afc1 LIKE '%".$fruit_array[$i]."%' AND afc LIKE '%".$fruit_array[$i+1]."%' ORDERBY ....";
連接到MySQL並用查詢字串作查詢,將查詢結果塞進$result陣列;
$i++;
}
End Whild迴圈

輸出$result陣列;

簡單寫的用自然語言描述程式流程,
只是提個範例不是php程式片段請勿照抄,
希望對樓主學習有幫助,程式基礎有時還是笨笨學學最快~
不知不覺 看alex大的發問已經變成上班偷閒的消遣了
lubu1 iT邦新手 5 級 ‧ 2018-10-19 10:21:47 檢舉
@hijapan1234 我看了他過去半年的發文, 發現他問的問題真的是超級低能的XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3

最大的問題,是聽不懂你的問題…/images/emoticon/emoticon10.gif

0
犬千賀
iT邦新手 3 級 ‧ 2018-10-16 14:03:01

......咱們先搞清楚你想表達的東西好不

資料照時間順位下去搜尋,再按照'地瓜','蘋果','荔枝',...順序查找
若當前資料afc1符合當前水果,則查找下一筆資料(時間大於上一筆)且afc符合下一筆水果
TRUE/FALSE? If FALSE, plz describe clearly.

你是不斷找下去(地瓜>蘋果>荔枝>...)嗎?
If TRUE, 是照 afc1 > afc > afc1 > afc >...的欄位下去找嗎?
else, 你是怎麼決定從哪筆資料開始找? 從哪樣水果開始?

如果水果都不符合,用下一樣水果去找嗎? 還是結束?
如果已經是最後一筆資料,回到第一筆資料去找嗎? 還是結束?
如果已經是最後一筆水果,回到第一筆水果去找嗎? 還是結束?

BTW... 為什麼你範例中的下一筆是006 而不是012?

0
gn00044255
iT邦新手 5 級 ‧ 2018-10-16 14:10:40

1.建議把你的資料庫做正規畫,排序資料會比較好做
2.比如多一個欄位,比如字元含蘋果 欄位就設F0010 含香蕉 F0020 類似這樣
3.在SQL下Order By的排序指令 他就會按F0010 F0020的順序排

我要發表回答

立即登入回答