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

PHP & Base de données Discussion :

Requête sur deux tables de plusieurs à plusieurs


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut Requête sur deux tables de plusieurs à plusieurs
    Bonjours à tous

    Je suis actuellement en difficulté sur une requête qui doit afficher le nom de tous les logiciels présents sur un poste.

    En sachant qu'il y a une table logiciel une table computer et une table entre les deux pour faire la liaison.

    Il faut savoir que un logiciel peut être présent sur plusieurs poste et un poste peut avoir plusieurs logiciel.

    J'ai donc crée mes tables de cette façon :

    Code sql : 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
    CREATE TABLE software (
    	idSoft int(4) NOT NULL AUTO_INCREMENT,
    	nom varchar(255) NOT NULL,
    	version varchar(255) NOT NULL,
    	nombre int(10) NOT NULL,
    	softCat varchar(4) NOT NULL,
    	chaineDelete varchar(255) NOT NULL,
    	argBefore varchar(255) NOT NULL,
    	argAfter varchar(255) NOT NULL,
    	PRIMARY KEY (idSoft)		
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    CREATE TABLE computer (
    	idComputer int(4) NOT NULL AUTO_INCREMENT,
    	nom varchar(255) NOT NULL,
    	analyse varchar(255) NOT NULL,
    	ip varchar(20) NOT NULL,
    	os varchar(20) NOT NULL,
    	PRIMARY KEY (idComputer)	
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    CREATE TABLE softInComputer (
    	idComputer int(4) NOT NULL,
    	idSoft 	int(4) NOT NULL,
    	CONSTRAINT fkSoft FOREIGN KEY (idSoft) REFERENCES software(idSoft),
    	CONSTRAINT fkComputerSoft FOREIGN KEY (idComputer) REFERENCES computer(idComputer)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


    Mais lorsque j’exécute cette requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT software.nom, computer.nom
    FROM computer, software, softInComputer
    WHERE softInComputer.idComputer = 1

    il m'affiche tous les pc avec tous les logiciels...

    Si vous avez un peu d'aide à m'accorder...
    Merci à vous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut faire des jointure entre les tables
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT software.nom, computer.nom
    FROM computer c
    JOIN softInComputer sc ON c.idComputer = sc.idComputer
    JOIN software s ON sc.idSoft = s.idSoft
    WHERE softInComputer.idComputer = 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut
    Merci de ta réponse sabotage. Suite à ta réponse j'ai donc regarder les jointures sur internet et je n'ai pas réussi à comprendre les "c" "sc.".
    Peut tu m'expliquer?

    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ce sont seulement des alias pour s'epargner de réecrire le nom de la table en entier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut
    Tous d'abord désolée de ma réponse tardive, j'ai eu des petits imprévus.

    Donc si je comprend bien. La requête que tu me propose est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT software.nom, computer.nom
    FROM computer, software
    JOIN softInComputer ON computer.idComputer = softInComputer.idComputer
    JOIN software ON softInComputer.idSoft = software.idSoft
    WHERE softInComputer.idComputer = 1
    Car toujours impossible d'afficher se que je veux. Aucune requête ne veux s’exécuter correctement.
    Merci.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as mis deux fois la table software
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Aide pour une requête sur deux tables
    Par Andry dans le forum Développement
    Réponses: 2
    Dernier message: 05/11/2007, 07h14
  2. [Access] Fonction TOP dans une requête sur deux tables
    Par pc75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/07/2007, 09h31
  3. Requête sur deux tables et réponses en colonnes
    Par grandoc dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2006, 12h49
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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