powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL запрос с подзапросом .
5 сообщений из 5, страница 1 из 1
SQL запрос с подзапросом .
    #38886548
vvv12g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть SQL запрос который проводит поиск по БД :
Код: plsql
1.
"SELECT * FROM parts WHERE height>" + minH + " AND height<" + maxH + " AND length>" + minL + " AND length<" + maxL + " AND width>" + minW + " AND width<" + maxW + ";";



где:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
           string minH = (Height - Height * percent / 100).ToString().Replace(',', '.');
           
            string maxH = (Height + Height * percent / 100).ToString().Replace(',', '.');
            
            string minL = (Length - Length * percent / 100).ToString().Replace(',', '.');
          
            string maxL = (Length + Length * percent / 100).ToString().Replace(',', '.');
            
            string minW = (Width - Width * percent / 100).ToString().Replace(',', '.');
           
            string maxW = (Width + Width * percent / 100).ToString().Replace(',', '.');
           


В результате будут получены тела с габаритами которые сходятся с параметрами поиска или приближенные к ним. Мне же в этом самом запросе, нужно вот такой запрос сделать
Код: plsql
1.
SQL = "SELECT * FROM parts where height/length>" + MinK1 + "AND height/length<" + MaxK1 + "AND height/width>" + MinK2 + "AND height/width<" + MaxK2 + ";";


где:
Код: c#
1.
2.
3.
4.
 string MinK1=((Height/Length)-(Height/Length)*percent/100).ToString().Replace(',', '.'); 
            string MaxK1=((Height/Length)+(Height/Length)*percent/100) .ToString().Replace(',', '.'); 
            string MinK2=((Height/Width)-(Height/Width)*percent/100).ToString().Replace(',', '.');
            string MaxK2 = ((Height / Width) + (Height / Width) * percent / 100).ToString().Replace(',', '.');


Но мне тут нужны не те значения Height,Length,Width которые я передавал в первый запрос а уже те что я получу в результате работы первого запроса.
Сразу подумал о UNION , т.е. вот так:
Код: plsql
1.
"SELECT * FROM parts WHERE height>" + minH + " AND height<" + maxH + " AND length>" + minL + " AND length<" + maxL + " AND width>" + minW + " AND width<" + maxW + " UNION SELECT * FROM parts where height/length>" + MinK1 + "AND height/length<" + MaxK1 + "AND height/width>" + MinK2 + "AND height/width<" + MaxK2 + ";"


Но место MinK1 к примеру уже должно быть результат выражения "(height/length)-(height/length)*"+percentt+""где
Код: c#
1.
double percentt=percent/100;


и где параметры получены из первого запроса.

В SQL я не силен, работал с ним мало очень... поделитесь ссылкой какой нибудь или советом который помог бы мне решить мою задачу.
...
Рейтинг: 0 / 0
SQL запрос с подзапросом .
    #38886604
vvv12g
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал о соотнесенном подзапросе, где сравнивается таблица сама с собой. Там был такой вот пример:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT *
               FROM Orders outer
               WHERE amt >
                   ( SELECT AVG amt
                        FROM Orders inter
                        WHERE inner.cnum = outer.cnum );


но тут для простого примера, и мне он не подойдет скорее всего.
...
Рейтинг: 0 / 0
SQL запрос с подзапросом .
    #38886750
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvv12gи где параметры получены из первого запроса.первый запрос может вам дать несколько наборов ширина/длина/высота (или не может? тогда явно это укажите), какой из них вы потом собираетесь подставлять во второй запрос?
...
Рейтинг: 0 / 0
SQL запрос с подзапросом .
    #38886801
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vvv12gЕсть SQL запрос который проводит поиск по БД :
Код: plsql
1.
"SELECT * FROM parts WHERE height>" + minH + " AND height<" + maxH + " AND length>" + minL + " AND length<" + maxL + " AND width>" + minW + " AND width<" + maxW + ";";



где:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
           string minH = (Height - Height * percent / 100).ToString().Replace(',', '.');
           
            string maxH = (Height + Height * percent / 100).ToString().Replace(',', '.');
            
            string minL = (Length - Length * percent / 100).ToString().Replace(',', '.');
          
            string maxL = (Length + Length * percent / 100).ToString().Replace(',', '.');
            
            string minW = (Width - Width * percent / 100).ToString().Replace(',', '.');
           
            string maxW = (Width + Width * percent / 100).ToString().Replace(',', '.');
           


В результате будут получены тела с габаритами которые сходятся с параметрами поиска или приближенные к ним. Мне же в этом самом запросе, нужно вот такой запрос сделать
Код: plsql
1.
SQL = "SELECT * FROM parts where height/length>" + MinK1 + "AND height/length<" + MaxK1 + "AND height/width>" + MinK2 + "AND height/width<" + MaxK2 + ";";


где:
Код: c#
1.
2.
3.
4.
 string MinK1=((Height/Length)-(Height/Length)*percent/100).ToString().Replace(',', '.'); 
            string MaxK1=((Height/Length)+(Height/Length)*percent/100) .ToString().Replace(',', '.'); 
            string MinK2=((Height/Width)-(Height/Width)*percent/100).ToString().Replace(',', '.');
            string MaxK2 = ((Height / Width) + (Height / Width) * percent / 100).ToString().Replace(',', '.');


Но мне тут нужны не те значения Height,Length,Width которые я передавал в первый запрос а уже те что я получу в результате работы первого запроса.
Сразу подумал о UNION , т.е. вот так:
Код: plsql
1.
"SELECT * FROM parts WHERE height>" + minH + " AND height<" + maxH + " AND length>" + minL + " AND length<" + maxL + " AND width>" + minW + " AND width<" + maxW + " UNION SELECT * FROM parts where height/length>" + MinK1 + "AND height/length<" + MaxK1 + "AND height/width>" + MinK2 + "AND height/width<" + MaxK2 + ";"


Но место MinK1 к примеру уже должно быть результат выражения "(height/length)-(height/length)*"+percentt+""где
Код: c#
1.
double percentt=percent/100;


и где параметры получены из первого запроса.

В SQL я не силен, работал с ним мало очень... поделитесь ссылкой какой нибудь или советом который помог бы мне решить мою задачу.


(Width - Width * percent / 100) = width*(1-percent)/100 = width*c, c=(1-percent)/100

но правда логика не понатна этой формулы?или персент это не проценты? или 100 - это перевод из сантиметров в метры?
...
Рейтинг: 0 / 0
SQL запрос с подзапросом .
    #38886802
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,
насчёт 100, извините...не увидел :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL запрос с подзапросом .
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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