powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Составление запроса на соответствие с перечнем
6 сообщений из 6, страница 1 из 1
Составление запроса на соответствие с перечнем
    #39009965
Vovsla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база с данными

CREATE TABLE IF NOT EXISTS Tests (TestNum NUMERIC NOT NULL, ThingNum NUMERIC NOT NULL, ThingQuantity NUMERIC NOT NULL, TestName VARCHAR NOT NULL, TestResult NUMERIC, UNIQUE(TestNum, ThingNum, ThingQuantity));

INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('1', '123', '2', 'Fiz', '1' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('1', '456', '2', 'Fiz', '1' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('1', '789', '2', 'Fiz', '1' );

INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('2', '123', '3', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('2', '456', '2', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('2', '789', '2', 'Fiz', '0' );

INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('3', '123', '2', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('3', '456', '3', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('3', '789', '2', 'Fiz', '0' );

INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('4', '123', '2', 'Fiz', '1' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('4', '456', '2', 'Fiz', '1' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('4', '789', '2', 'Fiz', '1' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('4', '102', '2', 'Fiz', '1' );

INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('5', '123', '3', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('5', '456', '3', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('5', '789', '2', 'Fiz', '0' );
INSERT INTO Tests (TestNum, ThingNum, ThingQuantity, TestName, TestResult) VALUES ('5', '102', '2', 'Fiz', '0' );

Запрос №1 - нужно получить TestResult по группе TestNum + TestName где перечень запрашиваемых ThingNum и ThingQuantity полностью соответствуют группе, например
При запросе где
TestNum ThingQuantity
123 2
456 2
789 2
Результат - 1

При запросе где
TestNum ThingQuantity
123 3
456 2
789 2
Результат - 0

Запрос №2 - нужно получить TestResult по группе TestNum + TestName где перечень запрашиваемых ThingNum входит в группу и не более указанного ThingQuantity и TestResult = 1, например
При запросе где
TestNum ThingQuantity
123 1
456 2
789 1
Результат - 1

TestNum ThingQuantity
123 2
456 2
Результат - 1

TestNum ThingQuantity
123 3
456 2
789 2
102 2
Результат - отсутствует

Если есть возможность, то желательно реализовать в виде одного запроса, если запрос 1 не вернул ничего то выполняется запрос 2
...
Рейтинг: 0 / 0
Составление запроса на соответствие с перечнем
    #39010062
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VovslaЗапрос №1 - нужно получить TestResult по группе TestNum + TestNameЕсли TestName везде одинаковая, то какой смысл учитывать это поле при группировке?

VovslaЗапрос №1 - нужно получить TestResult по группе TestNum + TestName где перечень запрашиваемых ThingNum и ThingQuantity полностью соответствуют группе, например
При запросе где
TestNum ThingQuantity
123 2
456 2
789 2
Результат - 1

При запросе где
TestNum ThingQuantity
123 3
456 2
789 2
Результат - 0Чего-чего? Во первых, расшифруй что значит "перечень запрашиваемых соответствует группе". Во вторых, что значит "Результат - 1"?

И аналогичные вопросы по всем остальным "запросам".
...
Рейтинг: 0 / 0
Составление запроса на соответствие с перечнем
    #39011046
Vovsla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TestName одинаковый в примере, будут разные и одинаковые значения.
"Результат - 1" - значение колонки TestResult
"перечень запрашиваемых соответствует группе" - как я понимаю нужно делать запрос так чтобы группа столбцов соответствовала определенным параметрам, при этом результатом запроса будет не одно значение, а некое множество

В примере забыл указать колонку TestName.

По сути требуется следующее:
Выполняются различные тесты с различным набором компонентов, у каждого компонента свой код.
В таблицу вносятся данные: номер теста, название теста, номер компонента, количество компонентов, результат теста.
Результат теста - булево значение 1/0

Затем нужно получить результат и название теста по двум и более компонентам где:
1)Перечень компонентов входит в состав конкретного теста и кол-во конкретных компонентов равно кол-ву ранее протестированных компонентов.
2)Перечень компонентов входит в состав теста с конкретным номером и кол-во конкретных компонентов менее кол-ва ранее протестированных компонентов и результат равен 1
...
Рейтинг: 0 / 0
Составление запроса на соответствие с перечнем
    #39011178
Vovsla,

реляционное деление - твое всё.
на SQL реализуется посредством GROUP BY + Having, либо посредством [NOT] EXISTS - подзапросов.
...
Рейтинг: 0 / 0
Составление запроса на соответствие с перечнем
    #39011448
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VovslaTestName одинаковый в примере, будут разные и одинаковые значения.Значит и в примере они должны быть разными.

Vovsla "Результат - 1" - значение колонки TestResult У тебя никогда не будет одного-единственного результата. Потому что это колонка...
Vovsla"перечень запрашиваемых соответствует группе" - как я понимаю нужно делать запрос так чтобы группа столбцов соответствовала определенным параметрам, при этом результатом запроса будет не одно значение, а некое множествоЧтобы группа столбцов соответстветствовала определенным параметрам достаточно соединить эти параметры в логической формуле. Например: TestName='fiz' and ThingNum='456'.

Vovsla1)Перечень компонентов входит в состав конкретного теста и кол-во конкретных компонентов равно кол-ву ранее протестированных компонентов.
А откуда мы знаем "кол-во ранее протестированных компонентов"? Где это тайное знание хранится?

Vovsla2)Перечень компонентов входит в состав теста с конкретным номером и кол-во конкретных компонентов менее кол-ва ранее протестированных компонентов и результат равен 1Во первых, не результат, а результаты. У тебя тест каждого отдельного компонента может быть 1/0. А значит итоговый результат всего теста это набор из единиц и нолей. Не забывай об этом.
...
Рейтинг: 0 / 0
Составление запроса на соответствие с перечнем
    #39021507
Vovsla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlА откуда мы знаем "кол-во ранее протестированных компонентов"? Где это тайное знание хранится?


Кол-во ранее протестированных компонентов = сумме компонентов в одном тесте, т.е. в первых трех по 3 компонента, в 4 и 5 по 4 компонента.

White OwlВо первых, не результат, а результаты. У тебя тест каждого отдельного компонента может быть 1/0


В рамках одного теста (TestNum) один результат
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Составление запроса на соответствие с перечнем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]