Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Хочу,чтобы при добавлении договора в COMBOBOX отображались заявки,поступившие от администрации.

Вот код:
максКодЗаявки = Convert.ToInt32(WSDB.StringQuery("SELECT MAX(Код_заявки) FROM Журнал_заявок"));
            for (int k1 = 1; k1 < максКодЗаявки; k1++)
            {
                comboBox3.Items.Add(WSDB.StringQuery($"SELECT Код_заявки FROM Журнал_заявок WHERE Код_заявки LIKE {k1}")); 
                  }


Всё работает,но вот только одна загвосточка,нужно чтобы в COMBOBOX отображались только те заявки,которые не закреплены ни за одним договором.
Есть два запроса,но как их объединить в один?

Первый запрос:
comboBox3.Items.Add(WSDB.StringQuery($"SELECT Код_заявки FROM Журнал_заявок WHERE Код_заявки LIKE {k1}"));

Второй запрос:
comboBox3.Items.Add(WSDB.StringQuery("SELECT Код_заявки FROM Журнал_заявок  WHERE NOT EXISTS(SELECT  Номер_заявки FROM Договора WHERE Договора.Номер_заявки = Журнал_заявок.Код_заявки ) "));
25 апр 18, 15:41    [21368264]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
WHERE первое_условие OR второе_условие
(или AND, смотря как их нужно объединить)
25 апр 18, 15:44    [21368280]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Shocker.Pro, эта схема не работает потому что не может быть два подзапроса. я уже пробовала так объединить.
25 апр 18, 15:49    [21368303]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
Покажите ваш запрос
25 апр 18, 15:50    [21368309]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
...и текст выданной ошибки
25 апр 18, 15:51    [21368316]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Shocker.Pro,
максКодЗаявки = Convert.ToInt32(WSDB.StringQuery("SELECT MAX(Код_заявки) FROM Журнал_заявок"));
            for (int k1 = 1; k1 < максКодЗаявки; k1++)
            {
                comboBox3.Items.Add(WSDB.StringQuery($"SELECT Код_заявки FROM Журнал_заявок WHERE NOT EXISTS(SELECT  Номер_заявки FROM Договора WHERE Договора.Номер_заявки = Журнал_заявок.Код_заявки AND Код_заявки LIKE {k1} )"));


Хм,ошибки не выдал,но одна первая заявка дублируется при выборе.

К сообщению приложен файл. Размер - 2Kb
25 апр 18, 16:02    [21368366]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
mayhggghh,

вы делаете неправильно. сначала получите данные из базы и уже потом из резалтсета заполните свой комбобокс или сделайте нормальный биндинг
25 апр 18, 16:04    [21368375]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One, а как тогда правильно? покажите,пожалуйста.
25 апр 18, 16:08    [21368397]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Shocker.Pro, Вот правильный запрос.
 comboBox3.Items.Add(WSDB.StringQuery($"SELECT Код_заявки FROM Журнал_заявок WHERE NOT EXISTS(SELECT Номер_заявки FROM Договора WHERE Договора.Номер_заявки = Журнал_заявок.Код_заявки) AND Код_заявки LIKE {k1}"));

И вот какая ошибка.

К сообщению приложен файл. Размер - 5Kb
25 апр 18, 16:11    [21368410]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
я же написал, как надо. У вас два условия.
mayhggghh
WHERE Код_заявки LIKE {k1}
mayhggghh
WHERE NOT EXISTS(SELECT  Номер_заявки FROM Договора WHERE Договора.Номер_заявки = Журнал_заявок.Код_заявки )
Их нужно записать через AND или через OR последовательно. А вы одно условие зачем-то запихали внутрь другого
mayhggghh
WHERE NOT EXISTS(SELECT  Номер_заявки FROM Договора WHERE Договора.Номер_заявки = Журнал_заявок.Код_заявки AND Код_заявки LIKE {k1} )
25 апр 18, 16:12    [21368413]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
mayhggghh
Konst_One, а как тогда правильно? покажите,пожалуйста.


что у вас такое WSDB.StringQuery ?
25 апр 18, 16:12    [21368414]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
mayhggghh
Вот правильный запрос.
ок
25 апр 18, 16:13    [21368420]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 18983
mayhggghh
И вот какая ошибка.
ну и на какой строке ошибка и причем тут вложенные запросы?
25 апр 18, 16:13    [21368422]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Shocker.Pro, Я забыла одну скобку.Я увидела свою ошибку. И поэтому всё заработало,но не правильно. Я уже скинула правильный запрос и ошибку,которую выдаёт.
25 апр 18, 16:14    [21368428]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One, WSDB это класс. StringQuery процедура в классе.
25 апр 18, 16:15    [21368432]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Shocker.Pro, Потому что запрос был написан через обращения к классу и поэтому он на него и ссылается,когда выдаёт ошибку,а не на саму строчку кода.
Я спрашиваю же как объединить запросы,чтобы не было ошибок.
25 апр 18, 16:17    [21368435]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
mayhggghh
Konst_One, WSDB это класс. StringQuery процедура в классе.


показывайте эту процедуру

ps
передавать параметры в строку надо так:
var sql = string.Format("...AND Код_заявки LIKE '%{0}'", k1);
25 апр 18, 16:18    [21368446]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
кстати, нужен ли вам там LIKE ещё большой вопрос?
25 апр 18, 16:20    [21368454]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One,
 static public string StringQuery(string _query)
        {
            string result = null;
           
                SqlDataAdapter DA = new SqlDataAdapter(_query, con);
                DataSet DS = new DataSet();
                DA.Fill(DS, "DS");
                result = DS.Tables["DS"].Rows[0][0].ToString();
            return result;

вот эта процедура.
25 апр 18, 16:26    [21368482]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One, хорошо,чем можно заменить LIKE ?
25 апр 18, 16:27    [21368487]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
mayhggghh
Konst_One,
 static public string StringQuery(string _query)
        {
            string result = null;
           
                SqlDataAdapter DA = new SqlDataAdapter(_query, con);
                DataSet DS = new DataSet();
                DA.Fill(DS, "DS");
                result = DS.Tables["DS"].Rows[0][0].ToString();
            return result;


вот эта процедура.


ну так , а если ничего не найдёт, то исключение словите
25 апр 18, 16:27    [21368489]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One, это типо ещё нужно предусмотреть тот вариант,если по запросу ничего не было найдено,то чтобы ошибки не было?
или нет?
25 апр 18, 16:31    [21368502]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
mayhggghh
Konst_One, это типо ещё нужно предусмотреть тот вариант,если по запросу ничего не было найдено,то чтобы ошибки не было?
или нет?
25 апр 18, 16:31    [21368506]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
mayhggghh
Member

Откуда:
Сообщений: 16
Konst_One, или он просто не может содержат два подзапроса и поэтому ошибка?
25 апр 18, 16:33    [21368514]     Ответить | Цитировать Сообщить модератору
 Re: Как объединить два SQL запроса в один? - C#  [new]
Konst_One
Member

Откуда:
Сообщений: 10988
конечно
проверьте наличие записей в датасете, если нет , то нужно вернуть пустую строку. по хорошему ещё в коде, где добавляете айтем в комбобокс так же проверить сначал, что вернула ваша функция, а уж потом что-то добавлять
25 апр 18, 16:33    [21368516]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить