_Vasilisk_ |
---|
В MySQL нет типа BOOLEAN. Вообще. А то, что есть - это алиас для типа TINYINT(1). Т.е. однобайтовое число из одной цифры.
То, что какой-то дак к такому и только такому полю позволяет обращаться как AsBoolean - так это проблемы конкретного дака.
Правило преобразования типов у MySQL простые (если типы выбираемых колонок не соответствует друг-другу, то результирующая колонка получает общий тип)
Отсюда вывод - либо вы объединяете разные типы полей, либо дак не может поднять типы полей из сложного селекта |
Очень хороший вывод. Жаль, что скороспелый и неверный
Таблица 1:
Create Table If Not Exists `tbVoucherTypeVPNServiceLinks`
(`biID` BigInt UnSigned Not Null Primary Key Auto_Increment Comment 'Уникальный идентификатор',
`biVoucherTypeID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор типа ваучера',
`biVPNServiceID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор услуги VPN',
`vcRemark` VarChar(2000) Default '…' Not Null Comment 'Комментарий',
`bIsDeletable` Boolean Default 0 Not Null Comment 'Признак запрещения удаления записи',
Foreign Key (`biVoucherTypeID`) References `tbVoucherTypes` (`biID`),
Foreign Key (`biVPNServiceID`) References `tbVPNServices` (`biID`))
ENGINE=InnoDB Default CharSet=utf8 Auto_Increment=0 Encryption = 'Y' Comment='Список связок типов ваучеров с услугами VPN';
Таблица 2:
Create Table If Not Exists `tbVoucherTypeEMailServiceLinks`
(`biID` BigInt UnSigned Not Null Primary Key Auto_Increment Comment 'Уникальный идентификатор',
`biVoucherTypeID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор типа ваучера',
`biEMailServiceID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор услуги VPN',
`vcRemark` VarChar(2000) Default '…' Not Null Comment 'Комментарий',
`bIsDeletable` Boolean Default 0 Not Null Comment 'Признак запрещения удаления записи',
Foreign Key (`biVoucherTypeID`) References `tbVoucherTypes` (`biID`),
Foreign Key (`biEMailServiceID`) References `tbEMailServices` (`biID`))
ENGINE=InnoDB Default CharSet=utf8 Auto_Increment=0 Encryption = 'Y' Comment='Список связок типов ваучеров с услугами электронной почты';
Таблица 3:
Create Table If Not Exists `tbVoucherTypeFSServiceLinks`
(`biID` BigInt UnSigned Not Null Primary Key Auto_Increment Comment 'Уникальный идентификатор',
`biVoucherTypeID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор типа ваучера',
`biFSServiceID` BigInt UnSigned Default 0 Not Null Comment 'Идентификатор услуги VPN',
`vcRemark` VarChar(2000) Default '…' Not Null Comment 'Комментарий',
`bIsDeletable` Boolean Default 0 Not Null Comment 'Признак запрещения удаления записи',
Foreign Key (`biVoucherTypeID`) References `tbVoucherTypes` (`biID`),
Foreign Key (`biFSServiceID`) References `tbFSServices` (`biID`))
ENGINE=InnoDB Default CharSet=utf8 Auto_Increment=0 Encryption = 'Y' Comment='Список связок типов ваучеров с услугами файлового хранилища';
Представление:
Create Or Replace View `vwVoucherTypeServiceLinks`
As
Select
A.`biID`,
0 As tiServiceType,
A.`biVoucherTypeID`,
A.`biVPNServiceID` As biServiceID,
A.`vcRemark`,
A.`bIsDeletable`,
B.`vcName` As vcVoucherTypeName,
C.`vcName` As vcServiceName
From
`tbVoucherTypeVPNServiceLinks` A,
`tbVoucherTypes` B,
`tbVPNServices` C
Where
A.`biID` > 0
And B.`biID` = A.`biVoucherTypeID`
And C.`biID` = A.`biVPNServiceID`
Union All
Select
A.`biID`,
1 As tiServiceType,
A.`biVoucherTypeID`,
A.`biEMailServiceID` As `biServiceID`,
A.`vcRemark`,
A.`bIsDeletable`,
B.`vcName` As vcVoucherTypeName,
C.`vcName` As vcServiceName
From
`tbVoucherTypeEMailServiceLinks` A,
`tbVoucherTypes` B,
`tbEMailServices` C
Where
A.`biID` > 0
And B.`biID` = A.`biVoucherTypeID`
And C.`biID` = A.`biEMailServiceID`
Union All
Select
A.`biID`,
2 As tiServiceType,
A.`biVoucherTypeID`,
A.`biFSServiceID` As `biServiceID`,
A.`vcRemark`,
A.`bIsDeletable`,
B.`vcName` As vcVoucherTypeName,
C.`vcName` As vcServiceName
From
`tbVoucherTypeFSServiceLinks` A,
`tbVoucherTypes` B,
`tbFSServices` C
Where
A.`biID` > 0
And B.`biID` = A.`biVoucherTypeID`
And C.`biID` = A.`biFSServiceID`;
Программа валится на поле`bIsDeletable`. И какой из ваших "либо" тут мог сработать? Сложный селект "Select * From `vwVoucherTypeServiceLinks`" или разные типы полей?