Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2836 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL] => Elle me soûle cette requête qui veut pô marcher !!!!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] => Elle me soûle cette requête qui veut pô marcher !!!!!!

n°28015
Pentiore
Posté le 27-04-2001 à 12:13:22  profilanswer
 

salut à tous,
 
voici ma requête qui foire, Access me retourne des jolies erreurs (voir ci-dessous) :
 
UPDATE Dossiers  
SET Dossiers.NumAR =
     (SELECT NumP  
      FROM Parametres  
      WHERE CodeParametre = 'NUMAR')  // retourne 631
FROM (SELECT d.NumDossier  
      FROM Dossiers d, Clients c  
      WHERE d.CodeClient = c.CodeClient  
      AND d.EditionAR <> 0  
      AND ISNULL(d.NumAR,0) = 0) AR   // retourne une table d'environ 200 enregistrements avec le champ NumDossier
WHERE Dossiers.NumDossier = AR.NumDossier
 
J'ai testé les 2 sous-requêtes séparément, aucun problème.
 
Voici les jolis messages retournés :
 
Une fenêtre d'erreur ODBC, en premier (l'erreur ne se situe pas là, c'est parfaitement configuré)
 
Ensuite, une deuxième fenêtre :
http://pentiore2000.free.fr/MessErr.JPG
 
Comme il est dit dans le message, on a plusieurs valeurs retournées dans la table AR, mais c'est obligé....
 
Vous avez une ch'tite solution ?!?
Merci
@+


---------------
Une Porsche sinon rien.
mood
Publicité
Posté le 27-04-2001 à 12:13:22  profilanswer
 

n°28016
Mara's dad
Yes I can !
Posté le 27-04-2001 à 12:25:15  profilanswer
 

Je sais pas si c'est moi, mais je ne comprends pas la structure de ta requète :
Pour moi, un UPDATE c'est de la forme :  
UPDATE Table
SET Affectations
WHERE Condition
 
Dans la tienne, je vois :
UPDATE Table
SET Affectation
FROM ? ? ? ?
WHERE Condition
 
C'est quoi ce FROM ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°28023
thegti
La constipation se soigne ...
Posté le 27-04-2001 à 12:54:22  profilanswer
 

Dac avec Mara's dad

n°28040
wouatouwou​atou
Posté le 27-04-2001 à 13:41:44  profilanswer
 

juste un ptit coucou de compassion :)
 
Car moi aussi j'ai galéré pdt plus d deux semaines sur une requete (un select enplus :D )
 
Et j'ai posté sur le forum ki ma bie aidé.. MERCI a tous ceux ki mont répondu :jap:
 
P.S:  Met ton (select .. ) AR dans ton premier select (dans le from) et la condition Dossiers.NumDossier = AR.NumDossier dans le where du premier select aussi... ca devrai marcher. enfin jespere :D

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°28050
Pentiore
Posté le 27-04-2001 à 14:04:55  profilanswer
 

wouatouwouatou > merci je vais essayer....
 
Mara's Dad > j'ai regardé dans l'aide de SQL Server 2000, mais j'ai pas tout compris : en gros, c'est pour accéder à des informations dans des tables et lui donner comme critère (à la requête)


---------------
Une Porsche sinon rien.
n°28056
wouatouwou​atou
Posté le 27-04-2001 à 14:11:32  profilanswer
 

Oups. dsl mais javais pas bien regardé ton update :D
Essaie ca.. j'suis pas sur ke ca fonctionne mais ca devrai etre mieux :D:D
 

Code :
  1. UPDATE Dossiers 
  2. SET Dossiers.NumAR = (SELECT NumP FROM Parametres WHERE CodeParametre = 'NUMAR') WHERE Dossiers.NumDossier IN (SELECT d.NumDossier FROM Dossiers d, Clients c WHERE d.CodeClient = c.CodeClient AND d.EditionAR <> 0 AND ISNULL(d.NumAR,0) = 0)
 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°28062
Fred999
Rabat-joie
Posté le 27-04-2001 à 14:17:11  profilanswer
 

pentiore nous sort la zolie requête a écrit :

 

Code :
  1. UPDATE Dossiers
  2. SET Dossiers.NumAR =
  3.      (SELECT NumP
  4.       FROM Parametres
  5.       WHERE CodeParametre = 'NUMAR')  // retourne 631
  6. FROM (SELECT d.NumDossier
  7.       FROM Dossiers d, Clients c
  8.       WHERE d.CodeClient = c.CodeClient
  9.       AND d.EditionAR <> 0
  10.       AND ISNULL(d.NumAR,0) = 0) AR   // retourne une table d'environ 200 enregistrements avec le champ NumDossier
  11. WHERE Dossiers.NumDossier = AR.NumDossier






 
