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

Откуда:
Сообщений: 31
Здрасте, не могу сделать следующий запрос.
Есть главная таблица с вторичными ключами:

CREATE TABLE Sname
(
	Code int NOT NULL PRIMARY KEY,
	New bit NOT NULL,
	Sname varchar(100) COLLATE Cyrillic_General_CI_AS NOT NULL,
	Price decimal(18, 2) NULL,
	Pages int NOT NULL,
	Odate DATE NULL,
	Tirage int DEFAULT 5000 NULL,
	Idcategory int REFERENCES Categories(Idcategory) ON UPDATE CASCADE ON DELETE NO ACTION
);


И сама таблица:

CREATE TABLE Categories
(
	Idcategory int NOT NULL PRIMARY KEY,
	Category varchar(50) COLLATE Cyrillic_General_CI_AS NOT NULL,
);



Нужно сделать такой вот запрос: Вывести отсортированный в обратном порядке общий список неповторяющихся первых слов названий книг и категорий. Использовать union

Вот что у меня получилось:

SELECT DISTINCT LEFT (Sname.Sname, charindex(' ', Sname.Sname)-1) AS [об] FROM Sname 
	INNER JOIN Categories ON Sname.Idcategory=Categories.Idcategory
	UNION (SELECT DISTINCT LEFT (Categories.Category, charindex(' ', Categories.Category)-1 ) FROM Categories
	INNER JOIN Sname ON Categories.Idcategory=Sname.Idcategory) 


но не работает
10 мар 14, 13:44    [15698880]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос, Union  [new]
Glory
Member

Откуда:
Сообщений: 104751
SELECT LEFT (Sname.Sname, charindex(' ', Sname.Sname)-1) AS [об] FROM Sname 
UNION 
SELECT LEFT (Categories.Category, charindex(' ', Categories.Category)-1 ) FROM Categories
10 мар 14, 13:48    [15698899]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос, Union  [new]
timedo
Member

Откуда:
Сообщений: 31
Спасибо! но ошибка:
Функции LEFT или SUBSTRING передан недопустимый параметр длины.
10 мар 14, 15:07    [15699122]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос, Union  [new]
Glory
Member

Откуда:
Сообщений: 104751
timedo
Функции LEFT или SUBSTRING передан недопустимый параметр длины.

select left('abc',-1)
10 мар 14, 15:18    [15699141]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос, Union  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
LEFT (str, charindex(' ', str+' ')-1)
10 мар 14, 16:23    [15699329]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить