Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
krupa
106 / 106 / 35
Регистрация: 13.12.2010
Сообщений: 407
#1

Создать запрос с условием, которое вводит пользователь

18.12.2011, 01:49. Просмотров 932. Ответов 2
Метки нет (Все метки)

Вот делаю лабораторную, такое задание

4. Перечислить поставщиков, поставляющих хотя бы одну деталь заданного списка (список задать самостоятельно через запрос).

понятия не имею как делать, как искать это в интернете.
то есть, я пишу запрос, нажимая выполнение выскакивает окошко, где я ввожу данные и выполняется сам запрос.

каким образом это происходит. объясните пожалуйста

Добавлено через 14 минут
вот так вот))

SQL
1
SELECT * FROM DETAL WHERE NAIM=:PLACE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 01:49
Ответы с готовыми решениями:

Запрос с условием
Доброго времени суток! Есть запрос с условием: SELECT * FROM Table1 WHERE...

запрос с условием
Подскажите пожалуйста, почему не работает, пишет что "Ошибка преобразования...

Запрос с условием
Всем привет. Такая проблема. У меня есть таблица, состоящая из полей: Авторы,...

Запрос на представление с условием
трям всем доброй ночи...есть проблемка делаю запрос на представление с...

Запрос с условием и разрывом
здравствуйте . работаю с базой mssql. столкнулся с такой ситуацией--вот...

2
homich77
79 / 78 / 4
Регистрация: 06.04.2009
Сообщений: 326
19.12.2011, 19:42 #2
Если говорить просто о работе sql без всяких подключений к нему с помощью С#, asp.net...
то
объявление переменной пишется так:
SQL
1
DECLARE @peremennaya VARCHAR(512)
то есть на данной этапе вы можете создать переменную, которая будет принимать список идентификаторов деталей, к примеру
ну а там уже (для разбиения в базе строки в список у меня есть процедура):
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CREATE    PROCEDURE [dbo].[pIntParsing]
  @pIDLstMovPrd  VARCHAR(2000),          -- строка, которую нужно сделать списком
  @pR VARCHAR(1)                                -- разделитель
AS
BEGIN Tran
 
CREATE TABLE #table (IDLstMovProduct INT)
 
--парсим строку pIDPartnerUse **************************************************************************************
DECLARE @str1 VARCHAR(2000)
DECLARE @str2 VARCHAR(2000)
DECLARE @pos INT
 
SET @str1=IsNull(@pIDLstMovPrd,'0')
SET @pos=charindex(@pR,@str1)
 
while IsNULL(@pos,0)>0
BEGIN
  SET @str2=SUBSTRING(@str1,1,@pos-1)
  INSERT INTO #table(IDLstMovProduct) VALUES (CAST(@str2 AS INT))
  SET @str1=SUBSTRING(@str1,@pos+1,len(@str1))
  SET @pos=charindex(@pR,@str1)
END
 
IF CAST(@str1 AS VARCHAR(2000)) <>''
BEGIN
  INSERT INTO #table (IDLstMovProduct) VALUES (CAST(@str1 AS INT) )
END
 
 
--распарсили************************************************************************************************************
SELECT IDLstMovProduct FROM #table
DROP TABLE #table
 
Commit Tran
Добавлено через 7 минут
не очень понятно, есть ли у вас диаграмма базы данных. в двух словах:
есть таблица Post (поставщиков) и таблица Detail (деталей). Отношение скорее всего М:М (многое к многому), то есть любой из поставщиков может возить любой из товаров. Для этого создается еще одна таблица , пусть будет называться Svod (сводная).
Получаем:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE Post(
IDPost PRIMARY KEY,
NamePost VARCHAR(512)
)
Полей может быть столько, сколько вам нужно.
CREATE TABLE Detail(
IDDetail PRIMARY KEY,
NameDetail VARCHAR(512)
)
 
CREATE TABLE Svod(
ID PRIMARY KEY,
IDPost INT FOREIGN KEY REFERENCES Post NOT NULL, 
IDDetail INT FOREIGN KEY REFERENCES Detail NOT NULL
)
Вот у нас есть 3 таблицы, описанные выше. Теперь собственно запрос

Добавлено через 6 минут
SQL
1
2
3
4
5
6
7
8
9
10
11
12
DECLARE @spisok VARCHAR(512)
SET @spisok = '1|2|5'     -- задаваемый список нами
-- создаем временную таблицу для получения списка идентификаторов деталей
CREATE TABLE #t(ID INT)
    
INSERT INTO #t
EXEC pIntParsing @spisok, '|'
 
SELECT Post.*
FROM Post INNER JOIN Svod ON Post.IDPost = Svod.IDPost
 
DROP TABLE #t
Все inner join - объединяет две таблицы только по существующим данным. То есть , если есть хотя бы одна запись в таблице Svod с текущим поставщиком - значит есть как минимум одна деталь, связанная с ним
2
krupa
106 / 106 / 35
Регистрация: 13.12.2010
Сообщений: 407
20.12.2011, 02:18  [ТС] #3
большое спасибо за продуктивный и полезный ответ
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 02:18

Запрос с условием на дату
Здравствуйте! Нужно сделать запрос из таблицы, в которой есть столбец Дата...

Запрос на выборку с условием or
Здравствуйте&quot; Подскажите как реализовать правильно такой запрос: select *...

Запрос с условием выбора таблицы
Имеется таблица, в которой поля указывают на значения полей из других таблиц....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru