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 :

Requete sur des tables avec des Foreign Keys. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 10
    Points
    10
    Par défaut Requete sur des tables avec des Foreign Keys.
    voila je vais essayer de m'expliquer étant nouveau dans le sujet Mysql/php
    J'ai une table avec des cles etrangeres.
    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
     
    SET FOREIGN_KEY_CHECKS = 0;
    -- -------------------------------------
    -- Tables
     
    DROP TABLE IF EXISTS `categorias`;
    CREATE TABLE `categorias` (
      `cat_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `cat_nome` VARCHAR(32)  NOT NULL,
      PRIMARY KEY (`cat_id`)
    )
    ENGINE = InnoDB
    CHARACTER SET latin1 COLLATE latin1_swedish_ci;
     
    DROP TABLE IF EXISTS `artigos`;
    CREATE TABLE `artigos` (
      `art_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `art_nome` VARCHAR(32) NOT NULL,
      `art_desc` VARCHAR(50) NOT NULL,
      `cat_id` INT(11) UNSIGNED NOT NULL,
      PRIMARY KEY (`art_id`),
      CONSTRAINT `FKcategorias` FOREIGN KEY `FKcategorias` (`cat_id`)
        REFERENCES `categorias` (`cat_id`)
        ON DELETE CASCADE
        ON UPDATE CASCADE
    )
    ENGINE = InnoDB
    CHARACTER SET latin1 COLLATE latin1_swedish_ci;
     
    SET FOREIGN_KEY_CHECKS = 1;
    un chtit script pour recuperer les donnees de la db

    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
     
    <html>
    <head><title>Pet Types</title></head>
    <body>
    <?php
      require_once ("misc.php");
      require_once ("Connexion.php");
      require_once ("ExecRequete.php");  
     
    $connexion = Connexion(NOM, PASSE, BASE, SERVEUR);
    $results = ExecRequete("SELECT * FROM artigos", $connexion);
    	echo "<table border=\"0\">\n";
    while ($row = mysql_fetch_assoc($results)) {
    	echo "<tr>\n";
    	foreach($row as $value) {
    			echo "<td>\n";
    			echo $value;
    			echo "</td>\n";
    			}
    			echo "</tr>\n";
    		}
    		echo "</table>\n";
    ?>
    on est d'accord a l'affichage j'aurais un tableau avec toutes les colonnes de la base "artigos". La derniere colonne aura l'ID de la categorie. Question: comment est que je dois formuler ma requete pour au lieu d'avoir l'ID de la table categories la nom de la categorie auquel correspond l?ID? Comment s'appelle cette technique de requete pour faire un search sur le forum?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Il faut faire une jointure avec l'opérateur INNER JOIN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ALL artigos.*, cat_nome
    FROM artigos INNER JOIN categorias ON artigos.cat_id = categorias.cat_id
    http://dev.mysql.com/doc/refman/5.1/en/join.html
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    merci pour m'eclaircir

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

Discussions similaires

  1. Index sur une table avec des données temporaires
    Par mioux dans le forum Développement
    Réponses: 5
    Dernier message: 12/01/2012, 17h05
  2. [AC-2003] Requete sur une table avec des "Left Join" en parallèle
    Par Currahee dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/08/2009, 09h37
  3. Réponses: 3
    Dernier message: 30/08/2007, 15h41
  4. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 13h32
  5. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06

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