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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Bloqué par une requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bloqué par une requete SQL

n°1785067
Kestouf
Posté le 10-09-2008 à 15:34:52  profilanswer
 

Bonjour,
J'ai 2 table:
----LICENCE-----
      licence_id
      licence_status
      ....
 
 
----INSTALLATION---
        install_id
        install_id_licence
        install_Pc
       ....
 
La table Licence regroupe toutes les licences connu
la table INSTALLATION regroupe les installation des licence sur les PC.
 
 
Je voudrais faire une une requête pour que:
si l'ID d'une licence n'est pas installé sur un PC que son stratut passe en "libre"  
si l'ID d'une licence est installé sur un Pc que son statut pas en "Utilisé".
 
Merci


Message édité par Kestouf le 10-09-2008 à 15:35:42
mood
Publicité
Posté le 10-09-2008 à 15:34:52  profilanswer
 

n°1785071
MagicBuzz
Posté le 10-09-2008 à 15:46:17  profilanswer
 

quel sgbd ?
 
il faudra faire un truc du genre (syntaxe pouvant évoluer d'un sgbd à l'autre, ici, Oracle) :
 
update licence
set license_status = decode((select count(*) from installation where install_id_licence = license_id), 0, 'Libre', 'Utilisé');


Message édité par MagicBuzz le 10-09-2008 à 15:46:47
n°1785077
Kestouf
Posté le 10-09-2008 à 15:59:07  profilanswer
 

MySql

n°1785079
Kestouf
Posté le 10-09-2008 à 16:03:47  profilanswer
 

J'ai une erreur.

Citation :

Erreur
 
requête SQL: Documentation
 
UPDATE baroque_licences SET licence_status = decode( (
SELECT count( * )
FROM baroque_install
WHERE install_id_licence = licence_id ) , 0, 'Libre', 'Utilisé'
)
 
MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, 'Libre', 'Utilisé')' at line 2


 
 
Pour le poste j'ai simplifié les tables: la table INSTALLATION a pour vrais nom 'baroque_install' et LICENCE 'baroque_licences'


Message édité par Kestouf le 10-09-2008 à 16:05:03
n°1785084
MagicBuzz
Posté le 10-09-2008 à 16:08:55  profilanswer
 

normal, dans mysql DECODE n'a pas du tout la même signification.
 
il faut utiliser case (select ...) when 1 then 'Libre' else 'Utlisé' end

n°1785365
Kestouf
Posté le 11-09-2008 à 08:09:12  profilanswer
 

J'ai essayé, mais ne connaissant pas du tout la fonction CASE, je pense que a syntax n'est pas bon:
 
UPDATE baroque_licences SET licence_status = case(
SELECT count( * )
FROM baroque_install
WHERE install_id_licence = licence_id )when 1 then 'Libre' else 'Utilisé'

n°1785377
MagicBuzz
Posté le 11-09-2008 à 09:06:19  profilanswer
 

pour moi elle me semble bonne. à vérifier avec quelqu'un qui a mysql, moi j'ai pas ce sgbd


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

  Bloqué par une requete SQL

 

Sujets relatifs
Langage SQL commun Oracle/MySQLSortir requête SQL d'une boucle
[MySQL] Optimisation de requeteSQL Server concatener champ + chaine IMPOSSIBLE
Statistiques Php/Sql Allégéediteur requete intuitif
Word & Publipostage SQL Serverconseil pour big requete SQL
Requete SQL : C tout con, mais ca me bloque :( 
Plus de sujets relatifs à : Bloqué par une requete SQL


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