Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
Доброе время суток! Окажите помощь в паровой ситуации. Сам я новичке в sql но поя вилась оставаясь необходимость.

Не судите строго.
Есть форма в C#. Содержит несколько полей относящихся например к таблице 1 сделаны как текст бокс. Есть два поля типа чекбокс одно относится к таблице 2 а другое к таблице 3 необходимо сделать запрос (на SQL 2008 express есть таблицы они связаны по ключевым полям) чтобы при загрузке формы в эти поля поступали данный из связанных таблиц.

Заранее спасибо!!!!!!
5 янв 15, 19:18    [17087264]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
londinium
Member

Откуда: Киев
Сообщений: 1193
Покажите скрипты таблиц и что нужно в результате
5 янв 15, 20:48    [17087525]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
Den007ez
необходимо сделать запрос (на SQL 2008 express есть таблицы они связаны по ключевым полям) чтобы при загрузке формы в эти поля поступали данный из связанных таблиц.
Посмотрите в хелпер статью про SELECT, раздел JOIN, там есть примеры.
5 янв 15, 21:40    [17087635]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Den007ez
Доброе время суток! Окажите помощь в паровой ситуации. Сам я новичке в sql но поя вилась оставаясь необходимость.

Не судите строго.
Есть форма в C#. Содержит несколько полей относящихся например к таблице 1 сделаны как текст бокс. Есть два поля типа чекбокс одно относится к таблице 2 а другое к таблице 3 необходимо сделать запрос (на SQL 2008 express есть таблицы они связаны по ключевым полям) чтобы при загрузке формы в эти поля поступали данный из связанных таблиц.

Заранее спасибо!!!!!!
Вопрос то в чем? Вы не знаете как называются ваши таблицы? Или вы не можете найти учебник по SQL?
5 янв 15, 22:49    [17087814]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
новерно автор хочет получит готовый
программ
6 янв 15, 09:33    [17088505]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
нет я не хочу получить "готовый программ"
6 янв 15, 11:26    [17088681]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
Den007ez
нет я не хочу получить "готовый программ"

А что вы тогда хотите ?
select * from tab1 join tab2 on f1=f2 join tab3 on f1=f3 - это ?
6 янв 15, 11:33    [17088698]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
Вот Это

public void ShowMe(int id, SqlConnection conn, FormMode mode)
{
_conn = conn;
_MyMod = mode;
FillControls(id, _conn);
this.butADD.Text = "Обновить";
this.ShowDialog();
}

public void ShowMe(SqlConnection conn, FormMode mode)
{
_conn = conn;
_MyMod = mode;

BindingSource bs = new BindingSource();
bs.DataSource = UserRole.GetAllUserRole(_conn);
this.comboRole.DataSource = bs;
this.comboRole.DisplayMember = "Name";
this.comboRole.ValueMember = "UserRoleID";
BindingSource bss = new BindingSource();
bss.DataSource = WorkShop.GetAllWorkShop(_conn);
this.comboWorkPl.DataSource = bss;
this.comboWorkPl.DisplayMember = "WorkSName";
this.comboWorkPl.ValueMember = "WorkShopID";
this.butADD.Text = "Записать";
this.ShowDialog();
}

и это

string query = "SELECT a.UserId, a.Surname, a.Firstname, a.Secondname, a.FIO, b.Name, c.WorkSName, a.Password FROM Workers a INNER JOIN UserRole b ON a.Role = b.UserRoleId INNER JOIN WorkShop c ON a.WorkPlace=c.WorkShopID order by Surname;";
SqlCommand com = new SqlCommand(query, Helper.CheckConnection(conn));
SqlDataReader reader;
reader = com.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return reader;
6 янв 15, 14:49    [17089283]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
Den007ez
Вот Это

Den007ez
и это

Т.е. все таки получить "готовый программ"
6 янв 15, 16:35    [17089674]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
Glory, Главное надо было объяснить как писать INNER JOIN ане готовый программ простите если Вы не умеет распознать вопрос
6 янв 15, 19:53    [17090366]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
И спасибо alexeyvg
6 янв 15, 19:54    [17090368]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
Все остальное я додумал а надо было

string query = "SELECT a.UserId, a.Surname, a.Firstname, a.Secondname, a.FIO, b.Name, c.WorkSName, a.Password FROM Workers a INNER JOIN UserRole b ON a.Role = b.UserRoleId INNER JOIN WorkShop c ON a.WorkPlace=c.WorkShopID order by Surname;";
6 янв 15, 19:56    [17090370]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

Откуда:
Сообщений: 9
Писать с теле фона на память было не удобно
6 янв 15, 19:56    [17090373]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
Den007ez
Главное надо было объяснить как писать INNER JOIN

Руками пишут обычно

