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 :

Grosse requête dans plusieurs tables. (JOIN)


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut Grosse requête dans plusieurs tables. (JOIN)
    C'est une table pour l'inventaire d'un parc informatique (pour info ocsinventory).
    J'ai deux tables, une table principal, qui contient le nom du PC à partir duquel j'aimerais recherche toute les infos (portable, dans cet exemple).

    Et une autre table qui contient le modèle de ce PC. Ce qui permet de faire la relation entre les deux tables, c'est le champ ID dans la table Hardware, il est aussi présent dans la table accountinfo.

    voila les table, ce que j'aimerais, c'est seulement sélectionner une partie des champs, par exemple, affiche le nom du PC, le modèle et le propriétaire.

    NAME(dans hardware), TAG(dans accountinfo) et USERID(dans hardware). L'ordre importe peu.
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    
    -- Structure de la table `accountinfo`
    -- 
    CREATE TABLE `accountinfo` (
      `HARDWARE_ID` int(11) NOT NULL,
      `TAG` varchar(255) collate latin1_general_ci default 'NA',
      PRIMARY KEY  (`HARDWARE_ID`),
      KEY `TAG` (`TAG`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
    
    -- 
    -- Contenu de la table `accountinfo`
    -- 
    
    INSERT INTO `accountinfo` VALUES (2, 'Inspiron 50');
    
    -- --------------------------------------------------------
    -- Structure de la table `hardware`
    -- 
    
    CREATE TABLE `hardware` (
      `ID` int(11) NOT NULL auto_increment,
      `DEVICEID` varchar(255) collate latin1_general_ci NOT NULL,
      `NAME` varchar(255) collate latin1_general_ci default NULL,
      `WORKGROUP` varchar(255) collate latin1_general_ci default NULL,
      `OSNAME` varchar(255) collate latin1_general_ci default NULL,
      `OSVERSION` varchar(255) collate latin1_general_ci default NULL,
      `OSCOMMENTS` varchar(255) collate latin1_general_ci default NULL,
      `PROCESSORT` varchar(255) collate latin1_general_ci default NULL,
      `PROCESSORS` int(11) default '0',
      `PROCESSORN` smallint(6) default NULL,
      `MEMORY` int(11) default NULL,
      `SWAP` int(11) default NULL,
      `IPADDR` varchar(255) collate latin1_general_ci default NULL,
      `ETIME` datetime default NULL,
      `LASTDATE` datetime default NULL,
      `LASTCOME` datetime default NULL,
      `QUALITY` decimal(4,3) default '0.000',
      `FIDELITY` bigint(20) default '1',
      `USERID` varchar(255) collate latin1_general_ci default NULL,
      `TYPE` int(11) default NULL,
      `DESCRIPTION` varchar(255) collate latin1_general_ci default NULL,
      `WINCOMPANY` varchar(255) collate latin1_general_ci default NULL,
      `WINOWNER` varchar(255) collate latin1_general_ci default NULL,
      `WINPRODID` varchar(255) collate latin1_general_ci default NULL,
      `WINPRODKEY` varchar(255) collate latin1_general_ci default NULL,
      `USERAGENT` varchar(50) collate latin1_general_ci default NULL,
      `CHECKSUM` int(11) default '131071',
      PRIMARY KEY  (`DEVICEID`,`ID`),
      KEY `NAME` (`NAME`),
      KEY `CHECKSUM` (`CHECKSUM`),
      KEY `DEVICEID` (`DEVICEID`),
      KEY `ID` (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;
    
    -- 
    -- Contenu de la table `hardware`
    -- 
    
    INSERT INTO `hardware` VALUES (2, 'PORTABLE-2006-10-10-13-03-25', 'PORTABLE', 'PARIS', 'Microsoft Windows XP Professional', '5.1.2600', 'Service Pack 2', 'Intel(R) Pentium(R) 4 Mobile CPU 60GHz', 1196, 1, 256, 834, '192.168.0.107', '0000-00-00 00:00:00', '2006-10-10 15:38:43', '2006-10-10 15:38:43', 0.102, 2, 'C', 0, NULL, 'societe', 'Ri', '7version', 'clé windows xp, 'OCS-NG_windows_client_v4026', 1311);
    ps: le champ ID dans Hardware correspond à hardware_Id dans accountinfo.

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Regarde dans la doc Mysql = les jointures (JOIN)

    Tu devrais également trouver ça ici : http://mysql.developpez.com/faq/?page=SYNTAXE_JOINTURES


    J'avais vu un tuto sur développez, mais je ne sais plus où ...


    N1bus

    ça y est, je viens de le retrouver : http://sql.developpez.com/sqlaz/jointures/

  3. #3
    Membre éclairé Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Par défaut
    SELECT `hardware`.`NAME`, `hardware`.`WORKGROUP`, `hardware`.`USERID`, `hardware`.`ID`, `accountinfo`.`TAG`
    FROM (`hardware`,`accountinfo`)
    WHERE `hardware`.`ID` = `accountinfo`.`HARDWARE_ID`
    ORDER BY `hardware`.`NAME`
    Et pour appeler le résultat, il suffit de mettre le nom du champ seulement, pas ca table.

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

Discussions similaires

  1. [AC-2003] Requête sur plusieurs tables dans une seule liste
    Par tarnx dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2009, 11h36
  2. [WD12] Erreur dans une Requête avec plusieurs INNER JOIN
    Par Raphael1980 dans le forum WinDev
    Réponses: 3
    Dernier message: 12/06/2009, 15h22
  3. Réponses: 2
    Dernier message: 12/01/2008, 14h57
  4. [SQL] Une requête dans plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/12/2005, 16h23
  5. [BDE]requête dans plusieurs bases
    Par sbeu dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2004, 09h24

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