Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Как правильно сортировать?   Найти похожие ветки 

 
Экспериментатор   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
3-1090832959
SergBSI
2004-07-26 13:09
2004.08.22
DBCombobox


3-1090583970
chirchik
2004-07-23 15:59
2004.08.22
DevExpress - TcxDBLookupComboBox


3-1090840517
chirchik
2004-07-26 15:15
2004.08.22
TForm.FormActivate - долгая загрузка


6-1087810454
basic
2004-06-21 13:34
2004.08.22
Чем копировать на удаленном компе


14-1091768892
Anatoly Podgoretsky
2004-08-06 09:08
2004.08.22
Пятничная на оптимизацию