相寫一個多音字的出題系統用在教學上
(一)資料表pingyin_word的內容
| word | word_pingyin | words | bank_id |
| 勝 | (一)ㄕㄥˋ | 聊勝一籌 | 1 |
| 勝 | (一)ㄕㄥˋ | 勝券在握 | 1 |
| 勝 | (一)ㄕㄥˋ | 名勝美景 | 1 |
| 勝 | (二)ㄕㄥ | 悲不自勝 | 1 |
| 勝 | (二)ㄕㄥ | 不勝枚舉 | 1 |
| 勝 | (二)ㄕㄥ | 喜不自勝 | 1 |
(二)目標:
找出相同bank_id(就會找出相同的word)後,依據不同的注音(word_pingyin欄位),列出對應的詞語(words欄位),如在前端列出:
勝(一)ㄕㄥˋ:
聊勝一籌、勝券在握、名勝美景
勝(二)ㄕㄥ:
悲不自勝、不勝枚舉、喜不自勝
(三)寫法:目前我用直覺式的寫法:
請問各位高手前輩,有没有更好的寫法呢?
A. pingyin_word table 建議加入一個欄位 word_pingyin_order : 注音第幾聲 (排序用)
B. word_pingyin 欄位不寫入 (一),(二) <= 猜測是注音第幾聲
C. pingyin_bank table 內有個 pingyin_word 欄位 ,有點奇怪;暫不考慮此 table;
CREATE TABLE pingyin_word(word varchar(20), word_pingyin varchar(20),
word_pingyin_order varchar(20),
words varchar(20),bank_id varchar(20));
SELECT CONCAT(word,
CASE WHEN word_pingyin_order='1' THEN '(一)'
WHEN word_pingyin_order='2' THEN '(二)'
WHEN word_pingyin_order='3' THEN '(三)'
WHEN word_pingyin_order='4' THEN '(四)'
ELSE '*' END,
word_pingyin) AS wordcombineA,
GROUP_CONCAT(words) AS wordcombineB
FROM pingyin_word
WHERE 1=1
AND bank_id='1'
GROUP BY word,word_pingyin,word_pingyin_order
ORDER BY word,word_pingyin,word_pingyin_order,words
https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=bc92874400e7f38d6ab31a395433ce0a