저는 재미있는 일과 학습을위한 개인 프로젝트로 PHP와 MySQL 사전을 만들고 있습니다. 그러나 MySQL이 사전 항목을 검색하는 방법을보다 정확하게하려고 할 때 문제가 발생했습니다.MySQL을 사용하여 복잡한 다중 테이블 검색 쿼리 수행
내 쿼리의 의도는 '입력'테이블 (아래에서 설명 함)에서 '단어'로 제공된 단어를 검색하고 결과가 발견되면 '대안'에서 모든 '대체'를 나열하는 것입니다. 그것으로.
그러나 결과가 없으면 '대체 단어'를 검색하고 '대체 단어'로 제공된 단어를 검색 한 다음 동일한 단어가있는 '항목'테이블에서 해당 단어를 검색합니다 '.
나는이 실수 코드로이를 달성 할 수 있었다 :
SELECT alternatives.word, alternatives.alternative, entries.added
FROM alternatives
INNER JOIN entries
ON entries.word = alternatives.word
WHERE entries.word = (SELECT word
FROM alternatives
WHERE alternative = "randomword"
OR word = "randomword" LIMIT 1)
불행하게도,이 코드는이 계정 관리에 중요한 문제를 고려하지 않습니다, 단어는 '대안'에있을 수 있다는 것입니다, 하지만 여전히 '항목'에 항목이 있습니다. (예 : 'entries'에는 'query'및 'querying'이 포함될 수 있으며 'query'에는 대안으로 'querying'이 표시되는 반면 'querying'에는 대안으로 'query'가 표시됩니다.)
' 대안 '테이블 :
id | word [the word the alternative word is based on] | alternative [alternative word] | type [verb/noun/adjective etc...]
'항목 '테이블 :이 문제에 대한 쉬운 해결책이
id | word [the word] | date [timestamp of entry, must be returned]
있습니까? 나는 지금 완전히 붙어있다.
이걸 실행하려했지만 오류가 발생했습니다 :'# 1064 - SQL 구문에 오류가 있습니다. 'IF EXISTS (SELECT * FROM entries WHERE word = "wordtosearch") 근처에서 사용할 올바른 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. BEGIN SELECT'at line 1 ' – Forest
죄송합니다. SQL 서버와 MYSQL 문법은 약간 다릅니다. 나는 나의 대답을 편집했다. –