|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
Есть база с данными 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2015, 14:47 |
|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
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"? И аналогичные вопросы по всем остальным "запросам". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2015, 16:16 |
|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
TestName одинаковый в примере, будут разные и одинаковые значения. "Результат - 1" - значение колонки TestResult "перечень запрашиваемых соответствует группе" - как я понимаю нужно делать запрос так чтобы группа столбцов соответствовала определенным параметрам, при этом результатом запроса будет не одно значение, а некое множество В примере забыл указать колонку TestName. По сути требуется следующее: Выполняются различные тесты с различным набором компонентов, у каждого компонента свой код. В таблицу вносятся данные: номер теста, название теста, номер компонента, количество компонентов, результат теста. Результат теста - булево значение 1/0 Затем нужно получить результат и название теста по двум и более компонентам где: 1)Перечень компонентов входит в состав конкретного теста и кол-во конкретных компонентов равно кол-ву ранее протестированных компонентов. 2)Перечень компонентов входит в состав теста с конкретным номером и кол-во конкретных компонентов менее кол-ва ранее протестированных компонентов и результат равен 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 10:41 |
|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
Vovsla, реляционное деление - твое всё. на SQL реализуется посредством GROUP BY + Having, либо посредством [NOT] EXISTS - подзапросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 12:13 |
|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
VovslaTestName одинаковый в примере, будут разные и одинаковые значения.Значит и в примере они должны быть разными. Vovsla "Результат - 1" - значение колонки TestResult У тебя никогда не будет одного-единственного результата. Потому что это колонка... Vovsla"перечень запрашиваемых соответствует группе" - как я понимаю нужно делать запрос так чтобы группа столбцов соответствовала определенным параметрам, при этом результатом запроса будет не одно значение, а некое множествоЧтобы группа столбцов соответстветствовала определенным параметрам достаточно соединить эти параметры в логической формуле. Например: TestName='fiz' and ThingNum='456'. Vovsla1)Перечень компонентов входит в состав конкретного теста и кол-во конкретных компонентов равно кол-ву ранее протестированных компонентов. А откуда мы знаем "кол-во ранее протестированных компонентов"? Где это тайное знание хранится? Vovsla2)Перечень компонентов входит в состав теста с конкретным номером и кол-во конкретных компонентов менее кол-ва ранее протестированных компонентов и результат равен 1Во первых, не результат, а результаты. У тебя тест каждого отдельного компонента может быть 1/0. А значит итоговый результат всего теста это набор из единиц и нолей. Не забывай об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2015, 15:08 |
|
Составление запроса на соответствие с перечнем
|
|||
---|---|---|---|
#18+
White OwlА откуда мы знаем "кол-во ранее протестированных компонентов"? Где это тайное знание хранится? Кол-во ранее протестированных компонентов = сумме компонентов в одном тесте, т.е. в первых трех по 3 компонента, в 4 и 5 по 4 компонента. White OwlВо первых, не результат, а результаты. У тебя тест каждого отдельного компонента может быть 1/0 В рамках одного теста (TestNum) один результат ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2015, 11:02 |
|
|
start [/forum/topic.php?fid=54&msg=39011046&tid=2008660]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 130ms |
0 / 0 |