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 :

Demande de requête multiple la plus simple possible


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Demande de requête multiple la plus simple possible
    Bonsoir tout le monde !

    Je m'adresse à vous car je butte sur une requête SQL costaud que je dois placer. Je précise que cette requête ne concerne qu'un espace administrateur, par conséquent elle n'est pas publique et sert de mise à jour, si on veut, à exécuter périodiquement.


    Voici deux tables.
    Table 1 : `a_6-monnaie`
    Table 2 : `b_6-monnaie`

    Dans la première, plus de 20.000 lignes d'enregistrement, elle est figée, c'est typiquement une base de donnée fixe.
    Elle présente une ID fixe et unique, incrémenté, la ID_Monnaie.

    La deuxième est un peu plus complexe. Pour chaque membre inscrit, son lot de lignes, correspondant à la table 1. Vous l'aurez compris, il peut y avoir au maximum autant d'enregistrement que dans la table 1 x le nombre d'utilisateurs. Ceci peut donner une BDD plutot conséquente.

    Lors d'enregistrements, chaque utilisateur ajoute une partie des données de la table 1 dans la table 2 (avec son ID user accroché), cette partie correspond à un ID "plus élevée" (ID_Section par exemple) et peut concerner un ensemble de plusieurs centaines de lignes. Ces données peuvent ensuite être modifiées ligne par ligne ou groupe de ligne par groupe de ligne.

    Or, je peux rajouter de ci de là quelques lignes de mise à jour, concernant une section déjà présentée, et sans aucun doute, déjà enregistrée dans la table 2 par un ou plusieurs utilisateurs.

    Afin que ce soit plus simple voyons un exemple :


    Enregistrement dans la table 1 :
    #1 - ID_Section = 100 - ID_Monnaie = 1 -
    #2 - ID_Section = 100 - ID_Monnaie = 2 -
    #3 - ID_Section = 153 - ID_Monnaie = 3 -

    Mon utilisateur veut sélectionner uniquement la Section 100 et place dans la table 2 :
    #1 - ID_Section = 100 - ID_Monnaie = 1 -
    #2 - ID_Section = 100 - ID_Monnaie = 2 -

    Maintenant, je dois ajouter dans la table 1, après cet enregistrement, d'autres données, la table 1 devient :
    #1 - ID_Section = 100 - ID_Monnaie = 1 -
    #2 - ID_Section = 100 - ID_Monnaie = 2 -
    #3 - ID_Section = 153 - ID_Monnaie = 3 -
    #4 - ID_Section = 100 - ID_Monnaie = 4 -
    #5 - ID_Section = 100 - ID_Monnaie = 5 -
    #6 - ID_Section = 148 - ID_Monnaie = 6 -

    Ce que je veux :
    Avoir une requete pour que les enregistrements #4 et #5 soient placé dans la Table 2 pour tous les utilisateurs n'ayant pas encore ces données dans ladite table, bien sur pour ceux n'acceptant que la section 100.

    Ce que je faisais jusqu'à présent :
    Un INSERT dans la *Table 1* d'un SELECT where ID_Section = 100 et ID_Monnaie Not In *Table 2*

    Ma requête est interrompue.

    Y a t-il un moyen plus simple ? Même en plusieurs requêtes simultanées ?

    Merci d'avance pour vos réponses !


    // Les deux tables :

    Table 1 :
    # Colonne Type Interclassement Attributs Null Défaut Extra Action
    1 ID_Monnaie int(6) Non Aucune AUTO_INCREMENT plus
    2 ID_Type int(6) Non Aucune plus
    3 ID_Section int(10) Non Aucune plus
    4 ID_Pays int(10) Non Aucune plus
    5 ID_Region int(11) Non Aucune plus
    6 ID_Continent int(11) Non Aucune plus



    Table 2 :
    1 ID int(10) Non Aucune AUTO_INCREMENT plus
    2 Millesime varchar(50) latin1_swedish_ci Non 0 plus
    3 ID_Continent int(10) Non 0 plus
    4 ID_Region int(10) Non 0 plus
    5 ID_Pays int(10) Non 0 plus
    6 ID_Section int(10) Non 0 plus
    7 ID_Type int(10) Non 0 plus
    8 ID_Monnaie int(10) Non 0 plus
    10 Pseudo int(10) Non 0 plus

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Citation Envoyé par Blancos Voir le message
    // Les deux tables :

    Table 1 :
    # Colonne Type Interclassement Attributs Null Défaut Extra Action
    1 ID_Monnaie int(6) Non Aucune AUTO_INCREMENT plus
    2 ID_Type int(6) Non Aucune plus
    3 ID_Section int(10) Non Aucune plus
    4 ID_Pays int(10) Non Aucune plus
    5 ID_Region int(11) Non Aucune plus
    6 ID_Continent int(11) Non Aucune plus



    Table 2 :
    1 ID int(10) Non Aucune AUTO_INCREMENT plus
    2 Millesime varchar(50) latin1_swedish_ci Non 0 plus
    3 ID_Continent int(10) Non 0 plus
    4 ID_Region int(10) Non 0 plus
    5 ID_Pays int(10) Non 0 plus
    6 ID_Section int(10) Non 0 plus
    7 ID_Type int(10) Non 0 plus
    8 ID_Monnaie int(10) Non 0 plus
    10 Pseudo int(10) Non 0 plus
    Pour commencer par le début rien ne vous choque déjà ici ?
    (Je vais vraiment finir Moine ou Bûcheron à force....)


  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je ne suis pas expert hélas. Qu'est ce qui choque ?

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Vous n'avez pas participé à la conception, n'est-ce pas ?


  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Si j'ai tout fait, suivant les conseils d'un ami. Peut-on en discuter sur skype ? Minnowien est mon skype. Merci !

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    apparemment nan

    Si j'ai tout fait
    Table 1 :
    # Colonne Type Interclassement Attributs Null Défaut Extra Action
    1 ID_Monnaie int(6) Non Aucune AUTO_INCREMENT plus
    2 ID_Type int(6) Non Aucune plus
    3 ID_Section int(10) Non Aucune plus
    4 ID_Pays int(10) Non Aucune plus
    5 ID_Region int(11) Non Aucune plus
    6 ID_Continent int(11) Non Aucune plus
    Table 2 :
    1 ID int(10) Non Aucune AUTO_INCREMENT plus
    2 Millesime varchar(50) latin1_swedish_ci Non 0 plus
    3 ID_Continent int(10) Non 0 plus
    4 ID_Region int(10) Non 0 plus
    5 ID_Pays int(10) Non 0 plus
    6 ID_Section int(10) Non 0 plus
    7 ID_Type int(10) Non 0 plus
    8 ID_Monnaie int(10) Non 0 plus
    10 Pseudo int(10) Non 0 plus

  7. #7
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Bon ! En faisant fi des erreurs de conception et des conversions implicites relevées par chtulus, inspirez-vous de qqch de ce type :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     insert into T2  (...) (select ID_Section, ID_Monnaie from Table_1 T1 where T1.ID_Section=100 minus  select ID_Section, ID_Monnaie from Table_2 T2 where T2.ID_Section=100)

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Sauf que visiblement c'est du MySQL (AUTO_INCREMENT) et que MySQL ne connaît pas MINUS.

    C'est sûr que la conception est à revoir totalement !

    Et vu la structure redondante du machin, pas envie de chercher la requête !

Discussions similaires

  1. animation 3d la plus simple possible
    Par kharg dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 29/01/2010, 16h24
  2. Assignations multiples de façon plus simple
    Par cincap dans le forum Débuter
    Réponses: 10
    Dernier message: 13/02/2009, 13h55
  3. [PHP 5.0] Requête plus simple et plus "jolie"
    Par Equinoxe5 dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2009, 15h13
  4. Réponses: 4
    Dernier message: 04/11/2007, 10h36
  5. Plus simple si possible la gestion des dates!
    Par kenny49 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 29/06/2006, 16h52

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