1

Books多くのテーブルがありますproperties。プロパティはキーと値として保存されます。

したがって、本が次の場合:

1  LOTR
2  Harry Potter 1
3  Harry Potter 2

そしてプロパティは

id  book_id  key        value
1   1        available  0
2   2        available  10
3   2        author     Rowling
4   3        author     Rowling

結果を次のように取得したいと思います。

1  LOTR
3  Harry Potter 2

Book id 1 の在庫数は 0、2 の在庫数は 10、3 には在庫数の情報がないためです。

アンチ結合を使用できることはわかっていますが、使用方法がわかりません。私はアンチ結合が初めてです。

どんな助けでも大歓迎です。

4

3 に答える 3

3

私はあなたの質問を完全に理解しているとは言えませんが、propertiesテーブルに在庫がないすべての本を返したいと仮定すると、次の 1 つのオプションを使用できますouter join

select b.*
from books b
   left join properties p on b.id = p.book_id and p.key = 'available' and p.value > 0
where p.id is null

データベースによってcastvaluejoin.

于 2016-06-27T18:20:13.433 に答える
0

これを試して:

SELECT b.book_id, a.key, a.value
FROM Books AS B INNER JOIN AnotherTable AS A B.book_id = a.book_id
WHERE a.key = 'available' and (a.value = 0 OR a.value is null)
于 2016-06-27T18:20:07.473 に答える
0
SELECT book_id, title
FROM Books as B
WHERE B.book_id NOT IN (
                SELECT P.book_id 
                FROM properties as P
                WHERE P.key = available AND P.value <> 0)

<>意味することに注意してくださいNOT EQUAL

于 2016-06-27T18:23:15.963 に答える