Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите по запросам

39K
02 декабря 2009 года
b00B1uK
31 / / 08.06.2009
Сразу извиняюсь, что, возожно, не в ту тему, но работаю на Visual Studio,C#) Делаю в DataSet'e выборку по значению.

 
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен] FROM dbo.Платежи WHERE [Идентифкатор счета]=@sCount;

sCount-типа string.
В таблице поле Идентифкатор счета-int.

Собственно вопрос, какое значение надо передать, чтобы получить все поля таблицы. Помню в PHP был символ *. Тут не прокатывает.
5
02 декабря 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: b00B1uK
какое значение надо передать, чтобы получить все поля таблицы


СУБД SqlServer?

Все поля:

 
Код:
SELECT * FROM dbo.Платежи WHERE [Идентифкатор счета]=@sCount
Все строки при @sCount = NULL:
 
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен] FROM dbo.Платежи
WHERE @sCount IS NULL OR [Идентифкатор счета]=@sCount
39K
02 декабря 2009 года
b00B1uK
31 / / 08.06.2009
Пытался пойти вашим путё, к сожалению, не получилось. Составил запрос

 
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен], Время FROM Платежи WHERE (@sCount IS NULL) OR ([Идентифкатор счета] = @sCount) AND (@sName IS NULL) OR (Платильщик = @sName) AND (@sDate IS NULL) OR (Дата = @sDate)


Собственно задача. Есть, грубо говоря, 3 text box'a, нужно сделать по ним выборку, с возможностью выбрать при заполнении тока одного text box'a, а два пустые или тока два заполнены и т.д. Думаю суть ясна.

sDate-типа DateTime
sName,sCount-String
5
02 декабря 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: b00B1uK
Пытался пойти вашим путё, к сожалению, не получилось

Операция AND приоритетнее чем OR - расставьте скобки. ;)

39K
02 декабря 2009 года
b00B1uK
31 / / 08.06.2009
Мммм... Огромное спасибо за помощь, но есть ещё вопросы.

Запрос теперь такой.
 
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен], Время FROM Платежи WHERE ((@sCount IS NULL) OR ([Идентифкатор счета] = @sCount)) AND ((@sName IS NULL) OR (Платильщик = @sName)) AND ((@sDate IS NULL) OR (Дата = @sDate))

Он выполняется в редакторе запросовЮ но есть проблема.

Выполняю

 
Код:
private void button1_Click(object sender, EventArgs e)
        {
            this.платежиTableAdapter.FillBy (this.tsgDataSet.Платежи, comboBox1.SelectedValue.ToString(), textBox1.Text.ToString(),
                dateTimePicker1.Text.ToString());
               
        }


1. При добавлении в базу я заношу туда CURRENT_TIMESTAMP, соответственно дата заносится с часом и минутами. Как можно их убрать или игнорировать при выборке.

2. Собственно выборка не работает, подозреваю, потому, что при пустом text boxe, значение передаваемое из является "", как можно задать значение по умолчанию для пустого бокса или проблема не тут?

P. S. Сори за, возможно, тупые вопросы, изучаю C# но задачу требуется решить гораздо быстрее.
5
03 декабря 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: b00B1uK

Выполняю

 
Код:
private void button1_Click(object sender, EventArgs e)
        {
            this.платежиTableAdapter.FillBy (this.tsgDataSet.Платежи, comboBox1.SelectedValue.ToString(), textBox1.Text.ToString(),
                dateTimePicker1.Text.ToString());
               
        }


По поводу передачи NULL значений посредством адаптеров таблиц, смотри сюда (MSDN). Резюмируя, скажу, что если строка пустая ("") или null, то нужно передавать null.


Цитата: b00B1uK

1. При добавлении в базу я заношу туда CURRENT_TIMESTAMP, соответственно дата заносится с часом и минутами. Как можно их убрать или игнорировать при выборке.


Напрямую сравнивать даты обычно требуется очень редко. Чаще используют попадание в интервал, используя предикат BETWEEN-AND.

Примерный код:

 
Код:
SELECT * FROM Платежи
WHERE (@start_date IS NULL OR @end_date IS NULL
    OR Дата BETWEEN @start_date AND @end_date)
На клиенте нужно сформировать start_date и end_date. Если посчитать, что пользователь вводит лишь дату, за которую он хочет увидеть платежи, то можно лего вычислить этот интервал:
 
Код:
DateTime date = ...

DateTime start_date = date.Date;
DateTime end_date = start_date.AddDays(1);
39K
14 декабря 2009 года
b00B1uK
31 / / 08.06.2009
Появилась новая проблемка. У меня есть пара таблиц.

Квартиры с полями:[Номер квартиры], [Идентификатор квартиры], Подъезд, Этаж, [Тел Номер], Площадь, [Идентификатор дома], Баланс.

И жильцы с полями: [Идентификатор жильца], [Идентификатор квартиры], Имя, Фамилия, Отчество, [Номер паспорта], Выдан, [Владеет счетом)], [Дата прописки], [Дата выписки].

Возможно-ли составить запрос, который будет выбирать Идентификатор квартиры,Площадь и количество жильцов для квартиры.
Собственно затык как раз в последнем, как посчитать жильцов для каждой квартиры я не знаю.могу понять.
46K
15 декабря 2009 года
netlana
16 / / 14.03.2009
попробуйте такой запрос:
 
Код:
SELECT Квартиры.[Идентификатор квартиры],Квартиры.Площадь,COUNT(Жильцы.[Идентификатор жильца])
FROM Квартиры, Жильцы
WHERE Жильцы.[Идентификатор квартиры]=Квартиры.[Идентификатор квартиры]
GROUP BY [Идентификатор квартиры]


GROUP BY разделяет таблицу на группы, а агрегирующая функция вычисляет для каждой из них итоговое значение.
39K
15 декабря 2009 года
b00B1uK
31 / / 08.06.2009
Спасибо! Помогло.
55K
29 декабря 2009 года
quelime
5 / / 21.12.2009
что все вполне реально, если понять что должно происходить в таблице. Я - ничего не понял.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог