Stack Overflow на русском Asked on November 7, 2021
Дана таблица
CREATE TABLE IF NOT EXISTS `docs` (
`id` int(6) unsigned NOT NULL,
`p1` varchar(10) NOT NULL,
`p2` varchar(10) NOT NULL,
`p3` varchar(10) NOT NULL,
`p4` varchar(10) NOT NULL,
`p5` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `docs` (`id`, `p1`, `p2`,`p3`,`p4`,`p5`) VALUES
('1', '2', '3', '5', '1', '9'),
('2', '1', '2', '9', '6', '4'),
('3', '3', '3', '2','1', '9'),
('4', '2', '6', '1', '7', '8'),
('5', '3', '3', '1', '2', '7'),
('6', '3', '2', '1', '8', '3'),
('7', '1', '4', '2', '3', '2'),
('8', '5', '9', '7', '4', '1');
Нужно написать запрос, в который вместо %p1..%p5 можно подставить значения параметров или null. Если параметр null, то у возвращенных записей этот параметр может быть любым.
— SELECT * FROM docs WHERE p1=%p1 and p2=%p2 and p3=%p3 and p4=%p4 and p5=%p5
То, что предлагает Ainar-G в другом ответе будет работать:
SELECT *
FROM docs
WHERE (%p1 IS NULL OR p1=%p1)
AND (%p2 IS NULL OR p2=%p3)
...
AND (%p5 IS NULL OR p5=%p5)
Но лучше 5 IF в приложении чтобы создать запрос с доступными параметрами, чем такое решение. Поработайте еще раз над дизайном.
Answered by Peter1 on November 7, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP