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 MySQL Discussion :

[Requête] Problème de soustraction


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut [Requête] Problème de soustraction
    Bonjour à tous,

    Je développe un petit moteur de recherche pour trouver des appartements qui ne sont pas sous réservation, ma logique est donc de sélectionner tous les appartements et de soustraire tous ceux qui sont occupés pour la période demandée. J'ai donc voulu faire un EXCEPT mais ma version de MySQL est 3.23, donc ca ne marche pas et je ne sais pas comment faire autrement. Voici ce que je comptais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $req_Search = "
    //		SELECT * FROM Biens
    //		INNER JOIN EResa
    //		ON Biens.RefClient=EResa.RefClient // On sélectionne tous les apparts
    //		EXCEPT
    //		SELECT * FROM Biens
    //		INNER JOIN EResa
    //		ON Biens.RefClient=EResa.RefClient
    //		WHERE DateDebut < '".$DateFinRech."' 
    //		AND DateFin > '".$DateDebutRech; // Et on vire tous ceux qui sont occupés pour la période voulue

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut
    Je comprend pas bien la logique de ta requete
    Tu as essayé plus simplement ceci ? ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $req_Search = "
    //		SELECT * FROM Biens
    //		INNER JOIN EResa
    //		ON Biens.RefClient=EResa.RefClient
    //		WHERE DateDebut < '".$DateFinRech."' 
    //		AND DateFin > '".$DateDebutRech; // Et ON vire tous ceux qui sont occupés pour la période voulue

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Si je ne me trompe pas, le résultat de ta proposition renvoie les occurrences pour lesquelles les appartements sont réservées pour la période voulue (via les 2 variables concaténées) or moi je veux faire apparaitre les appartements disponibles, qui ne sont pas donc pas réservés !

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut
    Bin tu inverse tes conditions.. (> devient <= et < devient >=).

    Non ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 123
    Par défaut
    Je veux exclure ce qui sont occupés, récupérer ceux disponibles pour la période donnée et pas inclure ceux qui ont des réservations sur des réservations autres que ma période donnée en fait ^^.

  6. #6
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    J'ai peut être une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * FROM Biens
    LEFT JOIN EResa
    ON (Biens.RefClient=EResa.RefClient
    AND EResa.DateDebut < '".$DateFinRech."'
    AND EResa.DateFin > '".$DateDebutRech."')
    WHERE EResa.RefClient IS NULL
    En effet si le left join ne réussit pas les valeurs de EResa seront envoyés en tant que valeurs NULL, donc il suffit de faire la jointure avec tes réservations et de trier que ceux qui ont pas pu être joints.

    A Tester, mais ça devrais le faire .

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

Discussions similaires

  1. problème de soustraction dans une requête
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/05/2008, 22h58
  2. Problème de soustraction dans un champ
    Par Tyraelina dans le forum Access
    Réponses: 1
    Dernier message: 18/12/2005, 17h18
  3. [Requête]Problème de moyenne
    Par Angath dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/10/2005, 23h58
  4. Problème de soustraction de date
    Par remika dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/07/2005, 14h51
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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