Ce que je ne comprends pas dans ta requête, c'est pourquoi tu as une sous-requête dans la partie FROM.
 
Franchement, j'ai jamais vu ça...
 
Classiquement, j'ai des update du type :

Code :
  1. update toto
  2. set    toto.champ1 = titi.champ3,
  3.        toto.champ2 = tata.champ4
  4. from
  5.        titi,
  6.        tata,
  7.        tutu
  8. where
  9. /* cuisine entre titi, tata et tutu, mais c'est interdit aux mineurs */


 
Pour moi, un FROM doit contenir une liste de tables ET CAI TOUT.
 
Maintenant, je ne connais pas Access mais le SQL standard... Access permet-il des trucs aussi tordus?

n°28063
Fred999
Rabat-joie
Posté le 27-04-2001 à 14:18:13  profilanswer
 

wouatouwouatou a écrit a écrit :

Oups. dsl mais javais pas bien regardé ton update :D
Essaie ca.. j'suis pas sur ke ca fonctionne mais ca devrai etre mieux :D:D
 

Code :
  1. UPDATE Dossiers 
  2. SET Dossiers.NumAR = (SELECT NumP FROM Parametres WHERE CodeParametre = 'NUMAR') WHERE Dossiers.NumDossier IN (SELECT d.NumDossier FROM Dossiers d, Clients c WHERE d.CodeClient = c.CodeClient AND d.EditionAR <> 0 AND ISNULL(d.NumAR,0) = 0)


 
 




 
Chuis nettement plus d'accord avec ça!!!

n°28073
Mara's dad
Yes I can !
Posté le 27-04-2001 à 14:28:01  profilanswer
 

Moi zossi !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°28075
Fred999
Rabat-joie
Posté le 27-04-2001 à 14:31:00  profilanswer
 

Haaaaa il nous fait des progrès de géant notre petit waoutou :D

mood
Publicité
Posté le 27-04-2001 à 14:31:00  profilanswer
 

n°28076
Pentiore
Posté le 27-04-2001 à 14:34:30  profilanswer
 

Je vous rassure, c'est pas moi qui ai pondu une merde pareille, mais ma mission, si je l'accepte (de toute façon je n'ai pas le choix  :fou: ), c'est de la faire tourner !!!
 
Voici une nouvelle version de "Requête qui pue v1.2" :
 
UPDATE Dossiers  
SET Dossiers.NumAR =  
     (SELECT NumP
      FROM Parametres
      WHERE CodeParametre = 'NUMAR')
 
WHERE NumDossier IN  
  (SELECT d.NumDossier  
  FROM Dossiers d, Clients c
  WHERE d.CodeClient = c.CodeClient
         AND d.EditionAR <> 0  
         AND ISNULL(d.NumAR,0) = 0)
 
 
Apparemment, c'est la même que toi watouatoutoutoua (au passage merci pour l'intéressement que tu me portes !)
mais ça plante toujours, avec le même message
aaaaarrrrrrrgggghhhh  :gun:  
 
d'autres idées ?
je cherche, je cherche


---------------
Une Porsche sinon rien.
n°28078
Pentiore
Posté le 27-04-2001 à 14:38:58  profilanswer
 

je viens de m'apercevoir d'une incohérence qui fait que c'est obligé que ça plante :
 
la sous-requête à l'intérieur du WHERE retourne plus de 200 enregistrements, alors qu'il doit trouver qu'un seul NumDossier
 
 
faut que je résolve cela....


---------------
Une Porsche sinon rien.
n°28079
Mara's dad
Yes I can !
Posté le 27-04-2001 à 14:39:16  profilanswer
 

Es-tu certain que  
SELECT NumP FROM Parametres WHERE CodeParametre = 'NUMAR'
ne retourne qu'une seule valeur ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°28082
Mara's dad
Yes I can !
Posté le 27-04-2001 à 14:42:29  profilanswer
 

A bon, alors c'est un SELECT DISTINCT qu'il de te faut, dans le IN...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°28084
Pentiore
Posté le 27-04-2001 à 14:43:04  profilanswer
 

oui, oui, bien sûr, je l'ai testée à part, elle marche nickel cette requête


---------------
Une Porsche sinon rien.
n°28086
Fred999
Rabat-joie
Posté le 27-04-2001 à 14:46:19  profilanswer
 

Tu ne pourrais pas nous donner la structure des tables et une explication fonctionnelle de la requête???
 
Tip : utilise les balises [ code ] et [ /code ] (sans les espaces) pour écrire le code dans ton message.

n°28105
Pentiore
Posté le 27-04-2001 à 15:15:54  profilanswer
 

