2013-03-23 1 views
0

가입 : 나는 "단어 word2"에 대한 여러 단어 검색을 수행하고MySQL은 내가 테이블 구조를 가진 여러 단어 검색

lnks(l_id,txt,url,name) - l_id is link id unique 
kws(wrd, kw_id) - as dictionarry, wrd is the word, id is unique 
kwds0..kwds21 - words, relation kws.kw_id->lnks.l_id 
(keyword(many))->link_ids 
  • . 단어 표 사전 키는 코드로 계산되며 kwds12 및 kwds13으로 표시됩니다.
  • 나는 모든 단어가 쿼리에 포함 된 모든 링크를 얻으려고합니다. '단어 1가'테이블 kwds12 'word2'에 테이블 kwds13에
    INNER가 kwds12 가입 lnks FROM

    URL을 선택, 이름 입니다 kwds13 ON lnks.l_id = kwds12.l_id 및 lnks.l_id = kwds13.l_id INNER는 kws.kw_id = kwds12.kw_id 또는 kws.kw_id = kwds13.kw_id
    ON KWS 가입 WHERE kws.wrd = '단어 1'AND kws.wrd = 'word2'


당신 SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 'ON lnks.l_id = kwds12.l_id AND lnks.l_id = kwds13.l_id INNER JOIN Kws ON 2 행에서

즉 하나 개의 테이블이 lnks.l_id = kwds12.l_id ON INNER가 kwds12 가입 lnks로부터


  • URL을 선택, 이름, TXT, WG 작동과 INNER가 kws.kw_id = kwds12 ON KWS 가입하지만. kw_id WHERE kws.wrd = '무엇이든 - 단어

'

들으

+1

오류는 쿼리 구문에 있으므로 테이블 구조와 관련이 없습니다. – Esailija

답변

0

귀하의 구문 오류가 첫 번째 INNER JOIN에 있습니다 쉼표가 안

INNER JOIN kwds12, kwds13 ... 

있다. INNER JOIN을 사용하는 경우 별도로 테이블을 조인해야하며 테이블을 쉼표로 구분할 수는 없습니다.

필요한 경우 모든 조인을 where 조건으로 바꿀 수 있습니다.

0

이것은 더 잘 작동합니다. 당신은 스스로 모든 테이블에 가입해야합니다.

SELECT 
    url, 
    name 
FROM 
    lnks 
    INNER JOIN kwds12 
     ON 
      lnks.l_id=kwds12.l_id 
    INNER JOIN kwds13 
     ON 
      lnks.l_id=kwds13.l_id 
    INNER JOIN kws 
     ON 
      kws.kw_id=kwds12.kw_id 
       OR 
      kws.kw_id=kwds13.kw_id 
WHERE 
    kws.wrd='word1' 
     OR 
    kws.wrd='word2' 
+0

감사합니다. 일하고있다. – user2195463

+0

고맙습니다. 여전히 약간의 변화. 고유 링크를 얻으려면 어떻게해야합니까? – user2195463

관련 문제