php
  • mysql
  • sql
  • 2014-06-22 1 views 2 likes 
    2
    if($result = mysql_query(
    "SELECT `condition` FROM `table1` WHERE `id` = '1') 
    UNION ALL 
    SELECT `condition` FROM `table2` WHERE `id` = '1') 
    UNION ALL 
    SELECT `condition` FROM `table3` WHERE `id` = '1')" 
    ){ 
         $num = mysql_num_rows($result); 
         for($i = 0; $i < $num; $i++){  
         $table = mysql_field_table($result, $i); 
         echo $table.' cond: '.mysql_result($result, $i, 'condition').', '; 
         } 
    } 
    

    Ici, je peux obtenir des résultats de requête (condition), mais je veux aussi obtenir les noms des tables, afin de savoir à quelle table le résultat appartient, je l'ai essayé: mysql_field_table ($ resultat, $ i), mais il ne retourne rien. Alors s'il vous plaît aidez-moi à obtenir le nom de la table, merci d'avance.PHP et Mysql ne peuvent pas obtenir le nom de la table avec UNION

    +0

    Utilisez quelque chose directement dans sql comme 'SELECT CONCAT (condition, 't1') FROM..UNION SELECT ALL CONCAT (condition, 't2') DE ... ' – Mihai

    +0

    Merci pour les bonnes réponses –

    Répondre

    2

    Vous avez un ensemble de colonnes calculées donc il n'y a pas de table source que vous pouvez retrouver. Vous devez ajouter les informations vous:

    SELECT `condition`, 'table1' AS source 
    FROM `table1` 
    WHERE `id` = '1' 
    
    UNION ALL 
    
    SELECT `condition`, 'table2' 
    FROM `table2` 
    WHERE `id` = '1' 
    
    UNION ALL 
    
    SELECT `condition`, 'table3' 
    FROM `table3` 
    WHERE `id` = '1' 
    
    +0

    Merci beaucoup –

    0

    utilisent ce

    SELECT `condition`, '1' tablnumber FROM `table1` WHERE `id` = '1' 
        UNION ALL 
        SELECT `condition`,'2' FROM `table2` WHERE `id` = '1' 
        UNION ALL 
        SELECT `condition`,'3' FROM `table3` WHERE `id` = '1' 
    

    demo here

    Questions connexes