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

Requêtes et SQL. Discussion :

Requête sélection spécifique


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Requête sélection spécifique
    Bonsoir bonsoir !

    Je poste ceci car cela fait un petit moment que je cogite et cherche sur internet.

    J'ai besoin de ré-organiser une base de donnée actuellement d'un parc automobile.
    Les informations utiles ici sont que je possède 3 tables importantes : Salariés, Véhicules et Conducteurs. (Y seront regroupés dans cette dernière certaines info véhicules & salariés)

    Dans la table Conducteurs se trouve TOUTES les opérations effectuées sur le parc automobile. (soit : 168)
    Ce qui signifie que pour une même immatriculation, il existe plusieurs opérations. (tel que l'attribution du véhicule, et/ou sa mise en "attente d'un conducteur")

    Mon problème :

    Je recueille les informations dans une requête, et je vois bien qu'il existe des doublons. J'aimerai juste garder les doublons dont l'ID est la plus récente.
    Nom : hahahehe.PNG
Affichages : 148
Taille : 10,9 Ko

    Sur l'exemple ci dessus, il ne me faudrait que l'enregistrement correspondant à l'ID 139.

    Je sais que le problème est bien spécifique, je n'hésiterais pas à fournir d'autre informations utiles si besoin.
    Merci d'avance !
    Bonne soirée.

  2. #2
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Salut
    A tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DLast("id","matable","id >= " & id & " AND immat = '" & immat & "' AND model = '" & model & "' AND marque = '" & marque & "' AND ops = '" & ops & "'") AS num, immat, model, marque, ops
    FROM matable
    GROUP BY DLast("id","matable","id >= " & id & " AND immat = '" & immat & "' AND model = '" & model & "' AND marque = '" & marque & "' AND ops = '" & ops & "'"), immat, model, marque, ops

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Tout d'abord, merci hyperion de ton intérêt à la discussion.

    En suite, ton code à bien permit de trier les immatriculations en fonction de leurs ID. (Mais il me manque environ 30 enregistrements, ne les aurai-t'il pas pris en compte car il s'agit des même info renseignées dedans ?)

    Cependant, ce n'étais pas exactement mon problème bien que cela permet une meilleure visibilité.

    Mon problème reste maintenant à pouvoir extraire uniquement les dernières valeurs existantes pour une immat.
    Voilà un autre exemple.
    Nom : hohohaha.PNG
Affichages : 148
Taille : 15,3 Ko

    Sur l'image ci-dessus, j'aimerais juste extraire et afficher les lignes soulignées en rouge, c'est à dire, leur entrée la plus récente possible.

    Pensez vous que cela est possible?
    Merci!

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 117
    Points : 5 244
    Points
    5 244
    Par défaut
    Bonjour,

    Il faut pour cela mettre une condition du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where num=(select max(num) from matable x where x.immatriculation=...)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Il faut pour cela mettre une condition du type :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    where num=(select max(num) from matable x where x.immatriculation=...)
    Bonjour !

    Merci de ta réponse, mais honnêtement je t'avoue ne pas avoir très bien compris.

    Voici la requête actuelle :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DLast("ID","Conducteurs","ID >= " & ID & " AND Immatriculation = '" & Immatriculation & "' AND Modèle = '" & Modèle & "' AND Marque = '" & Marque & "' AND Nom = '" & Nom & "'") AS num, Conducteurs.Immatriculation, Conducteurs.modèle, Conducteurs.marque, Conducteurs.nom
    FROM Conducteurs
    GROUP BY DLast("ID","Conducteurs","ID >= " & ID & " AND Immatriculation = '" & Immatriculation & "' AND Modèle = '" & Modèle & "' AND Marque = '" & Marque & "' AND Nom = '" & Nom & "'"), Conducteurs.Immatriculation, Conducteurs.modèle, Conducteurs.marque, Conducteurs.nom;

    Dois-je y insérer la condition WHERE ID=(); comme décris ci dessus ? Et si oui, dans ta formule, le "x" à côté de matable correspond à quoi exactement?

    Merci bien.

  6. #6
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Re,
    Je viens de tester à priori c'est ok
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, immat, model, marque, ops
    FROM Conducteurs
    GROUP BY id, immat, model, marque, ops
    HAVING id = DLast("id","Conducteurs","id >= " & [id] & " AND immat = '" & [immat] & "' AND model = '" & [model] & "' AND marque = '" & [marque] & "'")
    Images attachées Images attachées   

  7. #7
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 117
    Points : 5 244
    Points
    5 244
    Par défaut
    Je pinaille mais c'est un select sans agrégat, le group by n'a donc aucune raison d'être et having devrait être where
    Par ailleurs ça ne sert à rien de tester marque et modèle, l'immatriculation est suffisante
    Enfin le test sur l'id n'a pas trop de sens...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Conducteurs where id = DLast("id","Conducteurs","id >= "immat = '" & [immat] & "'")
    ou plus standard
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Conducteurs c where c.id=(select max(x.id) from conducteurs x where x.immat=c.immat)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour !

    Tout d'abord, merci à ceux ayant participé à la discussion, vous m'avez étés d'une grande aide !

    Merci Nico pour t'y être penché et m'avoir appris certaines choses.
    Et quand à Hyperion, ta solution fonctionne, je te remercie de m'avoir débloqué !
    Je n'aurais plus jamais ce genre de problèmes normalement, alors un grand merci !

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

Discussions similaires

  1. Requête de sélection spécifique
    Par david71 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2008, 21h40
  2. champs non accessibles dans une requête sélection
    Par Claire31 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 03/08/2006, 14h22
  3. Compter le nombre de lignes d'une requête sélection
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 13h11
  4. Requête union spécifique
    Par gregius dans le forum Access
    Réponses: 8
    Dernier message: 20/03/2006, 14h34
  5. Requête sélection : recherche par nom
    Par leeloo77 dans le forum Access
    Réponses: 7
    Dernier message: 17/02/2006, 16h39

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