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 :

Mettre 2 lignes en 1


Sujet :

Requêtes et SQL.

  1. #1
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut Mettre 2 lignes en 1
    Bonjour,

    Dans une table de ma base de données, j'ai un champ date, un champ heure et un champ action.
    Certaines actions sont dépendantes les unes des autres. C'est à dire que je peux avoir "allumage" puis "arret".

    Je cherche à obtenir une table avec l'allumage et l'arret correspondant sur la meme ligne.

    Exemple (allumage correspond à 1 et arret à 2) :
    Date | heure | Action
    28/05/2008 | 10h20 | 1
    28/05/2008 | 11h00 | 2
    28/05/2008 | 20h00 | 1
    29/05/2008 | 01h00 | 2
    29/05/2008 | 21h00 | 1
    30/05/2008 | 02h00 | 2

    Et j'aimerais obtenir :
    Date debut | heure debut | Date fin | Heure fin
    28/05/2008 | 10h20 | 28/05/2008 | 11h00
    28/05/2008 | 20h00 | 29/05/2008 | 01h00
    29/05/2008 | 21h00 | 30/05/2008 | 02h00

    Pour un allumage, il faudrait chercher l'arret le plus proche. J'ai cherché mais sachant que plusieurs allumages/arrets peuvent se produire le meme jour, je n'arrive pas à trouver de requete qui fasse ca...
    Si quelqu'un aurait une idée sur comment faire...

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Jette un coupe d'œil aux requêtes de la partie Source d'Access : http://access.developpez.com/sources/?page=Requete

    Starec

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut Starec et bienvenu hwoarang,

    je suppose que la prochaine étape serait d'avoir la durée de l'action?
    si c'est ca, tu peux regarder ici

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Merci à vous

    Si possible, j'aimerais pouvoir faire ca sans passer par VB. Le lien que tu m'as donné vodiem semble correspondre à ce que je cherche. Je vais vérifier ca demain...

    Merci encore

  5. #5
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Ca y est , j'ai testé et ca mache. Merci.

    Par contre, si on imagine qu'il pourrait y avoir plusieurs marches de suite sans arret ou le contraire (la table est remplie par un automate et il lui arrive de planter entre 2 etats...)

    C'est possible de gérer ca, toujours en SQL ?

    Merci

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    oui mais le problème est alors de définir ce qui est à prendre en compte.
    qd tu as:
    t1 1
    t2 1
    t3 2
    t4 2
    t5 2
    qu'elle est le départ et l'arrêt?

    t1 2
    t2 1
    s'il n'y a pas d'arrêt?

    t1 2
    t2 2
    s'il y a que des arrêts?

    ...
    il faut définir des règles...

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    A mon avis, le plus logique est d'eliminer les enregegistrements qui n'ont pas depart+arret. Autrement dit, supprimer les enregistrements dont le suivant est de meme type.

    Dans le cas :
    t1 1
    t2 1
    t3 2
    t4 2
    t5 2

    Il ne faudrait considerer que
    t2 1
    t3 2

    Mon probleme est que je ne sais pas comment faire en SQL pour faire une action en fonction de l'enregistrement précédent/suivant...

    En tout cas, merci de ton aide vodiem.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut hwoarang,

    je m'en doutais, mais je voulais être sur.

    donc prendre uniquement les 1 suivi immédiatement de 2.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select t2.instant, t2.action
    from maTable t2
    where
    (t2.action=2 and (select top 1 action from maTable t1 where t1.instant<t2.instant order by instant desc)=1) or
    (t2.action=1 and (select top 1 action from maTable t3 where t3.instant>t2.instant order by instant)=2);

  9. #9
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Merci ca semble etre ca

    De toute facon, je pense que tu m'as donné toutes les clefs qui me manquaient donc je devrais pouvoir me debrouiller maintenant. Merci

Discussions similaires

  1. [langage] mettre plusieurs lignes en commentaire
    Par perlaud dans le forum Langage
    Réponses: 7
    Dernier message: 14/04/2008, 18h35
  2. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  3. [langage] mettre plusieurs lignes en commentaire
    Par perlaud dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2004, 15h32
  4. Réponses: 2
    Dernier message: 08/08/2003, 17h30
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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