이미지이 테이블그룹화 교체
Table sentence
--------------------------------------------------
| id | value |
--------------------------------------------------
| 1 | I own a $1 $3.|
--------------------------------------------------
Table sentence_word_relations
--------------------------------------------------
| sentence_id | word_id
--------------------------------------------------
| 1 | 1
--------------------------------------------------
| 1 | 3
--------------------------------------------------
Table word
--------------------------------------------------
| id | value
--------------------------------------------------
| 1 | red
--------------------------------------------------
| 2 | blue
--------------------------------------------------
| 3 | bike
--------------------------------------------------
| 4 | house
--------------------------------------------------
하나는 여러 문장을 만들 수있을 것입니다 : 나는 레드/블루 자전거/주택을 소유하고 있습니다. 문장에 포함 된 단어 변수에 따라 다릅니다. 문장이 갱신되고 달러 기호 다음에 값이 변경 되 자마자 관계 테이블이 그에 따라 업데이트됩니다.
- I own a red $3.
- I own a $1 bike.
가 하나 개의 행이 반환해야 할 수 있다면, 즉이 경우, 궁금가 : 나는 빨간 자전거를 소유하고 다음 쿼리 ...
SELECT
REPLACE(sentence.value, CONCAT('$', word.id), word.value) AS sentence
FROM sentence
JOIN sentence_word_relations
ON sentence.id = sentence_word_relations.sentence_id
JOIN word
ON sentence_word_relations.word_id = word.id
은 ... 자연스럽게 두 개의 행을 반환 .
나는이 모든 것을 결합하기 위해 동적 SQL이 필요하다고 생각합니다. REPLACE ('$ 1', value1, REPLACE ('$ 2', value2, REPLACE ('$ 3', value3, ...))) ' – Barmar
에 대한 대체는 호출 응용 프로그램 언어에서 수행하는 것이 더 쉽습니다. 예 : PHP에서는'$ n'과'value's의 배열을 생성 할 수 있고'str_replace()'를 한번에 호출 할 수 있습니다. – Barmar
깔끔한 것은 아닙니다. 그래서 내가 물었다. – user2180613