Я написал приложение для психологического тестирования, в котором пользователю предоставляется список слов, и он / она должен выбрать десять слов, которые очень описывают себя, затем выбрать слова, которые частично описывают сам, и слова, которые не описывают себя. Само приложение прекрасно работает, но мне было интересно изучить возможности метаданных: какие слова чаще всего выбирались в первой категории, а какие никогда не выбирались в первой категории. Первый запрос не был проблемой, но второй (слова которого никогда не были выбраны) оставляет меня в тупике.
Структура таблицы следующая:
table words: id, name
table choices: pid (person id), wid (word id), class (value between 1-6)
Предположительно, ответ подразумевает левое соединение между словами и вариантами выбора, но должен быть модифицирующий оператор - где choices.class = 1 - и это вызывает у меня проблемы. Пишу что-то вроде
select words.name
from words left join choices
on words.id = choices.wid
where choices.class = 1
and choices.pid = null
заставляет менеджера базы данных отправиться в долгое путешествие в никуда. Я использую Delphi 7 и Firebird 1.5.
ТИА,
No'am