Salve a tutti,
dovrei fare un Left Join e ordinarle per posizione, questa colonna posizione è solamente nella tabella di destra ( non quella su cui ci faccio il left join). Facendo una semplice query, mi mette in modo ASC i campi che non hanno posizione ( cioè che sono null)
allora ho scritto questa query;
//mySqlWorkbench funziona
SELECT *,posizione IS NULL AS isnull
FROM `tbl_pagine`
LEFT JOIN `tbl_menu` ON tbl_pagine.id=tbl_menu.tbl_pagine_id
ORDER BY `isnull` ASC,`tbl_menu`.`posizione` ASC, `tbl_pagine`.`id` ASC
//YII
$q_pagine = Yii::app()->db->createCommand()
->select('*,posizione IS NULL AS isnull')
->from('tbl_pagine')
->leftJoin('tbl_menu', 'tbl_pagine.id=tbl_menu.tbl_pagine_id')
// ->where ('tbl_menu.posizione>0')
->order('isnull ASC,tbl_menu.posizione ASC')
->queryall();
return $q_pagine;
l’errore che mi viene generato è il seguente
ERROR IS:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'isnull' in 'order clause'. The SQL statement executed was: SELECT *, `posizione` AS `IS NULL AS isnull`
FROM `tbl_pagine`
LEFT JOIN `tbl_menu` ON tbl_pagine.id=tbl_menu.tbl_pagine_id
ORDER BY `isnull` ASC, `tbl_menu`.`posizione` ASC
cioè non conosce la colonna isNull, facendo il log leggo che scrive questa query
Querying SQL: SELECT *, `posizione` AS `IS NULL AS isnull`
FROM `tbl_pagine`
LEFT JOIN `tbl_menu` ON tbl_pagine.id=tbl_menu.tbl_pagine_id
ORDER BY `isnull` ASC, `tbl_menu`.`posizione` ASC
che non è proprio la stessa che ho scritto in mySqlWorkbench…perche mi viene modificata?
vedendo poi altre query tipo un findAll() vedo sempre nel log che viene scritta così:
Querying SQL: SELECT * FROM `tbl_pagine` `t`
che cosa è la t
?
Grazie ancora