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

Откуда:
Сообщений: 54
здравствуйте
создаю 3 таблицы
хочу связать все таблицы через full join
то есть выходит информация о персонеб человеке, далее количество покупки, id покупки, вермя покупки, и далее что за продукт который он купил, название описание и т.д.

делаю два FOREIGN KEY в таблице SALE
FOREIGN KEY (ПокупательID) REFERENCES USERS(АгентID)
FOREIGN KEY (ПродуктID) REFERENCES PRODUCT(ПродуктID)

но почему то с 2-мя FOREIGN KEY не работает, с одним работает

прошу помочь, как можно объеденить эти 3 таблицы, спасибо




CREATE TABLE USERS
(
АгентID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Имя NVARCHAR(100),
фамилия NVARCHAR(100),
УдостоверениеID INT NOT NULL,
СпонсорID INT,
CreateDate DATETIME DEFAULT GETDATE(),
)


INSERT INTO USERS (Имя, фамилия, УдостоверениеID, СпонсорID)
VALUES (N'ალექსანდრე', N'სელეპანოვი', '12223', '0')
INSERT INTO USERS (Имя, фамилия, УдостоверениеID, СпонсорID)
VALUES (N'გიორგი', N'ბერიძე', '57390', '1')
INSERT INTO USERS (Имя, фамилия, УдостоверениеID, СпонсорID)
VALUES (N'გიგა', N'ხონელია', '2343', '2')

CREATE TABLE SALE
(
ПродажаID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
ПродуктID INT NOT NULL,
Количество INT NOT NULL,
ПокупательID INT NOT NULL,
CreateDate DATETIME DEFAULT GETDATE(),
FOREIGN KEY (ПокупательID) REFERENCES USERS(АгентID)
FOREIGN KEY (ПродуктID) REFERENCES PRODUCT(ПродуктID)

)

INSERT INTO SALE (ПродуктID, ПокупательID, Количество)
VALUES ('1', '2', '1')
INSERT INTO SALE (ПродуктID, ПокупательID, Количество)
VALUES ('1', '1', '10')
INSERT INTO SALE (ПродуктID, ПокупательID, Количество)
VALUES ('1', '2', '3')


CREATE TABLE PRODUCT
(
ПродуктID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Имя_Продукта NVARCHAR(100),
Описание_Продутка NVARCHAR(500),
Цена_Продукта INT NOT NULL,
Склад_Продукта INT NOT NULL,
CreateDate DATETIME DEFAULT GETDATE(),
)

INSERT INTO PRODUCT (Имя_Продукта, Описание_Продутка, Цена_Продукта, Склад_Продукта)
VALUES (N'FFI G1', N'სითხე', '30', '15')






SELECT U.АгентID, U.Имя, U.фамилия, U.СпонсорID, U.УдостоверениеID,
S.ПродажаID, P.ПродуктID, P.Имя_Продукта, P.Описание_Продутка,
S.Количество,
P.Склад_Продукта, P.Цена_Продукта

FROM USERS AS U FULL JOIN SALE AS S ON U.АгентID=S.ПокупательID
FULL JOIN PRODUCT AS P ON P.ПродуктID=S.ПродуктID;
11 июн 12, 23:11    [12700697]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
step_ks
Member

Откуда:
Сообщений: 936
что значит "не работает"? Зачем вам тут full ? сами же спрашиваете про inner, вот его и используйте.
11 июн 12, 23:32    [12700764]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
Злой Бобр
Member

Откуда: Украина, Кривой Рог
Сообщений: 3604
alex212121
... но почему то с 2-мя FOREIGN KEY не работает, с одним работает ...

Видимо потому что кто-то неучил теорию. Правильный порядок:
CREATE TABLE USERS
CREATE TABLE PRODUCT
CREATE TABLE SALE

Ну и FULL заменить на INNER. Интересно где Вы вычитали про FULL?.. Хотя - без разницы.
11 июн 12, 23:34    [12700768]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
alex212121
Member

Откуда:
Сообщений: 54
Злой Бобр,

ВСЁ равно не идёт, не хочет 2 форейна совмещать в одном столе
11 июн 12, 23:41    [12700787]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
alex212121
ВСЁ равно не идёт


Это такое сообщение об ошибке?!
12 июн 12, 00:25    [12700930]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
alex212121
Member

Откуда:
Сообщений: 54
pkarklin,

НЕТ НЕ СООБЩЕНИЕ ОБ ошибке. просто закиньте в менеджмент студио и посмотрите пожалуйста.

мне нужен именно FULL JOIN чтобы были видны и те люди у кого нет продаж...

а два ДЖОИНА он не хочет делать
12 июн 12, 00:45    [12700986]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
alex212121,

Я очень понимаю всю проблематику Вашей ситуации, но сообщение "два ДЖОИНА он не хочет делать", к сожалению, не несет никакой полезной информации для анализа.
12 июн 12, 01:05    [12701032]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
alex212121,

Модератор: И не надо орать!
12 июн 12, 01:06    [12701034]     Ответить | Цитировать Сообщить модератору
 Re: inner join между 3-мя таблицами  [new]
Олегон
Member

Откуда: Казахстан, Алматы
Сообщений: 80
alex212121
Злой Бобр,

ВСЁ равно не идёт, не хочет 2 форейна совмещать в одном столе


1) Соблюсти, как указали порядок

Злой Бобр
Видимо потому что кто-то неучил теорию. Правильный порядок:
CREATE TABLE USERS
CREATE TABLE PRODUCT
CREATE TABLE SALE


2) Поставить запятую перед вторым объявлением FK
FOREIGN KEY (ПокупательID) REFERENCES USERS(АгентID),
FOREIGN KEY (ПродуктID) REFERENCES PRODUCT(ПродуктID)

3) Вместо full join использовать left join

from
  dbo.USERS u
  left join dbo.SALE s
    on
      s.покупательid = u.агентid
  left join dbo.PRODUCT p
    on
      p.продуктid = s.продуктid


Хотя до конца не ясна задачи выборки.

P.S.: Про "стол" прикольно :)
12 июн 12, 11:35    [12701505]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить