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 :

Recherche sur plusieurs tables


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut Recherche sur plusieurs tables
    bonjour tous le monde



    voila je voudrais faire une recherche avec une requete sur une table ET sur un champs d'une autre table....


    voila, j'ai table1 et table2 et table1 a 3 champs : date_relance contact et champs3
    table2 a date_relance et autrechamps

    je voudrais faire une requete sur la table1 et selectionner aussi le champs date_relance de table2


    donc je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $a=mysql_query("select * from table1 and table2
     where date_relance='$timestamp' and contact='premier'");
    $b=mysql_num_rows($a);echo $b;
    malheureusely =========>ca bug -ca, je m'y attendais.....



    comment faire siouplais??????

    merci

  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
    Bonjour,

    Y a t'il un lien entre les deux tables ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    hahaaaa

    non justement....et je parie qu'il faut en faire....c est ca?


    je vais voir ou trouver une doc pour faire ca-l'avais jamais fais avant...



    merci

  4. #4
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = "SELECT un.*, deux.* FROM table_un un LEFT JOIN table_deux deux ON un.champ_un=deux.champ_deux";
    tu as juste à remplacer table_un par le nom de ta table une et table_deux par le nom de ta table deux.

    les un.* ou deux.id veulent dire que j'utilise des racourcis définis lors de l'appel de la table => table_un un ou bien table_deux deux

    exemple, en faisant un.id, je sélectionne l'id de la table une.
    en faisant un.*, je séléctionne tout de la table une.

    dans cet exemple, champ_un et champ_deux doivent être égaux (comme un identifiant par exemple)

    J'espère que j'ai bien expliqué...

  5. #5
    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
    je vais voir ou trouver une doc pour faire ca-l'avais jamais fais avant...
    Ce n'est pas un element technique mais de la facon dont sont organisées tes données.
    Comme l'indique beejeridou, il s'agit d'un champ commun aux deux tables.

    Par exemple j'ai une table utilisateur - id_utilisateur, nom_utilisateur
    et une table bureau - numero_bureau, id_utilisateur
    Je peux relier un numero_bureau et un nom_utilisateur en faisant la relation par le champ id_utilisateur.

    Pourrais-tu nous décrire plus dans le détail ce que contiennent les deux tables ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    merci beaucoup mais la j'ai du mal faire......

    je veux selectionner tous les timestamp pareils a deux tables...

    le timestamp des deux tables (clients et service) sont tous deux dans deux champs nommés pareillement 'date_relance'....

    j'ai donc fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a=mysql_query("SELECT clients.*, service.* FROM 
    clients LEFT JOIN service ON clients.date_relance=service.date_relance ");
    $b=mysql_num_rows($a);echo $b;
    or $b=5;

    et ca je sais que c est pas possible....where is my horrible mitsake please???

  7. #7
    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
    Pourrais-tu nous décrire plus dans le détail ce que contiennent les deux tables ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    oups dsl


    et bien pour faire simple voici le contenu des deux tables clients et service :

    -- Structure de la table `clients`

    CREATE TABLE `clients` (
    `id` int(11) NOT NULL auto_increment,
    `contact` text NOT NULL,
    `adresse` text NOT NULL,
    `ville` text NOT NULL,
    `dpt` text NOT NULL,
    `date_relance` int(255) NOT NULL,
    `note` text NOT NULL,
    `commercial` text NOT NULL,
    `telephone` int(255) NOT NULL,
    `portable` int(255) NOT NULL,
    `code_postal` int(15) NOT NULL,
    `email` text NOT NULL,
    `effectif_entreprise` varchar(255) NOT NULL,
    `pays` text NOT NULL,
    `societe` text NOT NULL,
    `site` text NOT NULL,
    `fichier` text NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

    --
    -- Contenu de la table `clients`
    --

    INSERT INTO `clients` (`id`, `contact`, `adresse`, `ville`, `dpt`, `date_relance`, `note`, `commercial`, `telephone`, `portable`, `code_postal`, `email`, `effectif_entreprise`, `pays`, `societe`, `site`, `fichier`) VALUES
    (1, 'premier', '8', 'dfsefse', '', 1355266800, '', '', 0, 0, 0, '8', '8', '8', '8', '8', 'fichier doc'),
    (2, 'deuxieme membre', 'a', 'a', 'seine', 1241733600, 'a', '', 0, 0, 0, 'a', 'a', 'a', 'add', 'a', 'fichier doc'),
    (3, 'dupontel', 'lolo', 'gouvieux', 'oise', 1241647200, '', '', 0, 0, 0, '', '0', '', '', '', 'fichier doc');
    et ma table service :

    -- Structure de la table `service`
    --

    CREATE TABLE `service` (
    `id` int(255) NOT NULL auto_increment,
    `id_user` int(255) NOT NULL,
    `date_relance` int(255) NOT NULL,
    `service` text NOT NULL,
    `civilite` text NOT NULL,
    `prenom` text NOT NULL,
    `nom` text NOT NULL,
    `fonction` text NOT NULL,
    `telephone` int(15) NOT NULL,
    `fax` int(15) NOT NULL,
    `type_prestation` text NOT NULL,
    `nbparticipant` int(255) NOT NULL,
    `budgetppersonne` int(255) NOT NULL,
    `clientmgp` int(11) NOT NULL,
    `statut` text NOT NULL,
    `note2` text NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12333 ;

    -- Contenu de la table `service`
    --

    INSERT INTO `service` (`id`, `id_user`, `date_relance`, `service`, `civilite`, `prenom`, `nom`, `fonction`, `telephone`, `fax`, `type_prestation`, `nbparticipant`, `budgetppersonne`, `clientmgp`, `statut`, `note2`) VALUES
    (1, 1, 1355266800, 'premier service', '8', '8', '8', '8', 0, 8, '8', 8, 8, 1, '8', ''),
    (2, 2, 1280959200, 'administration', '', 'ue', '', '', 0, 0, '', 0, 0, 1, '', ''),
    (3, 3, 1577833200, 'accueil', 'MME', 'CORINNE', 'LACOUR', 'Secretaire', 0, 0, '', 0, 0, 0, '', ''),
    (12332, 15, -3600, 'service', 'civilite', 'prenom', 'nom', 'fonction', 111, 0, 'type prestation', 0, 0, 0, 'statut', 'bloc');

    et je voudrais faire une recherche sur les champs de la table clients ET sur le champs date_relance de service....

    du genre je select tout de la table client where portable=$portable and adresse=$adresse etc....ET ou date_relance de la table clients=$date_relance et ou date_relance de la table service=$date_relance.....




    ca serait possible?

  9. #9
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Citation Envoyé par kaking Voir le message
    merci beaucoup mais la j'ai du mal faire......

    je veux selectionner tous les timestamp pareils a deux tables...

    le timestamp des deux tables (clients et service) sont tous deux dans deux champs nommés pareillement 'date_relance'....

    j'ai donc fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a=mysql_query("SELECT clients.*, service.* FROM 
    clients LEFT JOIN service ON clients.date_relance=service.date_relance ");
    $b=mysql_num_rows($a);echo $b;
    or $b=5;

    et ca je sais que c est pas possible....where is my horrible mitsake please???
    Moi je trouve ca bien! sauf qu'il n'y a pas les raccourcis comme ds l'exemple que je t'ai donné... peux tu essayer ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a=mysql_query("SELECT c.*, s.* FROM 
    clients c LEFT JOIN service s ON c.date_relance=s.date_relance ");
    $b=mysql_num_rows($a); echo $b;

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    je retrouve 5 ?!
    alors qu'une seule date des deux tables est pareil!

    pourtant la requete veut bien dire de tout selectionner ou date_relance des deux tables clients et service sont pareils, non?


    non?

Discussions similaires

  1. Forger une requete de recherche sur plusieurs tables.
    Par robocop333 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h44
  2. Recherche sur plusieurs tables en même temps
    Par Zouzou1er dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/10/2007, 09h40
  3. Recherche sur plusieurs tables
    Par micatmidog dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/06/2007, 16h28
  4. [MySQL] moteur de recherche sur plusieurs tables
    Par harlock59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2007, 15h23
  5. [MySQL] Recherche sur plusieurs tables
    Par hubidev dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/03/2006, 10h42

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