0

私はテーブル構造を持っています:

  • lnks(l_id,txt,url,name) - l_id は一意のリンク ID です
  • kws(wrd, kw_id) - 辞書として、wrd は単語、id は一意
  • kwds0..kwds21 - 単語、リレーション kws.kw_id->lnks.l_id (keyword(many))->link_ids
  • 「単語 word2」の複数単語検索を行っています。単語テーブルのプレキーはコードで計算され、kwds12 と kwds13 として持っています。
  • クエリ内のすべての単語を含むすべてのリンクを取得しようとします。'word1' はテーブル kwds12 にあります 'word2' はテーブル kwds13 にあります

SELECT
    url,
    name
FROM
    lnks  
    INNER JOIN kwds12, kwds13
        ON   
            lnks.l_id=kwds12.l_id
                AND
            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'

SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください

どうも

4

2 に答える 2

0

あなたの構文エラーは最初にありますINNER JOIN

INNER JOIN kwds12, kwds13 ...

そのコンマがあってはなりません。を使用している場合はINNER JOIN、テーブルを個別に結合する必要があります (テーブルをコンマで区切ることはできません)。

必要に応じて、すべての結合をwhere条件に置き換えることができます。

于 2013-03-23T01:30:41.313 に答える
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'
于 2013-03-23T01:31:30.000 に答える