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 :

Sélectionnez deux tables à partir de leur guid


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut Sélectionnez deux tables à partir de leur guid
    Bonjour, je souhaite récupérer les guids (et les associés avec le champ 'name' de cette même table) de la table 'characters' à partir des guid de la table 'character_achievement', seulement je n'y arrive pas.
    Bref je vous donne ce que j'ai fais et j'espère que vous comprendriez mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `character_achievement` WHERE achievement = 457 OR achievement = 467 OR achievement = 462 OR achievement = 461 OR achievement = 463 OR achievement = 1406 OR achievement = 466 OR achievement = 1412 OR achievement = 458 OR achievement = 1410 OR achievement = 1409 OR achievement = 1405 OR achievement = 1411 OR achievement = 464 OR achievement = 1407 OR achievement = 1404 OR achievement = 1413 OR achievement = 465 OR achievement = 459 OR achievement = 1408 OR achievement = 460 ORDER BY guid desc;
    => Je sais que je n'ai pas mis d'union ni rien avec la table characters mais c'est bien ça mon problème, je n'y arrive pas.
    (la table character_achievement comporte 3champs : guid, achievement et date)

    Et je souhaite associés les guid récupérés par la table character achievement avec le champ "name" de la table characters qui elle-même comporte le champ guid et une trentaine d'autres champs sans importance.

    Donc j'ai essayé pas mal de trucs (union,..) mais étant donné mon faible niveau en sql/php (car je veux l'afficher sur un site web), je n'ai réussi qu'à faire un tableau avec le nom de l'achievement, le guid et la date mais je n'ai pas réussi à associer le guid avec le champ name de la table characters.

    Si vous voulez plus de précisions ou que j'ai mal expliqué dites le, j'essaierai d'être plus clair.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    J'ai l'impression que tu souhaites tout bêtement mettre les deux tables en jointure sur la colonne `achievement`
    Donne nous le résultat d'un shwo CREATE TABLE sur chacune des 2 tables ça pourrait aider.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut
    Vous voulez la structure ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    CREATE TABLE `characters` (
      `guid` int(11) unsigned NOT NULL default '0' COMMENT 'Global Unique Identifier',
      `account` int(11) unsigned NOT NULL default '0' COMMENT 'Account Identifier',
      `data` longtext,
      `name` varchar(12) NOT NULL default '',
      `race` tinyint(3) unsigned NOT NULL default '0',
      `class` tinyint(3) unsigned NOT NULL default '0',
      `position_x` float NOT NULL default '0',
      `position_y` float NOT NULL default '0',
      `position_z` float NOT NULL default '0',
      `map` int(11) unsigned NOT NULL default '0' COMMENT 'Map Identifier',
      `dungeon_difficulty` tinyint(1) unsigned NOT NULL default '0',
      `orientation` float NOT NULL default '0',
      `taximask` longtext,
      `online` tinyint(3) unsigned NOT NULL default '0',
      `cinematic` tinyint(3) unsigned NOT NULL default '0',
      `totaltime` int(11) unsigned NOT NULL default '0',
      `leveltime` int(11) unsigned NOT NULL default '0',
      `logout_time` bigint(20) unsigned NOT NULL default '0',
      `is_logout_resting` tinyint(3) unsigned NOT NULL default '0',
      `rest_bonus` float NOT NULL default '0',
      `resettalents_cost` int(11) unsigned NOT NULL default '0',
      `resettalents_time` bigint(20) unsigned NOT NULL default '0',
      `trans_x` float NOT NULL default '0',
      `trans_y` float NOT NULL default '0',
      `trans_z` float NOT NULL default '0',
      `trans_o` float NOT NULL default '0',
      `transguid` bigint(20) unsigned NOT NULL default '0',
      `extra_flags` int(11) unsigned NOT NULL default '0',
      `stable_slots` tinyint(1) unsigned NOT NULL default '0',
      `at_login` int(11) unsigned NOT NULL default '0',
      `zone` int(11) unsigned NOT NULL default '0',
      `death_expire_time` bigint(20) unsigned NOT NULL default '0',
      `taxi_path` text,
      `arena_pending_points` int(10) unsigned NOT NULL default '0',
      `bgid` int(10) unsigned NOT NULL default '0',
      `bgteam` int(10) unsigned NOT NULL default '0',
      `bgmap` int(10) unsigned NOT NULL default '0',
      `bgx` float NOT NULL default '0',
      `bgy` float NOT NULL default '0',
      `bgz` float NOT NULL default '0',
      `bgo` float NOT NULL default '0',
      PRIMARY KEY  (`guid`),
      KEY `idx_account` (`account`),
      KEY `idx_online` (`online`),
      KEY `idx_name` (`name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System';
    SET character_set_client = @saved_cs_client;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `character_achievement` (
      `guid` int(11) unsigned NOT NULL,
      `achievement` int(11) unsigned NOT NULL,
      `date` bigint(11) unsigned NOT NULL default '0',
      PRIMARY KEY  (`guid`,`achievement`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    SET character_set_client = @saved_cs_client;
    Screen de ce que je veux :

    Enfaite je veux remplacer 378, 173, 373,... par le nom du joueur qui se trouve dans le champ name de la table characters mais je n'y arrive pas.

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Ça devrait donner quelque chose comme ça
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT c.`name`, ca.`guid`,ca.`achievement`
    from `character_achievement` as ca
    inner join `characters` as c
    ON ca.`guid`= c.`guid`
    OERDER BY ca.`guid`,ca.`achievement`
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut
    Merci bien vous m'avez beaucoup aider j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT c.`name`, ca.`guid`,ca.`achievement`, ca.`date` FROM `character_achievement` AS ca
    INNER JOIN `characters` AS c
    ON ca.`guid`= c.`guid` WHERE achievement = 457 OR achievement = 467 OR achievement = 462 OR achievement = 461 OR achievement = 463 OR achievement = 1406 OR achievement = 466 OR achievement = 1412 OR achievement = 458 OR achievement = 1410 OR achievement = 1409 OR achievement = 1405 OR achievement = 1411 OR achievement = 464 OR achievement = 1407 OR achievement = 1404 OR achievement = 1413 OR achievement = 465 OR achievement = 459 OR achievement = 1408 OR achievement = 460 
    ORDER BY ca.`achievement

  6. #6
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Nedankinde.
    Je pense qu'il y avait plus court:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE achievement IN( 457,458,459,460,461,462,463,464,465,466,467,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413)
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2013, 23h44
  2. [MySQL] Remplir deux tables à partir des données d'une 3e table
    Par cleminute dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/09/2009, 22h06
  3. Quelle requête liera deux tables en analysant leur contenu ?
    Par Monbasinstinct dans le forum Access
    Réponses: 14
    Dernier message: 13/04/2006, 18h03
  4. Remplir deux tables a partir d'un formulaire
    Par Treuze dans le forum Access
    Réponses: 2
    Dernier message: 07/01/2006, 20h51
  5. lier deux tables a partir dun calcul!!
    Par marie10 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/04/2004, 09h44

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