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

Откуда:
Сообщений: 82
SELECT SHIPS.NAME AS A,CLASSES.DISPLACEMENT AS B
FROM SHIPS,CLASSES
WHERE (SHIPS.CLASS=CLASSES.CLASS) AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
)
HAVING B=
( 
SELECT MAX(CLASSES.DISPLACEMENT)
FROM SHIPS,CLASSES
WHERE (SHIPS.CLASS=CLASSES.CLASS) AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
GROUP BY CLASSES.DISPLACEMENT)
)


Здравствуйте еще раз. НАписал запрос, выдает ошибку

Сообщение 207, уровень 16, состояние 1, строка 9
Недопустимое имя столбца "B".


Помогите исправить синтаксис пожалуйста.
21 июн 12, 22:04    [12756143]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SELECT SHIPS.NAME AS A,CLASSES.DISPLACEMENT AS B
FROM SHIPS,CLASSES
WHERE (SHIPS.CLASS=CLASSES.CLASS) AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
)
HAVING CLASSES.DISPLACEMENT =
( 
SELECT MAX(CLASSES.DISPLACEMENT)
FROM SHIPS,CLASSES
WHERE (SHIPS.CLASS=CLASSES.CLASS) AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
GROUP BY CLASSES.DISPLACEMENT)
)
21 июн 12, 22:28    [12756241]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
Сообщение 164, уровень 15, состояние 1, строка 1
Каждое выражение GROUP BY должно содержать по меньшей мере один столбец, который не является внешней ссылкой.
Сообщение 8121, уровень 16, состояние 1, строка 1
Столбец "CLASSES.displacement" недопустим в предложении HAVING, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
21 июн 12, 22:40    [12756300]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
NOT EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
GROUP BY CLASSES.DISPLACEMENT)
Что по вашему должен делать этот подзапрос?
21 июн 12, 23:36    [12756536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
CH1PSET1
Member

Откуда:
Сообщений: 82
AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
GROUP BY CLASSES.DISPLACEMENT)
)

таблица outcomes содержит корабли, которые учавствуют в сражении. Таблица ships все корабли. Тут идет выбор всех кораблей, которые не учавствовали в сражении.
22 июн 12, 11:40    [12758575]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
CH1PSET1
AND NOT
EXISTS (
SELECT *
FROM OUTCOMES
WHERE OUTCOMES.SHIP = SHIPS.NAME
GROUP BY CLASSES.DISPLACEMENT)
)

таблица outcomes содержит корабли, которые учавствуют в сражении. Таблица ships все корабли. Тут идет выбор всех кораблей, которые не учавствовали в сражении.
Угу. А GROUP BY причем?
22 июн 12, 11:44    [12758624]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Кажется, на sql-ex была задача про корабли?
22 июн 12, 11:51    [12758695]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом разобраться.  [new]
Baddy
Member

Откуда: Харьков
Сообщений: 174
iap
Кажется, на sql-ex была задача про корабли?

это она и есть
22 июн 12, 11:53    [12758719]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить