Learn.net37 Ответов: 1

Порядок по элементам должен отображаться в списке выбора, если оператор содержит оператор UNION, INTERSECT или EXCEPT.


Здравствуйте, у меня есть ошибка, когда я пытаюсь заказать по, я использую union

* (я стараюсь использовать порядок по дате мм и гггг для сортировки даты от самой старой до самой ранней)

Что я уже пробовал:

ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[Bulding_Safa]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)



СОЮЗ

ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[Bulding_Sharfya]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)

СОЮЗ

ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[коммерческое здание]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)

СОЮЗ

ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[Mall_Reem]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)


СОЮЗ
ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[MALL_Residential ]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)
СОЮЗ

ВЫБИРАТЬ
[Spare6]
,[Spare5]
,[Spare4]
,[Spare3]
,[Spare2]
,[Spare1]
,[подробная информация]
,[записка]
,[документы]
,[termsofpaymneten]
,[termsofpaymnet]
,[aprtmentstatusen]
,[aprtmentstatus]
, преобразовать(varchar, amountdateen, 103) в amountdateen
, преобразовать(varchar, amountdate, 103) в amountdate
,[amountleft]
,[сумма уплачена]
,[арендовать]
,[ноофпайемцен]
,[ноофпайемц]
,[кабеля адаптера]
,[источник]
,[iddateen]
,[iddate]
,[идентификационный номер]
, преобразовать(varchar, contractenen, 103) в contractenen
, преобразовать(varchar, contracten, 103) в contracten
, преобразовать (varchar, contractstarten, 103)в contractstarten
, преобразовать (varchar, contractstart, 103)в contractstart
,[contractnoen]
,[контрактно]
,[nationalityen]
,[национальность]
,[secondpartyen]
,[secondparty]
,[firstpartyen]
,[firstparty]
, [apartemetnoen]
, [квартирно]
,[Bulidingnoen]
,[Булидингно]
,[Нет] от [All_Vech]. [dbo].[Shop_Reem]
где обменять(дата,amountdateen,103) &ЛТ; преобразование(дата ,функции getdate(),103)
Заказ по месяцам (amountdateen), годам (amountdateen) -------------------------------------> ошибка здесь
КОНЕЦ

CHill60

Ошибка кажется вполне очевидной ... в списке выбора нет ни месяца(amountdateen), ни года(amountdateen).
С другой стороны, вы не должны преобразовывать даты.

1 Ответов

Рейтинг:
9

CHill60

Похоже, у вас есть по крайней мере 6 таблиц с точно такой же схемой. Обычно это верный признак того, что ваш дизайн базы данных нуждается в некотором внимании.

Из того, что я вижу, вся эта информация может быть (и должна быть) сохранена в одной таблице. Добавьте еще один столбец, который указывает "BuildingType" - он будет содержать такие значения, как" Safa"," Sharfya"," Commercial_Building " - или даже лучше быть внешним ключом к таблице, содержащей сведения о типах зданий.

Во-вторых, вы не должны использовать

where CONVERT(date,amountdateen,103) < CONVERT(date ,GETDATE(),103) 
Воспользуйся функция DateDiff[^]. Вы также не должны преобразовывать даты перед передачей информации обратно вызывающей программе - позвольте графическому интерфейсу интерпретировать тип даты вместо строки, которая может быть неоднозначной.

Чтобы преодолеть свою проблему вы можете просто включить месяц (amountdateen) и год(amountdateen) в свои списки выбора, но было бы гораздо лучше решить проблемы с дизайном вашей базы данных. Заказ по amountdateen DESC