Подскажите по запросам
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен] FROM dbo.Платежи WHERE [Идентифкатор счета]=@sCount;
sCount-типа string.
В таблице поле Идентифкатор счета-int.
Собственно вопрос, какое значение надо передать, чтобы получить все поля таблицы. Помню в PHP был символ *. Тут не прокатывает.
Цитата: b00B1uK
какое значение надо передать, чтобы получить все поля таблицы
СУБД SqlServer?
Все поля:
Код:
SELECT * FROM dbo.Платежи WHERE [Идентифкатор счета]=@sCount
Код:
SELECT [Идентифкатор платежа], [Идентифкатор счета], Дата, Платильщик, [Сумма внесен] FROM dbo.Платежи
WHERE @sCount IS NULL OR [Идентифкатор счета]=@sCount
WHERE @sCount IS NULL OR [Идентифкатор счета]=@sCount
Код:
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
Цитата: b00B1uK
Пытался пойти вашим путё, к сожалению, не получилось
Операция AND приоритетнее чем OR - расставьте скобки. ;)
Запрос теперь такой.
Код:
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());
}
{
this.платежиTableAdapter.FillBy (this.tsgDataSet.Платежи, comboBox1.SelectedValue.ToString(), textBox1.Text.ToString(),
dateTimePicker1.Text.ToString());
}
1. При добавлении в базу я заношу туда CURRENT_TIMESTAMP, соответственно дата заносится с часом и минутами. Как можно их убрать или игнорировать при выборке.
2. Собственно выборка не работает, подозреваю, потому, что при пустом text boxe, значение передаваемое из является "", как можно задать значение по умолчанию для пустого бокса или проблема не тут?
P. S. Сори за, возможно, тупые вопросы, изучаю C# но задачу требуется решить гораздо быстрее.
Цитата: b00B1uK
Выполняю
Код:
private void button1_Click(object sender, EventArgs e)
{
this.платежиTableAdapter.FillBy (this.tsgDataSet.Платежи, comboBox1.SelectedValue.ToString(), textBox1.Text.ToString(),
dateTimePicker1.Text.ToString());
}
{
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)
WHERE (@start_date IS NULL OR @end_date IS NULL
OR Дата BETWEEN @start_date AND @end_date)
Код:
DateTime date = ...
DateTime start_date = date.Date;
DateTime end_date = start_date.AddDays(1);
DateTime start_date = date.Date;
DateTime end_date = start_date.AddDays(1);
Квартиры с полями:[Номер квартиры], [Идентификатор квартиры], Подъезд, Этаж, [Тел Номер], Площадь, [Идентификатор дома], Баланс.
И жильцы с полями: [Идентификатор жильца], [Идентификатор квартиры], Имя, Фамилия, Отчество, [Номер паспорта], Выдан, [Владеет счетом)], [Дата прописки], [Дата выписки].
Возможно-ли составить запрос, который будет выбирать Идентификатор квартиры,Площадь и количество жильцов для квартиры.
Собственно затык как раз в последнем, как посчитать жильцов для каждой квартиры я не знаю.могу понять.
Код:
SELECT Квартиры.[Идентификатор квартиры],Квартиры.Площадь,COUNT(Жильцы.[Идентификатор жильца])
FROM Квартиры, Жильцы
WHERE Жильцы.[Идентификатор квартиры]=Квартиры.[Идентификатор квартиры]
GROUP BY [Идентификатор квартиры]
FROM Квартиры, Жильцы
WHERE Жильцы.[Идентификатор квартиры]=Квартиры.[Идентификатор квартиры]
GROUP BY [Идентификатор квартиры]
GROUP BY разделяет таблицу на группы, а агрегирующая функция вычисляет для каждой из них итоговое значение.
Спасибо! Помогло.
что все вполне реально, если понять что должно происходить в таблице. Я - ничего не понял.