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

Откуда:
Сообщений: 83
Есть база (прикрепил базу к посту) и у меня задание по учебе :
Используя синтаксис языка SQL создать таблицу, содержащую имена поставщиков, не поставляющих детали со складов из города Рим.

У меня не получается... Подскажите последовательность операторов...

К сообщению приложен файл (база для форума.doc - 41Kb) cкачать
8 июн 09, 00:57    [7274723]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
sergey113,

Вы уж определитесь: убрать и выбрать поставщика?
8 июн 09, 01:28    [7274762]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
an0nym
Member

Откуда:
Сообщений: 7076
sergey113
Есть база (прикрепил базу к посту) и у меня задание по учебе :
Используя синтаксис языка SQL создать таблицу, содержащую имена поставщиков, не поставляющих детали со складов из города Рим.

У меня не получается... Подскажите последовательность операторов...

вариант 1
SELECT [SNAME] FROM [Таблица 1] WHERE [S#] IN(SELECT [S#] FROM [Таблица 3] WHERE [P#] NOT IN(SELECT [P#] FROM [Таблица 2] WHERE [CITY]='Rome'))

вариант 2
SELECT [SNAME] FROM [Таблица 1] LEFT OUTER JOIN [Таблица 2] USING([S#]) INNER JOIN [Таблица 3] USING([P#]) WHERE [City]!='Rome'
8 июн 09, 01:37    [7274766]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
sergey113
Member

Откуда:
Сообщений: 83
Senya_L
sergey113,

Вы уж определитесь: убрать и выбрать поставщика?

прошу прощения за нечеткость в теме. Все таки сформировать таблицу с поставщиками, но убрав из нее поставщика который поставляет детали из рима.
8 июн 09, 13:48    [7276402]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
sergey113
Member

Откуда:
Сообщений: 83
an0nym
sergey113
Есть база (прикрепил базу к посту) и у меня задание по учебе :
Используя синтаксис языка SQL создать таблицу, содержащую имена поставщиков, не поставляющих детали со складов из города Рим.

У меня не получается... Подскажите последовательность операторов...

вариант 1
SELECT [SNAME] FROM [Таблица 1] WHERE [S#] IN(SELECT [S#] FROM [Таблица 3] WHERE [P#] NOT IN(SELECT [P#] FROM [Таблица 2] WHERE [CITY]='Rome'))

вариант 2
SELECT [SNAME] FROM [Таблица 1] LEFT OUTER JOIN [Таблица 2] USING([S#]) INNER JOIN [Таблица 3] USING([P#]) WHERE [City]!='Rome'


К сожалению первый вариант дает в выборке поставщика Smith а он поставляет детали со склада в риме..
Воторой запрос выдал синтаксическую ошибку..
Все равно спасибо.. на основе этих запросов попробую сделать то что мне надо.
8 июн 09, 13:50    [7276429]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
iljy
Guest
sergey113,

select * from 
   S
where S# not in(
	select sp.s# from
		sp join
		p on sp.p# = p.p#
		where p.City = 'Rome'
)
на будущее - публикуйте данные не в формате ворда, а в виде скиптов, создающих и заполняющих таблицы, примерно так:
use tempdb

create table S
(
	S# char(2) not null,
	SNAME varchar(50) not null,
	STATUS int not null,
	CITY varchar(50) not null
)
insert into S
select 'S1','Smith',20,'London' union all
select 'S2','Jones',10,'Paris'  union all
select 'S3','Black',30, 'Paris'  union all
select 'S4','Clark',20, 'London'  union all
select 'S5','Adams', 30,'Athens'

create table P
(
	P# char(2) not null,
	PNAME varchar(50) not null,
	COLOR varchar(50) not null,
	CITY varchar(50) not null,
	WEIGHT int not null
)
insert into P
select 'P1','Nut','Red','London', 12 union all
select 'P2','Bolt','Green','Paris', 17 union all
select 'P3','Screw','Blue','Rome', 17 union all
select 'P4','Screw','Red','London',14 union all
select 'P5','Cam','Blue','Paris',12 union all 
select 'P6','Cog','Red','London',19

create table SP
(
	S# char(2) not null,
	P# char(2) not null,
	QTY int not null
)
insert into SP
 
select 'S1','P1',300 union all	   
select 'S1','P2',200 union all	   
select 'S1','P3',400 union all	   
select 'S1','P4',200 union all	   
select 'S1','P5',100 union all	   
select 'S1','P6',100 union all	   
select 'S2','P1',300 union all	   
select 'S2','P2',400 union all	   
select 'S3','P2',200 union all	   
select 'S4','P2',200 union all	   
select 'S4','P4',300 union all	   
select 'S4','P5',400
8 июн 09, 14:46    [7276781]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
sergey113
Member

Откуда:
Сообщений: 83
iljy

бился бился с этим запросом .. не работает. Выдает синтаксическая ошибка в выражении.

даже эта часть не работает
select S1 from SP join P on

SP.P1=P.P1 where P.CITY='Rome'


# заменил на 1 в названии стобцов так как подозревал ошибку в этом.
Запрос пытаюсь выполнить в Access 2007
9 июн 09, 20:11    [7283102]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
an0nym
вариант 2
SELECT [SNAME] FROM [Таблица 1] LEFT OUTER JOIN [Таблица 2] USING([S#]) INNER JOIN [Таблица 3] USING([P#]) WHERE [City]!='Rome'
Какой-такой USING? Форум перепутали?
9 июн 09, 20:36    [7283146]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
sergey113
Member

Откуда:
Сообщений: 83
Да.. страшное дело ..везде свой синтаксис.. Будем разбираться, пока не получается.
9 июн 09, 20:51    [7283168]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
iljy
Guest
sergey113
iljy

бился бился с этим запросом .. не работает. Выдает синтаксическая ошибка в выражении.

даже эта часть не работает
select S1 from SP join P on

SP.P1=P.P1 where P.CITY='Rome'


# заменил на 1 в названии стобцов так как подозревал ошибку в этом.
Запрос пытаюсь выполнить в Access 2007

попробуйте так
select S1 from SP  INNER join P on 

SP.P1=P.P1 where P.CITY='Rome'     ;
а в следующий раз уточняйте среду испольнения.
9 июн 09, 22:40    [7283362]     Ответить | Цитировать Сообщить модератору
 Re: Из базы в три таблицы одним запросом убрать поставщика..  [new]
sergey113
Member

Откуда:
Сообщений: 83
Спасибо. Запрос прошел.
select * from S where S.S1 NOT IN ( select SP.S1 from SP inner join

P on
SP.P1=P.P1 where P.CITY='Rome')
9 июн 09, 22:50    [7283379]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить