system
(system)
#1
Witam mam problem z takim oto zapytaniem:
SELECT CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`dane`, ' ', 124), ' ', -1) AS UNSIGNED) >> 8 & 0xFFF AS `pt`,
CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`dane`, ' ', 125 + `pt`), ' ', -1) AS UNSIGNED) AS `pos` FROM `stable` WHERE `a` = 'b';
Problem w tym że serwer nie jest w stanie znaleść pola pt
, komunikat błędu:
Unknown column 'power_type' in 'field list'
_alex
([alex])
#2
Niestety nie każdy SQL potrafi użyć zdefiniowanego pola w kolejnym wyrażeniu.
Trzeba robić brzydkie rzeczy w takich przypadkach:
SELECT CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`dane`, ' ', 124), ' ', -1) AS UNSIGNED) >> 8 & 0xFFF AS `pt`,
CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`dane`, ' ', 125 + (CAST( SUBSTRING_INDEX(SUBSTRING_INDEX(`dane`, ' ', 124), ' ', -1) AS UNSIGNED) >> 8 & 0xFFF)), ' ', -1) AS UNSIGNED) AS `pos` FROM `stable` WHERE `a` = 'b';
Radzę przemyśleć strukturę bazy danych aby nie było potrzeby w takich konstrukcjach.