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 :

selection dans toutes les tables


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 27
    Points
    27
    Par défaut selection dans toutes les tables
    Salut tout le monde, je veux ecrire une requete qui cherche tous les elements ayant comme type="client" pour toutes les tables dans une base de deonnees, comment ecrire cette requete sachant que toutes les tables contiennent le meme nombre de colonnes et ces colonnes possedent le meme nom dans chaque table?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    il te faut préfixer chaque colonne par le nom de sa table

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Citation Envoyé par armel18 Voir le message
    il te faut préfixer chaque colonne par le nom de sa table
    Effectivement !

    Je vais détailler un peu en proposant une approche PHP ;-)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
     
    $tables_list = array(
        'table1',
        'table2',
        'table3',
        'table4',
    );
    $field = "type";
     
    $sql = "SELECT " . implode('.' . $field . ', ', $tables_list) . "." . $field . " FROM " . implode(', ', $tables_list);
    echo '<pre>' . print_r($sql, true) . '</pre>';

    Ceci affichera :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT table1.type, table2.type, table3.type, table4.type FROM table1, table2, table3, table4

    L'avantage est que la liste des tables peut-être récupérée via une requête SQL (plutôt que de définir l'array) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW TABLES FROM db_name
    et donc rien qu'en ajoutant une nouvelle table, le script l'utilisera automatiquement !


    Attention cependant, ce script ne retournera qu'un seul champ (vu qu'ils portent tous le même nom). Pensez donc à ajouter un " AS var_name" afin qu'il soit utilisable ! (pour ce faire, il faudra faire une boucle, implode() ne suffisant plus)

    Voilà, ce que ça pourrait donner avec la boucle :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $tables_list = array(
        'table1',
        'table2',
        'table3',
        'table4',
    );
    $field = "type";
     
    $select = "";
    foreach ($tables_list AS $v) {
        $select .= $v . "." . $field . " AS " . $v . "_" . $field . ", ";
    }
    $select = rtrim($select, ', ');
    $sql = "SELECT " . $select . " FROM " . implode(', ', $tables_list);
    echo '<pre>' . print_r($sql, true) . '</pre>';

    Et voici ce que ça donnera :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT table1.type AS table1_type, table2.type AS table2_type, table3.type AS table3_type, table4.type AS table4_type FROM table1, table2, table3, table4


    PS: Sorry pour l'attribut "sql" de la balise code, j'ai oublié de mettre les guillemets et ça l'a pas compté je crois ^^

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Merci mais comment le faire si je ne connais pas le nombre de tables, ou j'ai un tres grand nombre de tables et je ne veux qu'on parcourt toutes ces tables?

  5. #5
    Membre du Club
    Femme Profil pro
    beler.fr
    Inscrit en
    Mars 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : beler.fr
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 25
    Points : 43
    Points
    43
    Par défaut CREATE VIEW / TRIGGERS
    Bonjour,

    En fonction de comment les tableaux sont créés dans la base de données ou en fonction des droits d’accès à la base de données, tu peux utiliser CREATE VIEW ou TRIGGERS.

    Pour VIEW:
    - créer un VIEW (concaténant) concaténant seulement les informations qui t’intéressent de tes tableaux, c’est-à-dire de type ="client")
    Pour TRIGGERS:
    - il faut configurer un trigger pour inser / delete / update pour chaque table dont tu veux extraire les informations, qui vont peupler les informations nécessaires dans une table adjacente
    Pour le fonctionnement des triggers tu as besoin d’un serveur dédié
    Essaie de lire sur ces mécanismes avant de passer à l’action.

    Bon courage,
    Mihaela

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par soussou1010 Voir le message
    Salut tout le monde, je veux ecrire une requete qui cherche tous les elements ayant comme type="client" pour toutes les tables dans une base de deonnees, comment ecrire cette requete sachant que toutes les tables contiennent le meme nombre de colonnes et ces colonnes possedent le meme nom dans chaque table?
    Je ne comprends pas bien. Toutes tes tables ont rigoureusement la même structure, sauf leur nom de table ?
    Si c'est le cas, c'est plutôt redondant comme conception, et il vaudrait mieux faire une seule table avec un champ supplémentaire, celui que tu mets dans leur nom, par exemple, tu ajoutes le champ 'origine' qui prend pour valeur tes anciens noms de table.
    Auquel cas ton SQL final se réduirait à
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from matable where type="client"

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/09/2014, 21h31
  2. [MySQL] requete pour faire un select dans toutes les tables pour trouver le titre
    Par japhettchabao dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/09/2014, 20h02
  3. Rechercher une donnée dans toutes les tables d'une BDD
    Par TheYoMan dans le forum Paradox
    Réponses: 2
    Dernier message: 23/10/2008, 20h24
  4. Réponses: 6
    Dernier message: 25/03/2008, 10h39
  5. Comment MAJ le même champ présent dans toutes les tables ?
    Par PamelaGeek dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 02/02/2006, 14h06

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