Mahesh2223 Ответов: 2

Хранимая процедура, возвращающая выбранные значения


У меня есть две таблицы в базе данных: одна-таблица групп, а другая-таблица состояний.Обе группы имеют общие.Так что я внутренне присоединюсь к ним, я получу все записи. Таблица состояния имеет столбец состояния в таблице, этот столбец состояния имеет около 6 столбцов, таких как 1)активный 2)не активный 3)ожидающий 4)одобренный 5)помещенный 6)не размещенный теперь все записи имеют один столбец, связанный со столбцом состояния..

Мне нужна хранимая процедура, которая будет получать записи, например, если она активна, мы получим запись о внутреннем соединении обеих таблиц, если она находится в состоянии размещения, мы получим размещенные записи столбцов и так далее, если пользователь ничего не выберет, мы получим все записи. Это я свяжу с выпадающим списком, и эти значения будут отображаться в GridView в переднем конце..

можете ли вы, пожалуйста, помочь мне с хранимой процедурой сделать так, как dis please help?? есть предложения ??

Что я уже пробовал:

--if status = Active select a.GroupName,b.Brand,b.model,b.serialno , b.Status from status b inner join Group a on a.GroupId = b.GroupId where Status = 'Active' 

2 Ответов

Рейтинг:
2

kambingkoh

CREATE PROCEDURE GetGroupStatus
/* Pass in Status to this Stored Procedure. By default set to empty string (''). If no Status is passed in, @Status = '', and we will
then return all the results for different Status. */
@Status AS VARCHAR(10) = ''
  
AS  

IF (@Status <> '')
	SELECT A.GroupName, B.Brand, B.model, B.serialno, B.Status from [Status] B
	INNER JOIN [Group] A ON A.GroupId = B.GroupId WHERE B.Status = @Status
ELSE
	SELECT A.GroupName, B.Brand, B.model, B.serialno, B.Status from [Status] B
	INNER JOIN [Group] A ON A.GroupId = B.GroupId


Mahesh2223

Например, у меня есть еще 5 дел, как мы пишем для этого?

kambingkoh

попробуйте Союз.

kambingkoh

Что-то вроде:
Выберите А. Имя_группы, марки Б., Б. модель, серийный номер serialno Б. Б. состояние [состояние] Б
Внутреннее соединение [группа] A ON A. GroupId = B. GroupId, где B. Status = 'активный'
СОЮЗ
Выберите А. Имя_группы, марки Б., Б. модель, серийный номер serialno Б. Б. состояние [состояние] Б
Внутреннее соединение [группа] A ON A. GroupId = B. GroupId, где B. Status = 'Pending'

kambingkoh

Но вы сказали, что вам нужна хранимая процедура, куда вы собираетесь передать статус "Активный", "не активный" и т. д.? Я предполагаю, что вы используете ASP.NET WebForm, поэтому в вашем коде просто вызовите эту хранимую процедуру, передав значение для @Status, если вы хотите, чтобы записи определенного статуса возвращались, если нет, просто вызовите хранимую процедуру как есть, и все записи будут возвращены.

Рейтинг:
1

#realJSOP

0) Вам не нужно if пункт:

SELECT a.Brand,
       a.model,
       a.serialno, 
       a.Status,
       b.GroupName
FROM status a 
INNER JOIN Group b ON a.GroupId = b.GroupId 
WHERE a.Status = 'Active'


1) имена ваших таблиц совпадают с именами некоторых столбцов. Это сбивает с толку.

2) Ваши псевдонимы не являются реальными указателями того, какую таблицу они представляют. Я предлагаю вместо этого использовать первую букву названия таблицы.