-
Erreur 1172 avec Vue
Bonjour.
Afin de créer une vue, j'ai du écrire plusieurs fonctions de calcul. J'ai écrit les fonctions et je les ai testés de manière individuelle, et elles fonctionnent toutes.
J'ai donc entrepris d'écrire une vue, dont voici le code :
<<
CREATE VIEW systemplus.V_ACTIONS
(
ROWID,
NUMLOCAL,
NUMTELLOCAL,
PARAMETRES,
NUMTELQUIRAPPELLE,
TENTATIVES,
RAPPELDATEHEURE,
RESETTYPE,
RESETDATEHEURE,
NUMTELMOTIF,
MOTIF,
MOTIFDATEHEURE,
STATUSMODE,
DATEHEURE,
MODULECODE,
MODULEZONE,
MODULEFCT,
DUREERAPPEL,
DUREERESET
)
AS
SELECT
events_backups.id,
fct_FindRoomNumberFromRoomId (room_id),
fct_FindRoomPhoneNumber (room_id),
fct_ReturnText ('N/A'),
events_backups.event_data,
fct_ReturnText ('N/A'),
events_backups.time,
fct_FindResetType (time, room_id),
fct_FindResetDateHeure (time, room_id),
fct_ReturnText ('N/A'),
fct_FindMotif (time, room_id),
fct_FindMotifDateHeure (time, room_id),
fct_ReturnText ('N/A'),
fct_FindTimeAppelModule (time, room_id),
modules.code,
modules.zone,
fct_ReturnText ('N/A'),
fct_CalculDureeRappel (time, room_id),
fct_CalculDureeReset (time, room_id)
FROM events_backups, rooms, modules
WHERE event like 'ROOM-CALLED'
AND events_backups.room_id = rooms.id
AND rooms.module_id = modules.id
/*AND time > '2007-02-09 10:00:00'*/;
>>
Lorsque j'entre cette ligne, il me retourne le message d'erreur :
<ERROR 1172 (42000): Result consisted of more than one row>
D'après mes recherches, ceci arrive lorsque l'on utilise un SELECT ... INTO ... ce qui est le cas dans les fonctions.
J'ai l'impression que MySQL fait :
fonction_1(résultat1), fonction_1(résultat2), fonction_1(résultat3), ...
plutot que :
fonction_1(résultat1), fonction_2(résultat1), fonction_3(résultat1), ...
fonction_1(résultat2), fonction_2(résultat2), fonction_3(résultat2), ...
...
Est-ce que quelqu'un a une idée pour faire fonctionner la vue ?
Merci d'avance.
Mad Ant
-
J'ai oublié de signaler :
lorsque je décommente la dernière ligne, il fonctionne parce que la condition WHERE ne retourne alors qu'une seule ligne.
-
Up.
Personne n'a d'idée ?
-
Est-ce que vous êtes sûr que tous les SELECT ... INTO... appelés dans toutes vos fonctions retournent toujours au maximum 1 ligne ?
-
@pifor : Merci du conseil. Effectivement, je viens de remarquer que dans certains cas précis, ils ne retournent pas 1 ligne, mais plusieurs.
Je vais les retravailler.