0

meta_data次の構造で呼び出されるテーブルがあります

id, fk_id, label, data

fk_id が別のテーブルにリンクしている場所 -books

テーブルには次のmeta_dataようなエントリがあります。

|id|fk_id|label|data   |
|--|-----|-----|-------|
|1 |1    |pages|10     |
|2 |2    |pages|10     |
|3 |1    |pub  |smith  |
|4 |3    |pub  |smith  |

ANDなど、いくつかのパラメーターに一致するbooksエントリがある場所を選択したいと考えています。 meta_datapages = 10pub = smith

したがって、上記の例を使用するbooksと、ID 1 のエントリがテーブルに返されます (2 と 3 は、条件の 1 つに一致しますが、両方には一致しないため、含まれません)。

このクエリも動的である必要があるため、meta_dataテーブル内の 1 つ以上のラベル/データの組み合わせをクエリできます。たとえば、上記の例では 2 つの組み合わせをクエリしていますが、4 または 5 をクエリしたい場合があります。

meta_dataまた、同じラベルでデータ値が異なる複数のエントリがテーブルにある場合もあります。たとえば、別の行がある可能性があります。

|5 |1    |pub  |jones  |

このクエリが MySQL を使用してどのように表示されるかの例を誰か教えてもらえますか?

4

1 に答える 1

1

これは、質問で指定した条件の例です。条件をより動的にしたい場合は、アプリケーションでクエリを動的に作成する必要があります。

Select b.book_name from books b, meta_data m, meta_data md
WHERE b.id = m.fk_id and b.id = md.fk_id 
and m.label ='pages' and m.data = 10 
and md.label ='pub' and md.data='smith' 
于 2012-07-12T12:57:24.487 に答える