Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.033 c
9-1083477699
Smoke_Gomel
2004-05-02 10:01
2004.08.22
Анимированные спрайты в Delphix


3-1091078087
SASH2
2004-07-29 09:14
2004.08.22
Вопрос по wwDBGrid?


14-1091319962
parovoZZ
2004-08-01 04:26
2004.08.22
photoshop


14-1091616142
Bless
2004-08-04 14:42
2004.08.22
Зачем нужен фаервол?


14-1090352717
saNat
2004-07-20 23:45
2004.08.22
Выбор DVD+/-CDRW





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский