| id | pid | idx | type | key | val |
|----+-----+-----+------+-----------+------------|
| 1 | 0 | | o | | |
| 2 | 1 | | s | time | 2010-... |
| 3 | 1 | | s | ip | 127.0.0.1 |
| 4 | 1 | | o | p | |
| 5 | 4 | | s | tape/id | 8abade... |
| 6 | 4 | | s | tape/page | http://... |
| 7 | 0 | | o | | |
| 8 | 7 | | a | foo | |
| 9 | 8 | 0 | s | | bar |
| 10 | 8 | 1 | o | | |
| 11 | 10 | | s | baz | quux |
| 12 | 4 | | s | tape/dref | x |
正しく表示されない場合は、pastebin(http://pastebin.com/2RDn7ad0)から入手できます。SQLクエリのヘルプ
私はそのようなデータベースを持っています。これには多くの行が含まれています(上記の例よりもはるかに多い)。私が気にしているフィールドは、tape/idとtape/drefだけです。 今、少なくとも2つの文字列があります。 1つの文字列の場合、次のようなクエリがあります。
select count(*) as count from (select distinct e.val from entries e where e.key='tape/id' and (select s.val from entries s where s.pid=e.pid and s.key='tape/dref')='x') q;
今、私が解決できない問題は、同じクエリを持つことですが、与えられた2つ以上の文字列を持つ行の数を数えます(上記の例では、文字列 "x"は1つだけです)。
ありがとうございました!