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

Откуда:
Сообщений: 5
Здравствуйте форумчане. Прошу сильно пинать и бить, если необходимо.
В БД новичек, ( примерно неделю занимаюсь). Не могу найти где ошибся в запросе.
SQL возвращает "Subquery returned more than 1 value".

Прошу также не отправлять читать учебники, литературы вдоволь. Просто не могу понять где ошибка.

SELECT DISTINCT MIR.RouteId,  Numbroute, [Description]
FROM MechInRoute MIR JOIN Route rt ON MIR.RouteId  = rt.RouteId
WHERE MechId = ( 
	SELECT Mech.MechId FROM Mech,MechInRoute WHERE [Description] = 'Part 10,2,1'   AND MechOrder = 1  AND
	EXISTS (  
		SELECT Mech.MechID FROM Mech , MechInRoute  WHERE Mech.[Description] = 'Part 1,1,2' AND 
   MechOrder = (SELECT MAX ( MechOrder) FROM MechInRoute)
			))
ORDER BY [Description] 


Диаграмма БД:
Таблицы Mech (MechID, MechName, Description) - ключ MechID и
MechInRoute ( MechID, routeID , MechOrder) ключ MechID и routeID и
Route ( routeID, NumbRoute) ключ routeID
Тип данных всех столбцов - Int, Description - Varchar(255).
27 июл 12, 16:06    [12926441]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Wago,

Ошибочка где-тьо здесь
WHERE MechId = ( 
	SELECT Mech.MechId FROM Mech,MechInRoute WHERE [Description] = 'Part 10,2,1'   AND MechOrder = 1  AND
	EXISTS (  
		SELECT Mech.MechID FROM Mech , MechInRoute  WHERE Mech.[Description] = 'Part 1,1,2' AND 
   MechOrder = (SELECT MAX ( MechOrder) FROM MechInRoute)


Правая часть после
WHERE MechId =
возвращает видимо более одного значения.
27 июл 12, 16:09    [12926463]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
Wago
Member

Откуда:
Сообщений: 5
Спасибо, нашел.
WHERE MechId = ( SELECT DISTINCT Mech.MechId FROM Mech,MechInRout

Зашел посмотреть тему, и сразу усидел косяк.

Замечания по организации кода будут?
27 июл 12, 16:12    [12926490]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
cross join
Guest
Wago,

.... FROM Mech,MechInRoute WHERE .... 

Вы уверены, что вам тут нужно декатово произведение?
27 июл 12, 16:24    [12926583]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
cross join
Guest
Wago,

.... FROM Mech,MechInRoute WHERE .... 

Вы уверены, что вам тут нужно декатово произведение?
27 июл 12, 16:26    [12926603]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
Wago
Member

Откуда:
Сообщений: 5
cross join
Wago,

.... FROM Mech,MechInRoute WHERE .... 

Вы уверены, что вам тут нужно декатово произведение?

Да, вы наверное правы, декартово произведение в этом случае лишнее.
Спасибо за комментарии.
27 июл 12, 21:49    [12927846]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите где ошибочка.  [new]
GlebZ
Member

Откуда: USA
Сообщений: 286
Wago
cross join
Wago,

.... FROM Mech,MechInRoute WHERE .... 


Вы уверены, что вам тут нужно декатово произведение?

Да, вы наверное правы, декартово произведение в этом случае лишнее.
Спасибо за комментарии.

Может тогда и DISTINCT не понадобится.....
27 июл 12, 22:14    [12927943]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить