[MySQL]Problem z zapytaniem


(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]) #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.