Oracle SQL Decode
UlrichVonDenGluckBach
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
UlrichVonDenGluckBach Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
UlrichVonDenGluckBach Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour, très chers membres.
Me voila devant vous pour vous demander de l'aide, je suis actuellement en train de faire mon travail de diplôme et je bloque intense soit peut sur une requête SQL.
Je vous ai mis un print screen de mes tables ainsi que ma requête plus bas.
Explications :
Je suis a présent en train de faire une requête me rapportant certaine information lié a la garantie.
Une garantie peut être >assuré< soit par une entreprise ou une banque.
Pour Savoir si c'est une banque ou une entreprise qui assure ma garantie je place un flag, garantie.gar_emetteur_type, qui si il vaut "A" est une entreprise ou si "B" une banque.
Problème
Si je place mes tables : Banque et Entreprise et que j'exécute ma requête,ci-dessous, elle ne m'affiche rien. Alors que si je ne met que banque elle m'affiche les garanties avec les banque comme assurance , et vice versa.
Solution :
Faire que lorsque le garnatie.gar_emetteur_type vaut a j'ai l'ID de l'entreprise et lorsqu'il vaut b l'ID de la banque. Tout ceci avec toutes les tables.
J'ai pensé a un Decode, mais je ne mis connais que trop peu, si qqun peut m'aider, merci.
Print de mes tables
[url=http://www.noelshack.com/][img]http://www.noelshack.com/voir/130309/TPI_PS_Oracle_Table071486.png[/img][/url]
- Requête SQL sous oracle
/* Formatted on 2009/04/29 08:50 (Formatter Plus v4.8.5) */
SELECT garantie.gar_num, garantie.gar_statut, garantie.gar_date_emission,
garantie_date.gar_date_echeance, garantie_date.gar_date_verification,
garantie_date.gar_date_statut, garantie.gar_montant,
garantie.gar_emetteur_type, garantie.ban_id, garantie.ent_id
FROM garantie, garantie_date, contrat_cmd, lot_mf, banque, entreprise
WHERE ( (garantie.gar_id = garantie_date.gar_id)
AND (contrat_cmd.ctr_id = garantie.ctr_cmd)
AND (lot_mf.lot_mf_id = garantie.lot_mf_id)
AND (banque.ban_id = garantie.ban_id)
AND (entreprise.ent_id = garantie.ent_id)
AND (garantie.ctr_cmd = 213)
)
GROUP BY garantie.ctr_cmd,
garantie.gar_num,
garantie.gar_statut,
garantie.gar_date_emission,
garantie_date.gar_date_echeance,
garantie_date.gar_date_verification,
garantie_date.gar_date_statut,
garantie.gar_montant,
contrat_cmd.ctr_numero,
lot_mf.lot_mf_numero,
garantie.gar_emetteur_type,
garantie.ban_id,
garantie.ent_id
P.S. excusez moi, j'ai un peu de mal pour m'expliquer.
Me voila devant vous pour vous demander de l'aide, je suis actuellement en train de faire mon travail de diplôme et je bloque intense soit peut sur une requête SQL.
Je vous ai mis un print screen de mes tables ainsi que ma requête plus bas.
Explications :
Je suis a présent en train de faire une requête me rapportant certaine information lié a la garantie.
Une garantie peut être >assuré< soit par une entreprise ou une banque.
Pour Savoir si c'est une banque ou une entreprise qui assure ma garantie je place un flag, garantie.gar_emetteur_type, qui si il vaut "A" est une entreprise ou si "B" une banque.
Problème
Si je place mes tables : Banque et Entreprise et que j'exécute ma requête,ci-dessous, elle ne m'affiche rien. Alors que si je ne met que banque elle m'affiche les garanties avec les banque comme assurance , et vice versa.
Solution :
Faire que lorsque le garnatie.gar_emetteur_type vaut a j'ai l'ID de l'entreprise et lorsqu'il vaut b l'ID de la banque. Tout ceci avec toutes les tables.
J'ai pensé a un Decode, mais je ne mis connais que trop peu, si qqun peut m'aider, merci.
Print de mes tables
[url=http://www.noelshack.com/][img]http://www.noelshack.com/voir/130309/TPI_PS_Oracle_Table071486.png[/img][/url]
- Requête SQL sous oracle
/* Formatted on 2009/04/29 08:50 (Formatter Plus v4.8.5) */
SELECT garantie.gar_num, garantie.gar_statut, garantie.gar_date_emission,
garantie_date.gar_date_echeance, garantie_date.gar_date_verification,
garantie_date.gar_date_statut, garantie.gar_montant,
garantie.gar_emetteur_type, garantie.ban_id, garantie.ent_id
FROM garantie, garantie_date, contrat_cmd, lot_mf, banque, entreprise
WHERE ( (garantie.gar_id = garantie_date.gar_id)
AND (contrat_cmd.ctr_id = garantie.ctr_cmd)
AND (lot_mf.lot_mf_id = garantie.lot_mf_id)
AND (banque.ban_id = garantie.ban_id)
AND (entreprise.ent_id = garantie.ent_id)
AND (garantie.ctr_cmd = 213)
)
GROUP BY garantie.ctr_cmd,
garantie.gar_num,
garantie.gar_statut,
garantie.gar_date_emission,
garantie_date.gar_date_echeance,
garantie_date.gar_date_verification,
garantie_date.gar_date_statut,
garantie.gar_montant,
contrat_cmd.ctr_numero,
lot_mf.lot_mf_numero,
garantie.gar_emetteur_type,
garantie.ban_id,
garantie.ent_id
P.S. excusez moi, j'ai un peu de mal pour m'expliquer.
A voir également:
- Oracle SQL Decode
- Comment decode - Guide
- Decode ascii - Guide
- Logiciel sql - Télécharger - Bases de données
- Requête sql pix - Forum Python
- Jointure sql ✓ - Forum MySQL
1 réponse
Voila ça peu tjs aider
Au plaisir
/* Formatted on 2009/04/29 09:36 (Formatter Plus v4.8.5) */
SELECT garantie.gar_num, garantie.gar_statut, garantie.gar_date_emission,
garantie_date.gar_date_echeance, garantie_date.gar_date_verification,
garantie_date.gar_date_statut, garantie.gar_montant,
DECODE(garantie.gar_emetteur_type,'B',banque.BAN_ID,entreprise.ENT_ID)Assurance_Id,
garantie.GAR_EMETTEUR_TYPE
FROM garantie, garantie_date, contrat_cmd, lot_mf, banque,entreprise
WHERE ( (garantie.gar_id = garantie_date.gar_id)
AND (contrat_cmd.ctr_id = garantie.ctr_cmd)
AND (lot_mf.lot_mf_id = garantie.lot_mf_id)
AND (banque.ban_id(+) = garantie.ban_id)
AND (entreprise.ent_id(+) = garantie.ENT_ID)
AND (garantie.ctr_cmd = 213)
)
GROUP BY garantie.ctr_cmd,
garantie.gar_num,
garantie.gar_statut,
garantie.gar_date_emission,
garantie_date.gar_date_echeance,
garantie_date.gar_date_verification,
garantie_date.gar_date_statut,
garantie.gar_montant,
contrat_cmd.ctr_numero,
lot_mf.lot_mf_numero,
garantie.gar_emetteur_type,
garantie.ban_id,
garantie.ent_id,
banque.ban_id,
entreprise.ent_id
Au plaisir
/* Formatted on 2009/04/29 09:36 (Formatter Plus v4.8.5) */
SELECT garantie.gar_num, garantie.gar_statut, garantie.gar_date_emission,
garantie_date.gar_date_echeance, garantie_date.gar_date_verification,
garantie_date.gar_date_statut, garantie.gar_montant,
DECODE(garantie.gar_emetteur_type,'B',banque.BAN_ID,entreprise.ENT_ID)Assurance_Id,
garantie.GAR_EMETTEUR_TYPE
FROM garantie, garantie_date, contrat_cmd, lot_mf, banque,entreprise
WHERE ( (garantie.gar_id = garantie_date.gar_id)
AND (contrat_cmd.ctr_id = garantie.ctr_cmd)
AND (lot_mf.lot_mf_id = garantie.lot_mf_id)
AND (banque.ban_id(+) = garantie.ban_id)
AND (entreprise.ent_id(+) = garantie.ENT_ID)
AND (garantie.ctr_cmd = 213)
)
GROUP BY garantie.ctr_cmd,
garantie.gar_num,
garantie.gar_statut,
garantie.gar_date_emission,
garantie_date.gar_date_echeance,
garantie_date.gar_date_verification,
garantie_date.gar_date_statut,
garantie.gar_montant,
contrat_cmd.ctr_numero,
lot_mf.lot_mf_numero,
garantie.gar_emetteur_type,
garantie.ban_id,
garantie.ent_id,
banque.ban_id,
entreprise.ent_id