La requête en question déclenche des Triggers sur le serveur.
Je viens de faire quelques modifs au niveau du serveur : j'ai supprimé tous ces triggers et je les ai recréés
et là oh MAGIE de l'informatique incompréhensible, ça marche !!!!!! YOUHOUHOHUOUOUOU
 
pourquoi, ça je n'en sais rien...
 
En tout cas, Merci à tous pour votre aide !


---------------
Une Porsche sinon rien.
n°28127
thegti
La constipation se soigne ...
Posté le 27-04-2001 à 15:55:08  profilanswer
 

Fred999 a écrit a écrit :

 
 
Ce que je ne comprends pas dans ta requête, c'est pourquoi tu as une sous-requête dans la partie FROM.
 
Franchement, j'ai jamais vu ça...
 
Classiquement, j'ai des update du type :

Code :
  1. update toto
  2. set    toto.champ1 = titi.champ3,
  3.        toto.champ2 = tata.champ4
  4. from
  5.        titi,
  6.        tata,
  7.        tutu
  8. where
  9. /* cuisine entre titi, tata et tutu, mais c'est interdit aux mineurs */


 
Pour moi, un FROM doit contenir une liste de tables ET CAI TOUT.
 
Maintenant, je ne connais pas Access mais le SQL standard... Access permet-il des trucs aussi tordus?




 
Pas du tout d'accord avec toi (pour une fois :) ):
1. C'est du SQL standard
2. C'est vachement utile sur les très grosses requêtes (quand t'as 25 tables à mettre dans ton from, c'est beaucoup plus pratique d'y aller par arborescence, en faisant au préalable par exemple l'arbre d'éxécution de la requête)
3. Par la suite, si la requête rame, ca permet de mettre en place de facon plus rapide un schéma d'indexation des tables, une politique de vues, tables temporaires, etc...
4. L'analyseur SQL de n'importe quel SGBD annalyse de facon similaire les deux syntaxes, donc exactement même plan d'éxécution et même performances

 

[edit]--Message édité par thegti--[/edit]

n°28135
Fred999
Rabat-joie
Posté le 27-04-2001 à 16:10:57  profilanswer
 

Alors je viens d'apprendre quelque chose.
 
Merci :jap:  
 
En fait, on n'utilise nulle part ce genre de trucs sur mon projet, alors qu'on a 419 procs stockées à ce jour...

n°28165
wouatouwou​atou
Posté le 27-04-2001 à 16:54:35  profilanswer
 

hihihihi... J'ai finalement réussi a fire ma foutu requête moi aussi.. :D:D merci a vous tous :jap:
 
'ai utilisé ce genre de truc partout dans ma requete... les select dans les from.. C le bordel mais ca tourne, alors .. :D
 
P.S: He oui, petit wouatou deviendra grand :D ... de toute facon je peux plus retrecir au point ou j'en suis :D:D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°28176
thegti
La constipation se soigne ...
Posté le 27-04-2001 à 17:15:20  profilanswer
 

:eek2:
419 procédures stockées
Une stratégie particulière non ? du genre pas faire de requêtes dans l'appli, faire que des procédures stockées ?

n°28194
Fred999
Rabat-joie
Posté le 27-04-2001 à 17:47:39  profilanswer
 

thegti a écrit a écrit :

:eek2:
419 procédures stockées
Une stratégie particulière non ? du genre pas faire de requêtes dans l'appli, faire que des procédures stockées ?




 
18 mois de développement, une équipe de 4 à 6 personnes, 150 utilisateurs quotidiens...
 
Et, effectivement, faire appel de préférence aux procédures stockées, nettement plus faciles à maintenir que la partie cliente.
Les tailles varient de 1ko à 66Ko (max autorisé par l'outil de codage SQL sous NT...), pour un total de 3.92Mo de code.

n°28198
wouatouwou​atou
Posté le 27-04-2001 à 17:53:44  profilanswer
 

Et dire ke ma requete fait 7ko a elle seule.. pfiou.. kel boulot :D:D:D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL] => Elle me soûle cette requête qui veut pô marcher !!!!!!

 

Sujets relatifs
[SQL] Trigger pour empecher d'inserer une valeur[Sql server Sybase] Bloquer exécution proc stockée sur host name
[SQL Server] Tables system[PHP] Apache - PHP - Sybase SQL Server 11...
Access; pb de création de graphique à partir d'une requête (cause sq)[SQL Server] Transaction, rollback
[ASP] C'est big urgent svp ! Requête dans tableau...[SQL Server 7 / TSQL] Export d'une table
j'ai besoin d'un coup de pousse en SQL[Php] Et Apache, des que j'ouvre IE, il veut se connecter a mon FAI
Plus de sujets relatifs à : [SQL] => Elle me soûle cette requête qui veut pô marcher !!!!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR