1

私はSQLクエリを持っています:

SELECT documents.*, t_rights.rights, documents_list.docs
FROM documents 
INNER JOIN t_rights on t_rights.num=documents.type_right 
INNER JOIN documents_list on documents_list.num=documents.document1 
WHERE code_document=1 or code_document=1

フィールドがdocuments.document1ありdocuments.document1、いくつかの値がある場合、すべて正常に動作します。しかし、このフィールドが空の場合、空のクエリ結果が得られます。
空のフィールドでこのようなクエリを作成することは可能ですか?

4

2 に答える 2

2

INNER JOINこの場合、 yourをに置き換える必要があると思いますLEFT JOIN

于 2012-12-14T10:55:34.437 に答える
0

LEFT OUTER JOIN一致がない場合でも、a を使用して行を含めることができます。

SELECT documents.*, t_rights.rights, documents_list.docs
    FROM documents 
    INNER JOIN t_rights on t_rights.num = documents.type_right 
    LEFT OUTER JOIN documents_list on
        documents_list.num = documents.document1 
    WHERE code_document=1

これで、ドキュメントが のいずれにも一致しない場合でも、ドキュメントから行を取得できますdocuments_list。 ただし、フィールドが空の不一致ドキュメントのみを含めたい場合があります。document1その場合、もう少し必要になります。

SELECT documents.*, t_rights.rights, documents_list.docs
    FROM documents 
    INNER JOIN t_rights on t_rights.num = documents.type_right 
    LEFT OUTER JOIN documents_list on
        documents_list.num = documents.document1 
    WHERE code_document = 1 and (
        documents_list.num is not null or
        documents.document1 is null
    )

これは、 nullの場合を除いdocument_listて、 に一致するドキュメントのみを返します (「空」とは null を意味すると想定しました。そうでない場合は、独自の条件をそこに置きます)。document1

于 2012-12-14T11:02:22.393 に答える