Bonjour,
je migre une appli qui était en MySQL en MSSQL.
je dois donc reprendre toutes les requêtes utilisant "limit".
je me sers d'une fonction trouvé sur le site :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function getLimitMSSQL($start, $nbrows, $fields, $table, $where, $orderfield, $sort = 'asc') { $top = $start + $nbrows ; if ( $sort == 'asc' ) { $asc = 'asc' ; $desc = 'desc' ; } else { $asc = 'desc' ; $desc = 'asc' ; } $sql = '' ; $sql = "SELECT * FROM ( SELECT TOP $nbrows $fields from ( SELECT TOP $top $fields FROM $table $where ORDER BY $orderfield $asc ) tbl1 ORDER BY $orderfield $desc ) as tbl2 order by $orderfield $asc " ; return $sql ; }
Ca fonctionne bien pour certaines requêtes.
mais là j'ai une erreur que je ne comprends pas.
voici ma requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT * FROM ( SELECT TOP 50 UTILISATEUR.CODE_UTILISATEUR, UTILISATEUR.IDENTIFIANT_UTILISATEUR, CLIENTS.NOM_CLIENT, CLIENTS.CODE_CLIENT, INTERLOCUTEURS.NOM_CONTACT, VALIDITE_COMPTE.DATE_CREATION_COMPTE, TYPE_ACCES_UTILISATEUR.TYPE_ACCES_UTILISATEUR, UTILISATEUR.MOT_PASSE_UTILISATEUR, VALIDITE_COMPTE.DATE_CLOTURE_COMPTE from ( SELECT TOP 50 UTILISATEUR.CODE_UTILISATEUR, UTILISATEUR.IDENTIFIANT_UTILISATEUR, CLIENTS.NOM_CLIENT, CLIENTS.CODE_CLIENT, INTERLOCUTEURS.NOM_CONTACT, VALIDITE_COMPTE.DATE_CREATION_COMPTE, TYPE_ACCES_UTILISATEUR.TYPE_ACCES_UTILISATEUR, UTILISATEUR.MOT_PASSE_UTILISATEUR,VALIDITE_COMPTE.DATE_CLOTURE_COMPTE FROM VALIDITE_COMPTE, TYPE_ACCES_UTILISATEUR, CLIENTS, UTILISATEUR, INTERLOCUTEURS where UTILISATEUR.CODE_CONTACT=INTERLOCUTEURS.CODE_CONTACT and UTILISATEUR.CODE_VALIDITE_COMPTE=VALIDITE_COMPTE.CODE_VALIDITE_COMPTE and INTERLOCUTEURS.CODE_CLIENT=CLIENTS.CODE_CLIENT and VALIDITE_COMPTE.CODE_TYPE_ACCES_UTILISATEUR=TYPE_ACCES_UTILISATEUR.CODE_TYPE_ACCES_UTILISATEUR and VALIDITE_COMPTE.DATE_CLOTURE_COMPTE > '2006-07-03' ORDER BY CLIENTS.NOM_CLIENT asc ) tbl1 ORDER BY CLIENTS.NOM_CLIENT desc ) as tbl2 order by CLIENTS.NOM_CLIENT asc
j'obtiens ce message d'erreur :
ce que je ne comprends pas c'est que si j'isole la requête et lance seulement le "morceau" du milieu :Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'UTILISATEUR.CODE_UTILISATEUR' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'UTILISATEUR.IDENTIFIANT_UTILISATEUR' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'CLIENTS.NOM_CLIENT' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'CLIENTS.CODE_CLIENT' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'INTERLOCUTEURS.NOM_CONTACT' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'VALIDITE_COMPTE.DATE_CREATION_COMPTE' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'TYPE_ACCES_UTILISATEUR.TYPE_ACCES_UTILISATEUR' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'UTILISATEUR.MOT_PASSE_UTILISATEUR' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'VALIDITE_COMPTE.DATE_CLOTURE_COMPTE' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'CLIENTS.NOM_CLIENT' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: message: L'identificateur en plusieurs parties 'CLIENTS.NOM_CLIENT' ne peut pas être lié. (severity 16) in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Warning: mssql_query() [function.mssql-query]: Query failed in D:\www\ExtranetClient\administration\suiviUtilisateurs.php on line 175
Requête invalide
ca fonctionne !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT TOP 50 UTILISATEUR.CODE_UTILISATEUR, UTILISATEUR.IDENTIFIANT_UTILISATEUR, CLIENTS.NOM_CLIENT, CLIENTS.CODE_CLIENT, INTERLOCUTEURS.NOM_CONTACT, VALIDITE_COMPTE.DATE_CREATION_COMPTE, TYPE_ACCES_UTILISATEUR.TYPE_ACCES_UTILISATEUR, UTILISATEUR.MOT_PASSE_UTILISATEUR,VALIDITE_COMPTE.DATE_CLOTURE_COMPTE FROM VALIDITE_COMPTE, TYPE_ACCES_UTILISATEUR, CLIENTS, UTILISATEUR, INTERLOCUTEURS where UTILISATEUR.CODE_CONTACT=INTERLOCUTEURS.CODE_CONTACT and UTILISATEUR.CODE_VALIDITE_COMPTE=VALIDITE_COMPTE.CODE_VALIDITE_COMPTE and INTERLOCUTEURS.CODE_CLIENT=CLIENTS.CODE_CLIENT and VALIDITE_COMPTE.CODE_TYPE_ACCES_UTILISATEUR=TYPE_ACCES_UTILISATEUR.CODE_TYPE_ACCES_UTILISATEUR and VALIDITE_COMPTE.DATE_CLOTURE_COMPTE > '2006-07-03' ORDER BY CLIENTS.NOM_CLIENT asc ) tbl1 ORDER BY CLIENTS.NOM_CLIENT desc
mais si j'exécute tte la requête, ça plante.
je ne comprends pas du tout le msg d'erreur
au départ je pensais que avec MSSQL on ne pouvait pas utiliser la syntaxe : table.Nom de champ ('UTILISATEUR.CODE_UTILISATEUR') mais ce n'est pas ça puisque le partie du milieu fonctionne.
quelqu'un peut-il m'aider ??
merci d'avance pour votre aide.
Partager