Den007ez
ане готовый программ простите если Вы не умеет распознать вопрос

А зачем тогда постить сюда куски какого-то кода на С ?
7 янв 15, 09:27    [17091375]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

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

Просто показать замысел
7 янв 15, 17:55    [17092081]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Den007ez
Member

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

Не знаете как слделать есть три поля фамилия Имя отчетсво надо автоматически формировать Фамили И О
8 янв 15, 15:39    [17094380]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
Den007ez
Не знаете как слделать

Как-то вот так
8 янв 15, 15:40    [17094390]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
xenix
Guest
автор
Не знаете как слделать есть три поля фамилия Имя отчетсво надо автоматически формировать Фамили И О

как-то так
SELECT Surname,Name,MiddleName, Surname+' '+ISNULL(Name.'')+' '+ISNULL(MiddleName,'') AS FIO     FROM TableA

ну или так
SELECT Surname,Name,MiddleName,Surname+' '+ISNULL(LEFT(Name,1),' ')+'.'+'  '+ISNULL(LEFT(MiddleName,1),'')AS FIO FROM TableA
8 янв 15, 15:46    [17094414]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Кто лучше? (Фамилия Имя Отчество - > Фамилия И. О. )
8 янв 15, 15:50    [17094426]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
boroboro13
Member

Откуда:
Сообщений: 4
Всем привет.
Уже третьи сутки сижу ломаю голову на запросом...
Будьте добры, помогите исправить запрос на вычисление остатка количества по каждому виду материала

 
SELECT R2.Nom_nom, 
(SELECT sum(R2.Kol_vo) FROM R2,R3 WHERE (R2.Nom_nakl=R3.Nom_nakl) AND (R3.Vid_op=’прием’)) AS Priem,
(SELECT sum(R2.Kol_vo) FROM R2,R3 WHERE (R2.Nom_nakl=R3.Nom_nakl) AND (R3.Vid_op=’передача’)) AS Peredacha,
(SELECT sum(CASE WHEN R3.Vid_op=’прием’ THEN R2.Kol_vo ELSE – R2.Kol_vo END) FROM R2,R3 WHERE R2.Nom_nakl=R3.Nom_nakl) AS Ostatok
FROM R2
GROUP BY R2.Nom_nom


БД (MS SQL Server 2008) приложение в Delphi7.
Структура БД - 5 таблиц. БД - Склад.

К сообщению приложен файл. Размер - 30Kb
8 янв 15, 16:12    [17094499]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Вам про join'ы вам почитать бы.
Да и не учитываете вы товар по факту.. исходя из схемы
Бо Товар у вас таблица R1
Шапка накладной R2
Позиции по накладной R3
А вы считаете без учета товара..... у вас все поля в селекте показывают мусор
8 янв 15, 17:50    [17094713]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Maxx
Вам про join'ы вам почитать бы.
Да и не учитываете вы товар по факту.. исходя из схемы
Бо Товар у вас таблица R1
Шапка накладной R3
Позиции по накладной R2
А вы считаете без учета товара..... у вас все поля в селекте показывают мусор
8 янв 15, 17:52    [17094717]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
baza906
Member

Откуда:
Сообщений: 283
boroboro13, попробуйте так

SELECT R2.Nom_nom,
sum(CASE WHEN R3.Vid_op=’прием’ THEN R2.Kol_vo ELSE 0 END) AS Priem ,
sum(CASE WHEN R3.Vid_op=’передача’ THEN R2.Kol_vo ELSE 0 END) AS Peredacha ,
sum(CASE WHEN R3.Vid_op=’прием’ THEN R2.Kol_vo ELSE – R2.Kol_vo END) AS Ostatok
FROM R2
JOIN R3 ON R2.Nom_nakl=R3.Nom_nakl
WHERE R3.Vid_op in (’передача’, ’прием’)
GROUP BY R2.Nom_nom
8 янв 15, 18:45    [17094839]     Ответить | Цитировать Сообщить модератору
 Re: Помогите как сделать запрос  [new]
baza906
Member

Откуда:
Сообщений: 283
boroboro13, т.е. так

SELECT R2.Nom_nom,
sum(CASE WHEN R3.Vid_op=’прием’ THEN R2.Kol_vo ELSE 0 END) AS Priem ,
sum(CASE WHEN R3.Vid_op=’передача’ THEN R2.Kol_vo ELSE 0 END) AS Peredacha ,
sum(CASE WHEN R3.Vid_op=’прием’ THEN R2.Kol_vo ELSE –1 * R2.Kol_vo END) AS Ostatok
FROM R2
JOIN R3 ON R2.Nom_nakl=R3.Nom_nakl
WHERE R3.Vid_op in (’передача’, ’прием’)
GROUP BY R2.Nom_nom
8 янв 15, 18:47    [17094842]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить