IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Aide sur des requetes sql plus


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut Aide sur des requetes sql plus
    bonjour je suis entrain de préparer le cours sql plus j'ai un examen si quelqu'un peux m'aider sur ces requette .
    Schéma HR par defaut sur oracle
    1- Informations sur les employés dont la fonction est "MANAGER" dans les départements 20 et 30
    2- Liste des employés qui n'ont pas la fonction "MANAGER" et qui ont été embauchés en 81
    3- Liste des employés ayant un "M" et un "A" dans leur nom
    4- Liste des employés ayant deux "A" dans leur nom
    5- Liste des employés ayant une commission
    6- Liste des noms, numéros de département, jobs et dates d'embauches, triés par :
    - numéro de département croissant,
    - ordre alphabétique des jobs,
    - ancienneté croissante (les derniers embauchés d'abord)

    réponse
    voila ce que j'ai fais mais je sais pas si c'est correct ou pas
    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where job_id in (select job_id from employees where upper(job_id)='AC_MGR' and department_id in (20,30)  )
    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where job_id not in ('AC_MGR') and tochar(hire_date,'yy')=81.
    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where last_name like '%A%' and '%M%'
    4- je sais pas
    5-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where commision_pct is not null
    6-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select last_name , employee_id,job_id,hire_date order by department_id asc , job_id dsc , hire_date dsc.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    1 : Il n'est pas nécessaire de passer par une sous-requête.
    2 : L'opréateur IN est associé à une liste. S'il n'y a qu'une valeur à comparer, l'opérateur = est préférable.
    3 : L'expression last_name like '%A%' and '%M%' est invalide.
    4 : Cherche encore un peu
    5,6 : Pas d'erreur à premmière vue.

    C'est juste un avis sur la syntaxe. Je ne connais pas la structure et le contenu de tes tables.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    1 : Il n'est pas nécessaire de passer par une sous-requête.
    2 : L'opréateur IN est associé à une liste. S'il n'y a qu'une valeur à comparer, l'opérateur = est préférable.
    3 : L'expression last_name like '%A%' and '%M%' est invalide.
    4 : Cherche encore un peu
    5,6 : Pas d'erreur à premmière vue.

    C'est juste un avis sur la syntaxe. Je ne connais pas la structure et le contenu de tes tables.
    mercii pour ces conseiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1-select * from employees where upper(job_id)='AC_MGR' and department_id in(20,30)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2-select * from employees where job_id <> ('AC_MGR') and to_char(hire_date,'yy')=81.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3-select * from employees where last_name like '%A%' and last_name like '%M%'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    4-select * from employees where last_name like '%A%%A%'

    pour la 6éme question elle s'excute pas je pense qu'on peux pas faire un order by asc et dsc en meme temp je sais pas comment faire et la 4éme question marche pas aussi

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par MR-SMOOT Voir le message
    pour la 6éme question elle s'excute pas je pense qu'on peux pas faire un order by asc et dsc en meme temp je sais pas comment faire et la 4éme question marche pas aussi
    Si, mais votre order by doit correspondre à des colonnes du select

    Pour le 4, LOCATE devrait convenir

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Si, mais votre order by doit correspondre à des colonnes du select

    Pour le 4, LOCATE devrait convenir
    Pour le order by c'est ce que j'ai fais mais ça ne marche pas
    LOCATE j'ai pas bien compris j'ai fais une petite recherche j'ai trouver que c'est une fonction qui donne l'index je sais pas à quoi ça va servir

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Pour le order by, le mot clé est desc, et non dsc.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par Emmanuel R Voir le message
    Pour le order by, le mot clé est desc, et non dsc.
    c'est vrai merci
    pour la question 4 j'ai tester sa et ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where last_name like '%A%A%'
    merci

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT LOCATE('X', 'GZEIX5FDQXX15R') AS PREMS                          
          ,LOCATE('X', 'GZEIX5FDQXX15R', LOCATE('X', 'GZEIX5FDQXX15R')+1)  
           AS DEUZE
    Résultat :

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT LOCATE('X', 'GZEIX5FDQXX15R') AS PREMS                          
          ,LOCATE('X', 'GZEIX5FDQXX15R', LOCATE('X', 'GZEIX5FDQXX15R')+1)  
           AS DEUZE
    Résultat :
    la question demande de lister les employés ayant deux "A" dans leur nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where last_name like '%A%A%'
    bon j'ai trouver la reponse et merci

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par MR-SMOOT Voir le message
    la question demande de lister les employés ayant deux "A" dans leur nom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from employees where last_name like '%A%A%'
    bon j'ai trouver la reponse et merci
    Certes, mais j'indiquai le mode opératoire, et non la solution, dans le cas où vous ne voudriez que 2 et seulement 2 "A"
    Car la solution like prend aussi les lignes avec 3 "A" ou plus

    La requete avec locate donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COL1, COL2,... ,COLN 
    FROM MATABLE
    WHERE  LOCATE('A', XXNOM) > 0                                            
      AND  LOCATE('A', XXNOM, LOCATE('A', XXNOM)+1) > 0                      
      AND  LOCATE('A', XXNOM, LOCATE('A', XXNOM, LOCATE('A', XXNOM)+1)+1)= 0
    Par contre niveau perfs, c'est pas ce qu'on fait de mieux

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 174
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Certes, mais j'indiquai le mode opératoire, et non la solution, dans le cas où vous ne voudriez que 2 et seulement 2 "A"
    Car la solution like prend aussi les lignes avec 3 "A" ou plus

    La requete avec locate donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COL1, COL2,... ,COLN 
    FROM MATABLE
    WHERE  LOCATE('A', XXNOM) > 0                                            
      AND  LOCATE('A', XXNOM, LOCATE('A', XXNOM)+1) > 0                      
      AND  LOCATE('A', XXNOM, LOCATE('A', XXNOM, LOCATE('A', XXNOM)+1)+1)= 0
    Par contre niveau perfs, c'est pas ce qu'on fait de mieux
    mercii pour la réponse je pense que Mème mon prof va pas comprendre cette requette hhh merci
    (y)

  12. #12
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est quoi ce LOCATE ? C'est pas INSTR que tu veux dire ?
    Cela dit, le LIKE est bien plus adapté.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par McM Voir le message
    C'est quoi ce LOCATE ? C'est pas INSTR que tu veux dire ?
    Cela dit, le LIKE est bien plus adapté.
    J'ai répondu pour un sujet SQL Server avec la syntaxe Oracle et inversement, ça m'apprendra à répondre en stéréo dans 2 sujets simultanément

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide sur une requete sql
    Par Neo57 dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/01/2010, 15h43
  2. Réponses: 2
    Dernier message: 19/03/2009, 15h33
  3. Aide sur une requete SQL
    Par NABIL74 dans le forum Bases de données
    Réponses: 6
    Dernier message: 17/12/2008, 18h25
  4. Besoin d'aide sur des requetes
    Par lamorkytu dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/01/2008, 05h31
  5. aide sur une requete sql
    Par digger dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/11/2006, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo