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 PHP Discussion :

jointure entre les tables php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut jointure entre les tables php
    Salut tous,
    voici j'ai deux tables
    - entreprise(id,logo,secteur...)
    - contact(idC,nomContact,id);
    Je veux afficher les id et logo des entreprises qui ne sont pas en contact avec une entreprise (ent) et appartenant au meme secteur voici ma requete qui ne me donne pas les res attendues:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static function getAllSec($secteur,$id)
    	{
    		try{
    			$oPDO = PDOConnect(DB_DSN, DB_LOGIN, DB_PASSWORD);
    	//selection des enteeprises ayant le meme secteur!
    $resultatEse=$oPDO->query("SELECT entreprise.logo,entreprise.identifiant from entreprise,contact where entreprise.secteur='$secteur' and entreprise.identifiant!='$id' and entreprise.identifiant!=contact.nomcontact");
    $resultatEse->execute();
    return $resultatEse;
    ...

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    comment suis-tu les liens entre les entreprises ?
    Avec la table contact ou entreprise ?
    Est ce que la table contact liste uniquement les contacts disponibles au sein d'une entreprise ?

    J'en profite pour te dire que le nommage des éléments en base de données est à revoir complètement. Pour le peu que tu as mis, j'ai déjà du mal à m'y retrouver, c'est dire...

    D'où sort le entreprise.identifiant

  3. #3
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut
    si une entreprise devient en contact avec une autre alors une nouvelle ligne est inserer dans la tble contact avec les valeurs idc,l'id de l'entreprise qui vient d'etre son contact,l'id de l'entreprise en question .
    id dans contact est un cle etrangere de la table entreprise

  4. #4
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut
    oui pardon le entreprise.identifiant c'est le id en fait
    je m'excuse j'ai vite ecrit

  5. #5
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    salut,
    Tu veux faire une jointure entre les 2 tables entreprise et contact mais dans ton code c'est pas le cas. voilà exemple de jointure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $resultatEse=$oPDO->query("SELECT e.logo AS logo_entreprise, e.id AS id_entreprise 
     FROM entreprise e  
    JOIN INNER contact c
    ON e.secteur = c.secteur
    WHERE 
    e.secteur = '$secteur' AND id_entrepsrise = '$id' ");
    Remarque: vous avez utilisé requete query puis execute, c'est inutile de faire une requete query puis execute. on fait comme ça lorsqu'on utilise une requete préparée. Et pour éviter les injections de la base de données il est préférable d'utiliser les requetes préparés.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = $bd->prepare("SELECT .... ");
    $req->bindValue(....); \\ pour affecter à chaque parametre de la requete sa valeur
    $req->execute();
    Pour la selection des entreprises ayant le meme secteur de travail il vaut mieux faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resultatEse=$oPDO->prepare("SELECT logo, id FROM entreprise WHERE secteur= :secteur ");
    $resultatEse->bindValue(':secteur', $secteur, PDO::PARAM_STR);
    $resultatEse->execute();
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Essaies ceci, (avec un peu de bol) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
       entreprise.id,
       entreprise.logo,
       entreprise.identifiant 
    FROM 
       entreprise
    WHERE
       entreprise.secteur = '$secteur' 
       AND entreprise.id NOT IN (SELECT contact.idC FROM contact WHERE contact.id = $id)
       AND entreprise.id != $id

  7. #7
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut
    Merci pour votre reponse,
    Mais la table contact n'a pas un champs secteur, il figure seulement dans la table entreprise, en plus je veux pas que la req me retourne les coordonnees de l'entreprise qui est connecte ainsi ne me fait pas un retour des entreprise qui sont deja en contact avec celle connectée toujours!
    J'espere que c'est bien claire

  8. #8
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut
    Citation Envoyé par programmatrice Voir le message
    Merci pour votre reponse,
    Mais la table contact n'a pas un champs secteur, il figure seulement dans la table entreprise, en plus je veux pas que la req me retourne les coordonnees de l'entreprise qui est connecte ainsi ne me fait pas un retour des entreprise qui sont deja en contact avec celle connectée toujours!
    J'espere que c'est bien claire
    j'ai compris que tu veux joindre entre les 2 tables selon les contacts qui ne sont pas en contact avec l'entreprise malgré qu'il est dans le meme secteur que l'entreprise, j'ai mal compris? le code que tu as mis m'a causé un peu d'embrouille pour la compréhension, parce que c'est pas clair les champs des 2 tables ainsi que tu as mis en commentaire que tu veux sélectionner les differents entreprises travaillant dans le meme secteur (ceci n'a pas de liaison avec la table contact. )
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Une version plus optimisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT 
       entreprise.id,
       entreprise.logo,
       entreprise.identifiant 
    FROM 
       entreprise
          LEFT OUTER JOIN contact ON entreprise.id = contact.idC AND contact.id = $id
    WHERE
       entreprise.secteur = '$secteur' 
       AND entreprise.id != $id
       AND contact.idC IS NULL

  10. #10
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 137
    Points : 40
    Points
    40
    Par défaut
    Ok je vais commencer à zero: voila les 2 tables
    entreprise (identifiant,logo,secteur,...)
    contact(idc,nomContact,identifiant)
    j'ai la variable $sec,et $id(l'identifiant de l'entreprise connecté sur mon application)
    l'entreprise connecté a des contact, elle veut chercher d'autre qui appartiennent a son meme secteur, les resultats sont tirés a partir de la table entreprise et non contact! j'ai just acceder a cette table pour ne pas faire des repetition et retourner des valeur d'une entreprise qui est deja en contact
    alors, je cherche une requete qui me fait ça et ne me retourne pas evidemment l'entreprise conecté (!=$id)
    Merci pour votre aide

Discussions similaires

  1. Jointure entre les tables
    Par l'coy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/04/2011, 09h36
  2. jointure entre les tables
    Par smiles dans le forum Hibernate
    Réponses: 4
    Dernier message: 19/04/2010, 17h31
  3. ERP Movex - jointure entre les tables CINACC et FGLEDG
    Par cami_lori dans le forum Autres ERP
    Réponses: 0
    Dernier message: 22/06/2009, 16h14
  4. Jointure entre les tables
    Par zalalus dans le forum Débuter
    Réponses: 3
    Dernier message: 15/04/2009, 09h03
  5. Jointure entre les tables
    Par zaac01 dans le forum Outils
    Réponses: 1
    Dernier message: 03/12/2007, 15h26

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