У меня есть база данных, которая имеет следующую структуру:структура базы данных для metaquery
+------+------+--------+-------+--------+-------+
| item | type | color | speed | length | width |
+------+------+--------+-------+--------+-------+
| 1 | 1 | 3 | 1 | 2 | 2 |
| 2 | 1 | 5 | 3 | 1 | 1 |
| 3 | 1 | 6 | 3 | 1 | 1 |
| 4 | 2 | 2 | 1 | 3 | 1 |
| 5 | 2 | 2 | 2 | 2 | 1 |
| 6 | 2 | 4 | 2 | 3 | 1 |
| 7 | 2 | 5 | 1 | 1 | 2 |
| 8 | 3 | 1 | 2 | 2 | 2 |
| 9 | 4 | 4 | 3 | 1 | 2 |
| 10 | 4 | 6 | 3 | 3 | 2 |
+------+------+--------+-------+--------+-------+
Я хотел бы эффективно запроса, какая комбинация полей справедливы. Так, например, я хотел бы запросить базу данных по следующему адресу:
Какие значения цвета действительны, если тип 1?
ans: [3, 5, 6]
Какие значения скорости действительны, если тип 2, а цвет 2?
ans: [1, 2]
Какие значения типа действительны, если длина равна 2 и ширина равна 2?
ans: [1, 2]
Эквиваленты SQL являются:
SELECT DISTINCT `color` FROM `cars` WHERE `type` =2
SELECT DISTINCT `speed` FROM `cars` WHERE `type` =2 AND `width` =2
SELECT DISTINCT `type` FROM `cars` WHERE `length` =2 AND `width` =2
Я планирую использовать базу данных на основе облака (Cloudant DBAAS - на основе CouchDB). Как это лучше всего реализовать, имея в виду, что могут быть тысячи предметов с десятками полей?
Я не уверен, я понимаю ваши требования правильно.Это то, что вы пытаетесь сделать в первом примере, эквивалентном SQL-запросу типа «Выбрать цвет, где type = 1»? Это очень легко перевести на представления CouchDB. –
Обновлен вопрос с эквивалентными SQL-запросами. – Terry
@Terry вы решили эту проблему? –