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

Langage SQL Discussion :

Sql _ Week !


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Par défaut Sql _ Week !
    Bonjour à tous,

    Je souhaite extraire de la table reservations tous les enregistrements :
    - pour la voitures ayant l'immatriculation 1500wx56,
    - et pour la semaine 20.

    CREATE TABLE `reservations` (
    `id_resa` int(11) NOT NULL auto_increment,
    `nom` varchar(30) NOT NULL default '',
    `objet` varchar(30) NOT NULL default '',
    `date_deb` date NOT NULL default '0000-00-00',
    `date_fin` date NOT NULL default '0000-00-00',
    `heure_deb` time NOT NULL default '00:00:00',
    `heure_fin` time NOT NULL default '00:00:00',
    `voitures` varchar(9) NOT NULL default '0',
    `salles` int(11) NOT NULL default '0',
    `videos` int(11) NOT NULL default '0',
    `ordinateurs` int(11) NOT NULL default '0',
    `apns` int(11) NOT NULL default '0',
    PRIMARY KEY (`id_resa`),
    KEY `fk_voitures` (`voitures`),
    KEY `fk_salles` (`salles`),
    KEY `fk_videos` (`videos`),
    KEY `fk_ordinateurs` (`ordinateurs`),
    KEY `fk_apns` (`apns`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;



    SELECT *
    FROM reservations
    WHERE voitures = '1500wx56'
    AND WEEK(date_deb,1) = 20
    OR WEEK(date_fin,1)=20
    OR (WEEK(date_deb,1)< 20 AND WEEK(date_fin,1)> 20);

    Cette requete est elle correcte ?

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    est ce qu'elle renvoie ce que tu attends ?


    elle me semble bien

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    hmm j'ai peut être pas compris ce que tu voulais mais je rajouterais des parentèse

    where voiture ='..' AND (...OR..OR...OR...)

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Cela peut se simplifier avec l'opérateur BETWEEN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT    *
    FROM    reservations
    WHERE    voitures = '1500wx56'
        AND 20 BETWEEN WEEK(date_deb,1) AND WEEK(date_fin,1)
    ;
    PS : L'utilisation des balises [code] et l'indentation du code SQL rendent le message plus agréable à lire... et augmentent l'envie d'y répondre.

    Edit : En effet, je n'avais pas vu l'absence de parenthèses autour des OR, qui change le résultat de la requête...
    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.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM reservations
    WHERE voitures = '1500wx56'
    AND 20 BETWEEN WEEK(date_deb,1) AND WEEK(date_fin,1);
    Merci à tous,

    je test cette nouvelle requête et je vous tiens au courant.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Par défaut
    Elle ne me ramène pas tous les enregistrements.

    Je voudrais le résultat de ces trois requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM reservations
    WHERE voitures LIKE '1500wx56'
    AND WEEK(date_deb,1)<20
    AND WEEK(date_fin,1)>20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM reservations
    WHERE voitures LIKE '1500wx56'
    AND WEEK(date_deb,1)=20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM reservations
    WHERE voitures LIKE '1500wx56'
    AND WEEK(date_fin,1)=20;
    En n'en faisant qu'une seul si possible, merci

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    J'avais lu un peu vite.
    En effet, la requête que je t'ai proposée inverse le sens des tests.
    Ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM reservations
    WHERE voitures LIKE '1500wx56'
    AND WEEK(date_deb,1)<=20
    AND WEEK(date_fin,1)>=20
    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.

  8. #8
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Par défaut
    Après vérification avec un jeu d'enregistrement significatif, tes requêtes renvoient les bons enregistrements. Peut tu me conseiller l'une ou l'autre ?

    Une dernière question, lorsque l'année changera, par exemple
    date_deb='2007-05-21'
    date_deb='2008-05-21'

    La requête devra me retourner les enregistrements de l'année en cours seulement.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/02/2019, 14h24
  2. Réponses: 1
    Dernier message: 13/04/2008, 23h16
  3. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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