我已經陷入這個問題,我不完全確定我應該如何實現我的查詢。需要幫助查詢邏輯
我有兩個表,一個是的文章和一個所謂的ATC代碼。
ATC代碼如下所示:N02AA59
。這是一個完整代碼consisiting的7個字符。最後一個字符之前的每個字符都是某個類別。因此N02A
也是ATC代碼。
現在我的文章表包含遠離所有ATC代碼。 我想要實現的是一個用於自動完成的結果集,以這種方式,所有ATC子代碼(char 1-6)都應該是結果集的一部分,只要 - 並且只有在它們導致達到一篇ATC代碼的文章以我的文章表中的那些字符開頭。例如,如果我在自動填充中鍵入「N02A」,那麼應該成爲結果集一部分的項目都是以「N02A」開頭的ATC代碼,因爲我們有一篇文章的ATC代碼爲「 N02AA59" 。
這是基本的查詢,但正如你可能已經猜到,它只返回7焦炭ATC代碼,因爲在我的文章表中不存在短ATC代碼:
SELECT _atc_codes.code, _atc_codes.name
FROM articles
JOIN _atc_codes
ON (_atc_codes.code LIKE 'N02A%' AND _atc_codes.id = articles.atc_code)
有一個轉折整個查詢。第二列,即相應的名稱字段,必須是ATC編碼的字段。因此,如果我搜索「N02A」,這並不意味着每個項目都應該有ATC代碼「N02A」的名稱。
您是否嘗試過使用'SUBSTR'功能?它可能可以幫助你http://sql.sh/fonctions/substring – AlexB
使用返回不同長度的SUBSTR的查詢的UNION。 – Barmar
對不起,我不明白你在做什麼,但是關於層次結構的事情不是嗎?例如,搜索N02AB(N02A)應該引發QN02AB53(芬太尼組合,右) – Strawberry