Народ помогите, реально завис на следующей проблеме и не знаю даже как в поиске набрать чтобы на путь истинный выйти
Есть на удаленной машине база MySQL с такой таблицей
- Код: Выделить всё
CREATE TABLE IF NOT EXISTS `Agregat` (
`ID` varchar(8) NOT NULL,
`NameAgregat` varchar(64) default NULL,
`DescrAgregat` varchar(5000) default NULL,
`PhotoAgregat` varchar(100) default NULL,
`StoimostAgregat` varchar(100) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Так вот когда нужно вытащить например все записи у которых StoimostAgregat равен 1500 тут все как бы просто
- Код: Выделить всё
rstRecordSet.OpenRs "SELECT * FROM Agregat WHERE StoimostAgregat=1500", conConnection
If Not rstRecordSet.EOF Then
rstRecordSet.MoveFirst
и т.д.
А вот что делать и как построить запрос к базе данных если мне нужно вытянуть из базы данных записи построенные по фильтру, т.е. например в проге я выбрал типа вывести мне все агрегаты у которых есть фото и у которых стоимость 1500, а в другой раз выбрал например вывести все записи без описаний, но с фотографиями и стоимостью 2500 кпримеру.
Как понимаете таким образом можно несметное кол-во комбинаций придумать в фильтре и тупо было бы под каждую мыслимую комбинацию писать отдельный запрос и ведь должно быть что то такое что бы помогло бы в этой ситуации. В частности можно былобы построить запрос в которой былибы перечисленны все критерии:
- Код: Выделить всё
rstRecordSet.OpenRs "SELECT * FROM Agregat WHERE NameAgregat=" & Quote(name) & " AND DescrAgregat=" & Quote(desc) & " AND PhotoAgregat=" & Quote(foto) & " AND StoimostAgregat=" & Quote(stoim) , conConnection
If Not rstRecordSet.EOF Then
rstRecordSet.MoveFirst
Но тогда возникает проблема - мне в данном случаи нужны записи в которых StoimostAgregat равен 1500 и DescrAgregat например 16980 (Это неважно:)), а остальные переменные name, foto остаються пустыми и когда отправляется запрос к базе данных то там соответственно по полям NameAgregat PhotoAgregat ищются записи с пустими полями. ТАК КАК СДЕЛАТЬ ЧТОБЫ ПРИ ТАКОМ ЗАПРОСЕ В ЭТИХ ПОЛЯХ НИЧЕГО НЕ ИСКАЛОСЬ, А ТОЧНЕЕ ВЫБИРАЛИСЬ ВСЕ ЗАПИСИ.
Надеюсь объяснил суть проблемы подробно. Сам новичек и не совсем может быть верно владею терминалогией
Буду благодарен помощи старших товарищей.
Всем заранее спасибо за помощь.