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 :

liens entre table


Sujet :

Langage SQL

  1. #1
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut liens entre table
    bonjour tous le monde!


    j'ai une table clients et une table service -liées par l'id/id_user
    un client peut avoir plusieurs service

    'oilou, j' ai fais ceci pour mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mysql_query("CREATE TEMPORARY TABLE dist_serv AS SELECT 
    DISTINCT date_relance_service, id_user FROM service") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( 
    `date_relance_service` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( 
    `id_user` ) ") or die(mysql_error());


    ce qui ce traduit par ceci :

    (-'tention, hein, c'est du fait maison tout ca, la...)
    voir ce que contient ma table dist_serv et la problematique
    -en fait, dist_serv n'est qu'une selection de la table service

    si quelqu un savait quoi faire, ca serait EXtremement gentil de me le dire

    d'avance merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Essayez ceci, ça vous donnera la requête de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select
        s.id_user,
        s.date_relance_service,
        max(s.nbparticipant)
    from
        service s
    group by
        s.id_user,
        s.date_relance_service

  3. #3
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    merci, mais maintenant, ca affiche un message d'erreur :
    "La clé 'nbparticipant' n'existe pas dans la table"

    alors que j'ai bien fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	mysql_query("CREATE TEMPORARY TABLE dist_serv AS SELECT
        s.id_user,
        s.date_relance_service,
        max(s.nbparticipant)
    FROM
        service s
    GROUP BY
        s.id_user,
        s.date_relance_service") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( `date_relance_service` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( `id_user` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( `nbparticipant` ) ") or die(mysql_error());

    pourquoi siouplais?

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    "max(nbparticipant)", ça donne pas une colonne "nbpartitipant"...

    Dans ton SELECT qui crée la table, utilise "AS lenomdecolonne" pour aliaser, et donc définir le nom de la colonne cible.

  5. #5
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    bonne idee


    et donc je créé plusieurs tables -histoire de pas s'emmeler les pinceaux, et mysql supporte tres bien les create table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql_query("CREATE TEMPORARY TABLE dist_serv_temp AS SELECT DISTINCT id_user,date_relance_service FROM service ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv_temp` ADD INDEX ( `date_relance_service` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv_temp` ADD INDEX ( `id_user` ) ") or die(mysql_error());
    	mysql_query("CREATE TEMPORARY TABLE max_nb_part AS SELECT id_user,date_relance_service,MAX(nbparticipant) AS nbparticipant FROM service GROUP BY id_user,date_relance_service HAVING MAX(nbparticipant)")or die(mysql_error());
    		mysql_query("ALTER TABLE `max_nb_part` ADD INDEX ( `date_relance_service` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `max_nb_part` ADD INDEX ( `id_user` ) ") or die(mysql_error());
    	mysql_query("CREATE TEMPORARY TABLE dist_serv AS SELECT ds.id_user,mnb.nbparticipant,ds.date_relance_service FROM dist_serv_temp ds LEFT JOIN max_nb_part mnb ON mnb.id_user=ds.id_user AND mnb.date_relance_service=ds.date_relance_service")or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( `date_relance_service` ) ") or die(mysql_error());
    	mysql_query("ALTER TABLE `dist_serv` ADD INDEX ( `id_user` ) ") or die(mysql_error());

    et maintenant ca marche!!!!!!!



    merci pour votre aide, ca aide super!!!

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

Discussions similaires

  1. [SQL2005][SSIS] Import Excel et liens entre tables
    Par tehes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/11/2007, 15h23
  2. Réponses: 0
    Dernier message: 10/09/2007, 12h20
  3. [XI] Problème de liens entre table
    Par bbussy dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 14/03/2007, 17h07
  4. Pb de liens entre table pour une requête
    Par syldudu dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/08/2006, 18h27
  5. Lien entre tables
    Par yves12 dans le forum Access
    Réponses: 7
    Dernier message: 31/07/2006, 18h29

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