Question sur SQL
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Question sur SQL



  1. #1
    maestro1303

    Talking Question sur SQL


    ------

    Bonjour à tous,

    Je suis plutot un débutant dans sql server et aussi de sql. Seulement je crois pouvoir bien vous présenter mon problème:

    J'ai quatre tables ayant la même structure

    code_prduit | pix| date_validite| Nom_produit

    Chaque table correspond à l'offre d'un pays donné. pour chaque produit le code ne varie jamais d'un pays à un autre donc d'une table à une autre le code est unique!!

    exemple illustratif:

    table T1
    |0112|0.235|20070931|abcsekj|
    |0102|0.225|20070931|abkdekj|
    |0101|0.035|20070931|abrdekj|
    |0100|0.135|20070831|amcdekj|
    |0151|0.235|20070731|ajcdekj|
    |0161|0.244|20070731|aucdekj|
    |0331|0.435|20071031|mbcdekj|
    |4111|0.535|20071231|lbcdekj|
    |1111|0.635|20071031|ibcdekj|
    |8112|0.235|20071131|ubcuekj|
    |0112|0.135|20070931|ybcoekj|
    |0882|0.225|20070931|fbcdekj|


    table T2
    |0112|0.335|20070931|odjodho|
    |1111|0.035|20070931|abmdek|
    |2222|0.935|20070931|abkdekt|
    |0151|0.435|20070931|abrdekr|
    |8112|0.135|20071131|abfuekg|
    |0331|0.435|20071031|abddek|
    |3331|0.535|20071031|abgdek|
    |0882|0.125|20070931|fbcdekj|
    |0992|0.035|20070931|xbcdekj|
    |0882|0.025|20070931|fbcdekj|


    table T3
    |0992|0.235|20070931|xbcdekj|
    |0882|0.225|20070931|fbcdekj|
    |0771|0.035|20070931|ybcdekj|
    |0100|0.135|20070831|gbcdekj|
    |0112|0.335|20070931|odjodho|
    |1111|0.135|20070931|abmdek|
    |2222|0.035|20070931|abkdekt|
    |0151|0.135|20070931|abrdekr|

    table T4
    |0100|0.135|20071031|abhdek|
    |0112|0.535|20071031|abddek|
    |0992|0.535|20071031|absdgk|
    |8112|0.035|20071031|abHddk|
    |0151|0.235|20070931|abrdekr|
    |8112|0.095|20071131|abfuekg|
    |0331|0.835|20071031|abddek|
    |0992|0.265|20070931|xbcdekj|
    |0882|0.245|20070931|fbcdekj|


    Je voudrais avoir une table R regroupant les tous ces résultats de la façon suivante:

    pour chaque code présent dans une quelconque des 4 tables je voudrais avoir

    code_prduit | prix T1| prix T2| prix T3| prix T4|inf(date_validite)| Nom_produit

    Si le produit ne figure pas dans T4(par exemple) j'attribue une valeur 100 à son "prix T4" ou je laisse vide son "prix T4". Je fais la même chose quand il n'est pas présent dans T2 etc...

    En résumé je veux que la table R me récapitule les intersections des 4 Tables, les différences symetriques etc... pour ne perdre aucune information et tout fusionner dans R.

    Je ne sais pas faire celà quelqu'un peut il m'aider?

    Merci infiniment!

    -----

  2. #2
    JPL
    Responsable des forums

    Re : Question sur SQL

    J'ai séparé ce message et changé le titre pour plus d'efficacité.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    maestro1303

    Re : Question sur SQL

    Citation Envoyé par JPL Voir le message
    J'ai séparé ce message et changé le titre pour plus d'efficacité.
    MERCI beaucoup JPL

  4. #4
    invitec7217a00

    Re : Question sur SQL

    Bonjour,
    tout d'abord, ton exemple illustratif n'est pas correct car le produit de code 0112 n'a pas la même valeur dans les tables T1 et T2, je suppose que le problème n'apparait pas dans la vraie base de données.
    ensuite, je voudrais te demander si tu ne penses pas que ce serait mieux d'avoir une table Produit {Code_produit, date_validité, nom_produit} puis une table T1, T2 et T3 contenant juste les attributs Code_produit et prix? Celà permet de ne pas avoir à se poser la question des prix nuls, et de simplifier la manoeuvre si tu dois rajouter un T4 par exemple.

    Enfin, après une soirée de réflexion acharnée, j'ai fini par trouver un code en SQL qui marche, mais qui est un peu barbare quand même (pas trouvé mieux). Il nécessite par contre que tu rajoutes dans tes tables T1, T2 et T3 une ligne avec Code_produit='' (chaine vide) et que tu mette dans prix la valeur quand un produit est absent
    ce qui donnera : | 0 | |
    ensuite tu lances cette commande, qu'il faut peut-être modifier un peu car je l'ai testée sous MySQL, mais qui ne devrait pas être très différente sous SQL serveur (j'espère) :

    Code:
    CREATE TABLE tabFinale(
    SELECT tab.Code_produit, t1.prix, t2.prixt2, t3.prixt3, tab.date_validite, tab.Nom_produit
    
    FROM t1, t2, t3, (SELECT Code, date_validite, Nom_produit FROM t1 UNION
                      SELECT Code, date_validite, Nom_produit FROM t2 UNION
                      SELECT Code, date_validite, Nom_produit FROM t3) AS tab
    
    WHERE ((tab.Code = t1.Code AND t1.Code != '') OR (t1.Code = '' AND tab.Code NOT IN (SELECT Code FROM t1)))
      AND ((tab.Code = t2.Code AND t1.Code != '') OR (t2.Code = '' AND tab.Code NOT IN (SELECT Code FROM t2)))
      AND ((tab.Code = t3.Code AND t1.Code != '') OR (t3.Code = '' AND tab.Code NOT IN (SELECT Code FROM t3)))
    )
    Voilà, comme je l'ai dit, il y a probablement un moyen plus joli de faire ça, mais je ne l'ai pas, en tout cas j'espère que ça te dépannera

  5. A voir en vidéo sur Futura
  6. #5
    invitec7217a00

    Re : Question sur SQL

    Ah désolé j'avais pas vu mais pense à modifier les endroits où j'ai écrit Code au lieu de Code_produit bien sûr ^^

Discussions similaires

  1. SQL et JavaScript
    Par guigui-x dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 16/05/2007, 13h05
  2. Problème SQL
    Par invitec316e987 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/03/2007, 10h38
  3. Une petite question SQL/DB2
    Par azt dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/02/2007, 21h55
  4. help en sql
    Par invitebb36e395 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/12/2005, 15h58
  5. Requete SQL
    Par invite4a3050ae dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 14/05/2004, 12h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.