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 :

[Probleme] Comparaison 1 champs sur X tables


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [Probleme] Comparaison 1 champs sur X tables
    Bonjour a tous,

    J'ai un petit souci sur une requete que je n'arrive pas a formuler correctement.

    J'ai actuellement une table contenant X produits (+ de 10.000), la table courante est remplacer par une nouvelle table toutes les semaines et je conserve les anciennes table afin d'avoir un historique du comportement de tel ou tel produit.

    Ma demande est la suivante :

    Je voudrai Selectionner tous les produits dont le prix a été modifier au cours de la periode D à Y (D, Y et ce qu'il y'a entre; correspondant respectivement a chacune des table de ma BDD).
    Mais le prix peut avoir ete modifier la table O et pas sur les autres ...

    je suis sous MySQL 4.1.9 (easyphp).

    J'avais fait un script generant mes requêtes ce qui me donnait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     SELECT * FROM _table0 t0, _table1 t1, _table2 t2, _table3 t3 
    WHERE t0.nom_categorie = 'pouet' 
    AND t1.nom_categorie = 'pouet' 
    AND t2.nom_categorie = 'pouet' 
    AND t3.nom_categorie = 'pouet' 
    AND t1.product_id = t0.product_id 
    AND t2.product_id = t0.product_id 
    AND t3.product_id = t0.product_id 
    AND t1.prix_unitaire != t0.prix_unitaire 
    OR t2.prix_unitaire != t0.prix_unitaire 
    OR t3.prix_unitaire != t0.prix_unitaire
    Or cette requete m'affiche X fois le meme produits et passe à un suivant qu'elle repete egalement X fois au lieu de me le selectionner qu'une seule fois (quand elle ne m'annonce tout simplement pas que la table temporaire est full).

    Et forcement la requete est extremement longue au traitement :/

    Comme vous l'aurez deviner je debute ^^

    Merci d'avance a ceux qui auront le temps de m'aider un peu (et bonne année)

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    2 causes possibles:
    • tu as un produit cartésien (il manque des jointures)
    • tu as oublié des parenthèses autour du OR

    Ces 2 causes peuvent se cumuler.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Ahahah merci ...

    c'etait un probleme de parenthese apparement .. je ne savais pas qu'il en fallait, et effectivement en faisant ca .. ca marche bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     SELECT * FROM _table0 t0, _table1 t1, _table2 t2, _table3 t3
    WHERE t0.nom_categorie = 'pouet'
    AND t1.nom_categorie = 'pouet'
    AND t2.nom_categorie = 'pouet'
    AND t3.nom_categorie = 'pouet'
    AND t1.product_id = t0.product_id
    AND t2.product_id = t0.product_id
    AND t3.product_id = t0.product_id
    AND ( t1.prix_unitaire != t0.prix_unitaire
    OR t2.prix_unitaire != t0.prix_unitaire
    OR t3.prix_unitaire != t0.prix_unitaire )
    Merci a toi :p

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

Discussions similaires

  1. MySQL - Probleme avec 2 index sur une table
    Par xG-Hannibal dans le forum Outils
    Réponses: 7
    Dernier message: 31/03/2006, 14h08
  2. Comparaison de champs entre 2 tables ACCESS
    Par Proview dans le forum Access
    Réponses: 12
    Dernier message: 25/03/2006, 22h25
  3. rechercher le max d'un champ sur 2 tables
    Par rdams dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2006, 13h27
  4. selection comlexe de champs sur une table
    Par allowen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/03/2006, 15h00
  5. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21

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