[Réglé]Recherche dans une BDD avec différent critère

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Aide-Info, 2 Juillet 2008.

  1. Aide-Info
    Aide-Info Nouveau WRInaute
    Inscrit:
    29 Mai 2008
    Messages:
    3
    J'aime reçus:
    0
    Bonjour tout le monde,

    Alors voilà j'ai formulaire avec différent champ tel que:

    Société
    Type de machine
    Type d' OS
    Modèle de la machine
    Nom de la machine dans le domaine
    Programme installé
    Autre remarque

    Puis une base de donné composé ainsi:

    Code:
    --
    -- Structure de la table `machine`
    --
    
    CREATE TABLE `machine` (
      `id_machine` varchar(255) NOT NULL,
      `id_societe` int(255) NOT NULL,
      `id_OS` int(255) NOT NULL,
      `id_T_machine` int(255) NOT NULL,
      `modele` varchar(255) default NULL,
      `Ip` varchar(255) default NULL,
      `Masque` varchar(255) default NULL,
      `passserrelle` varchar(255) default NULL,
      `DNS` varchar(255) default NULL,
        PRIMARY KEY  (`id_machine`),
      KEY `id_societe` (`id_societe`),
      KEY `id_T_machine` (`id_T_machine`),
      KEY `id_OS` (`id_OS`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    --
    -- Structure de la table `os`
    --
    
    CREATE TABLE `os` (
      `id_OS` int(255) NOT NULL auto_increment,
      `Nom_OS` varchar(255) default NULL,
      PRIMARY KEY  (`id_OS`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
    
    --
    -- Structure de la table `societe`
    --
    
    CREATE TABLE `societe` (
      `id_societe` int(255) NOT NULL auto_increment,
      `Nom` varchar(255) default NULL,
      `Ip_internet` varchar(15) default NULL,
      PRIMARY KEY  (`id_societe`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    
    
    --
    -- Structure de la table `type_machine`
    --
    
    CREATE TABLE `type_machine` (
      `id_T_machine` int(255) NOT NULL auto_increment,
      `Nom` varchar(255) NOT NULL,
      PRIMARY KEY  (`id_T_machine`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
    
    --
    -- Contraintes pour les tables exportées
    --
    
    --
    -- Contraintes pour la table `machine`
    --
    ALTER TABLE `machine`
      ADD CONSTRAINT `machine_ibfk_1` FOREIGN KEY (`id_societe`) REFERENCES `societe` (`id_societe`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `machine_ibfk_2` FOREIGN KEY (`id_T_machine`) REFERENCES `type_machine` (`id_T_machine`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `machine_ibfk_3` FOREIGN KEY (`id_OS`) REFERENCES `os` (`id_OS`) ON DELETE CASCADE ON UPDATE CASCADE;
    Donc ce que je désire en faîtes c'est après que le formulaire est été remplis une requete SQL recherche dans la BDD les machines qui par exemple appartiennent à la société ou alors sont de type machine X ou avec L'OS x ou encore ont le programme X ...
    J'ai essayé mais à chaque fois il me renvoie toutes les machines présentes et non pas seulment celle dans le critère/
    Voilà les différente requête que j'ai effectué:
    Code:
    SELECT * FROM societe,machine,os,type_machine where os.Nom_OS='$T_OS' OR societe.Nom='$societe' OR type_machine.Nom='$T_machine' OR machine.modele LIKE '%$modele%' or machine.Nom_machine_domaine LIKE '%$nom%' OR machine.Programme LIKE '%$programme%' OR machine.autre LIKE '%$autre%' ORDER BY id_machine DESC
    là j'ai trop de de machine et en plus en double voir triple
    Code:
    SELECT * FROM societe,machine,os,type_machine where os.Nom_OS='$T_OS' OR societe.Nom='$societe' OR type_machine.Nom='$T_machine' OR machine.modele LIKE '%$modele%' or machine.Nom_machine_domaine LIKE '%$nom%' OR machine.Programme LIKE '%$programme%' OR machine.autre LIKE '%$autre%' AND os.is_os=machine.id_os AND machine.id_societe=societet.id_societe AND type_machine.id-T-machine=machine.id_T_machine ORDER BY id_machine DESC
    là j'ai carement rien
    Code:
    SELECT distinct(id_machine) FROM societe,machine,os,type_machine where os.Nom_OS='$T_OS' OR societe.Nom='$societe' OR type_machine.Nom='$T_machine' OR machine.modele LIKE '%$modele%' or machine.Nom_machine_domaine LIKE '%$nom%' OR machine.Programme LIKE '%$programme%' OR machine.autre LIKE '%$autre%' ORDER BY id_machine DESC
    là j'ai pas de double mais trop de résultat par rapport au critère de restriction et puis j'ai seulment les id_machine alors qu'il me faut tout les champ

    J'espère pouvoir le faire avec une seule requête mais si c'est impossible dîtes le.
    Si je suis pas très claire dîtes le tout de suite.
    Merci d'avance pour votre aide
     
  2. ltressens
    ltressens WRInaute occasionnel
    Inscrit:
    2 Avril 2004
    Messages:
    451
    J'aime reçus:
    0
    Quand tu fais un select from plusieurs tables, il faut indiquer les contraintes de liaison entre ces tables. Par exemple :

    Code:
    select * from machine, os
    where os .nom = 'Linux'
    and os.id = machine.id_os
    
    En apprendre plus sur les joins : http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.php
     
  3. Aide-Info
    Aide-Info Nouveau WRInaute
    Inscrit:
    29 Mai 2008
    Messages:
    3
    J'aime reçus:
    0
    ça je le sais (merci quand même) et je l'ai fait dans la deuxième requête, j'ai juste mis les différente requête que j'ai déjà fais même si je sais celle-ci ne marche pas.C'était juste pour éviter que d'autre mette déjà des chose que j'ai déjà faîtes.

    Pour l'instant j'ai réussi a faire fonctionner si la machine appartient à une société ou alors un programme X y est installé ou alors son OS est X:

    Avec cette requête:
    Code:
    Select distinct(id_machine),modele,IP,Masque from machine M,societe S,OS OS where M.id_societe=S.id_societe AND S.nom='test' OR M.programme LIKE '%PCBF%' or OS.nom_os LIKE '%server R2%' AND M.id_os=OS.id_os;
    Mais dès que je cherche a faire que la machine appartiennes à X catégorie alors là il me donne la totalité de machine (j'ai bien vérifié il ne doit pas tout me donner).

    Code:
    Select distinct(id_machine),modele,IP,Masque from machine M,societe S,OS OS,type_machine TM where S.nom='test' AND M.id_societe=S.id_societe OR M.programme LIKE '%PCBF%' or OS.nom_os LIKE '%server R2%' AND M.id_os=OS.id_os or TM.nom='Toshiba' AND TM.id_T_machine=M.id_T_machine;
     
  4. Aide-Info
    Aide-Info Nouveau WRInaute
    Inscrit:
    29 Mai 2008
    Messages:
    3
    J'aime reçus:
    0
    Une bonne nuit de sommeil et tout va mieux j'ai réussi:

    Code:
    Select distinct(id_machine),modele,IP,Masque from machine M,societe S,OS OS,type_machine TM where S.nom='test' AND M.id_societe=S.id_societe OR M.Nom_machine_domaine LIKE '%EMarcuzzi%' OR M.autre LIKE '%%' OR M.modele LIKE '%DC7700%' OR M.programme LIKE '%PCBF%' OR TM.nom='Toshiba' and M.id_T_machine=TM.id_T_machine OR OS.nom_os LIKE '%server R2%' AND M.id_os=OS.id_os;
    Un seul inconvénient il est obligé de préciser le champ société celui-ci ne pas être vide. Mais je sais comment m'arranger avec ça merci bien.
     
Chargement...
Similar Threads - [Réglé]Recherche BDD différent Forum Date
Inviter une BDD à liker une page Facebook Facebook 7 Octobre 2018
Description DOM en bdd Développement d'un site Web ou d'une appli mobile 1 Septembre 2016
Connexion à une BDD externe Développement d'un site Web ou d'une appli mobile 13 Janvier 2016
SaaS et Design de Bdd : une base par client ou une base pour tous les clients ? Administration d'un site Web 7 Juillet 2015
BDD email pour le emailing Monétisation d'un site web 6 Février 2015
Structure bdd messagerie Administration d'un site Web 11 Janvier 2015
Créer numéro de référence sans bdd Développement d'un site Web ou d'une appli mobile 7 Novembre 2014
Variable php en BDD Développement d'un site Web ou d'une appli mobile 29 Avril 2014
Implementation bdd sur siteweb Développement d'un site Web ou d'une appli mobile 7 Avril 2014
Mauvais Current_Timestamp en auto dans ma BDD Développement d'un site Web ou d'une appli mobile 6 Mars 2014
supprimer liens brisés dans BDD Développement d'un site Web ou d'une appli mobile 20 Novembre 2013
indexation GG page liste déroulante avec BDD Crawl et indexation Google, sitemaps 9 Septembre 2013
Référencement BDD image Débuter en référencement 27 Mars 2013
optimisation bdd mysql Développement d'un site Web ou d'une appli mobile 7 Mars 2013
Une BDD dédié aux membres chaque membre a un tableau possible ? Administration d'un site Web 2 Mars 2013
Problème avec Plesk 10, --> Parametre BDD Administration d'un site Web 13 Septembre 2012
Stratégie de sauvegarde bdd ? Développement d'un site Web ou d'une appli mobile 5 Août 2012
impact du DC sur 2 sites utilisant la même BDD produit Rédaction web et référencement 19 Juillet 2012
BDD/SQL forum & exploitation des adresses e-mails Droit du web (juridique, fiscalité...) 17 Juillet 2012
création d'une BDD par utilisateur... quel mot de passe ? Développement d'un site Web ou d'une appli mobile 14 Juillet 2012