Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизКак правильно сортировать? Найти похожие ветки
← →
Экспериментатор (2004-07-27 15:29) [0]Объясните пожалуйста недалекому: почему не сортируется по SIZENAME
Запрос следующий:
SELECT
GOODS.ID,
GOODS.NAME,
(SELECT SIZES.NAME FROM SIZES WHERE SIZES.ID=GOODS.ID_SIZES) SIZESNAME,
FROM
GOODS
ORDER BY
SIZESNAME
← →
Sandman25 © (2004-07-27 15:30) [1]Попробуйте так
SELECT
GOODS.ID,
GOODS.NAME,
SIZES.NAME SIZESNAME,
FROM
GOODS,
SIZES
WHERE SIZES.ID=GOODS.ID_SIZES
ORDER BY
3
← →
Ega23 © (2004-07-27 15:34) [2]
select * from
(SELECT
GOODS.ID,
GOODS.NAME,
(SELECT SIZES.NAME FROM SIZES WHERE SIZES.ID=GOODS.ID_SIZES) SIZESNAME,
FROM
GOODS) as A
ORDER BY
SIZESNAME
Так пойдёт?
И вообще, СУБД какая?
← →
Экспериментатор (2004-07-27 15:35) [3]InterBase
← →
Sandman25 © (2004-07-27 15:36) [4][2] Ega23 © (27.07.04 15:34)
Не надо так советовать.
Тут недавно был один с
select *
from (select * from a) b
Все жаловался, что IB такие конструкции не поддерживает :)
← →
Ega23 © (2004-07-27 15:40) [5]MS SQL поддерживает.
select * from
(
select AccObjId=0,ZoneId=Z.UID,PointId=P.UID, LogAddr=EPLogAddr, PhsAddr=EPPhsAddr,
ZoneNam=ltrim(rtrim(cast(P.EPName as varchar(64)) )),
ZoneLab=ltrim(rtrim(cast(P.EPName as varchar(16)) )),
ZoneNot=P.EPComment,ZoneMsk=p.epstatus
from L_ezonestbl Z, L_EPointsTBL P
where P.EPOwnerID=Z.UID
and(@zoneid=-1 or @zoneid=Z.UID)
--@@23.08.2001
and p.epstatus>0 and z.EZStatus>0
UNION all
--зоны
select AccObjId=0,ZoneId=@zoneid,PointId=0, LogAddr=0, PhsAddr=0,
ZoneNam="Все точки",
ZoneLab="Все",
ZoneNot="",ZoneMsk=1
) as U
where(
@AdmGrCod=-1
or
((@AdmGrCod<>-1)
and (U.PointId not in (select pointid from admitGrPl
where AdmGrCod=@AdmGrCod and zoneid=@zoneid
)
or pointid=0
)
)
)
and (@mode <>100
or
(@mode=100 and @zoneId=-1 and pointid=0 and zoneid=@zoneId) -- только точка ВСЕ
or
(@mode=100 and @zoneId<>-1 and @pointid=0 ) -- ВСЕ точки и точка ВСЕ
or
(@mode=100 and @zoneId<>-1 and @pointid<>0 and pointid<>0 )-- ВСЕ точки БЕЗ точки ВСЕ
)
order by ZoneId,PointId
← →
Sandman25 © (2004-07-27 15:43) [6][5] Ega23 © (27.07.04 15:40)
Этот запрос принципиально отличается от [0]
← →
Экспериментатор (2004-07-27 15:48) [7]
> Sandman25 © (27.07.04 15:30) [1]
Не подходит
← →
Sandman25 © (2004-07-27 15:49) [8][7] Экспериментатор (27.07.04 15:48)
Можно узнать почему?
Он эквивалентен Вашему запросу.
← →
Ega23 © (2004-07-27 15:53) [9]SELECT
GOODS.ID,
GOODS.NAME,
SIZES.NAME SIZESNAME,
FROM
GOODS,
SIZES
WHERE SIZES.ID=GOODS.ID_SIZES
ORDER BY SIZESNAME
← →
Экспериментатор (2004-07-27 15:54) [10]Извините, был не корректен
все работает если писать
Order By 3
но если написать
ORDER BY SIZENAME
то ошибка. Хотелось бы узнать так вообще нельзя писать?
← →
Ega23 © (2004-07-27 15:54) [11]Этот запрос принципиально отличается от [0]
Да, согласен, на исходный невнимательно посмотрел. Показалось, что вложенный селект какой-то другой.
← →
Ega23 © (2004-07-27 15:55) [12]Попробуй
ORDER BY SIZES.NAME
← →
Johnmen © (2004-07-27 16:25) [13]В ORDER BY недопустимо указывать алиасы полей запроса.
Либо реальные поля таблиц, либо номер поля запроса.
← →
ЮЮ © (2004-07-28 02:39) [14]>Хотелось бы узнать так вообще нельзя писать?
ИМХО, нельзя писать
,(SELECT SIZES.NAME FROM SIZES WHERE SIZES.ID=GOODS.ID_SIZES) SIZESNAME
для организации тривиальной связи двух таблиц, т.к. этот подзапрос будет выполняться для каждой записи из главной таблицы.
См.в [1], [9] как связывают таблицы
Если же GOODS.ID_SIZ может быть NULL, то
SELECT
GOODS.ID,
GOODS.NAME,
SIZES.NAME SIZESNAME
FROM
GOODS
LEFT JOIN SIZES ON SIZES.ID=GOODS.ID_SIZES
ORDER BY SIZES.NAME
← →
Экспериментатор (2004-07-28 06:58) [15]
> См.в [1], [9] как связывают таблицы
> Если же GOODS.ID_SIZ может быть NULL, то
Может
to All
Спасибо всем
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c