Faire apparaitre les élément NULL

EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - Modifié par Whismeril le 12/05/2014 à 15:06
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 19 nov. 2014 à 16:29
Bonjour,
J'ai un soucis je n'arrive pas a faire apparaitre les ligne dans mon tableau si l'un des élément retourne NULL.
voici les structure des 2 table concerner:
caetbl_proglist  CREATE TABLE 'caetbl_proglist' (
 'ProgramNumber' varchar(255) NOT NULL DEFAULT '',
 'Description' varchar(255) DEFAULT NULL,
 'Customer' varchar(255) DEFAULT NULL,
 'Division' varchar(255) DEFAULT NULL,
 'Group' varchar(11) DEFAULT NULL,
 PRIMARY KEY ('ProgramNumber'),
 UNIQUE KEY 'ProgramNumber' ('ProgramNumber')
) ENGINE=InnoDB DEFAULT CHARSET=latin1


caetbl_grouplist  CREATE TABLE 'caetbl_grouplist' (
 'GroupID' varchar(11) DEFAULT NULL,
 'Group_Name' varchar(50) DEFAULT NULL,
 'Cost Center' varchar(2) DEFAULT NULL,
 'Division' varchar(5) DEFAULT NULL,
 'Manager' int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1


et voici le code PHP que j'utilise:
 $Zone_Key = isset($_POST['Key_Hidden'])?$_POST['Key_Hidden']:'';  // !
    // requête SQL qui compte le nombre total d'enregistrement dans la table et qui
    //récupère tous les enregistrements
    $select =  "SELECT  caetbl_proglist.ProgramNumber,
      caetbl_proglist.Description,
      caetbl_proglist.Customer,
      caetbl_proglist.Division,
      caetbl_proglist.Group,
      caetbl_groupList.Group_Name
    FROM caetbl_proglist
    INNER JOIN caetbl_groupList 
    ON caetbl_groupList.GroupID = caetbl_proglist.Group";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    // si on a récupéré un résultat on l'affiche.
    if($total) 
 {
  // debut du tableau
  echo '<table border="1px" bgcolor="#000000" id="MyTabPHP">'."\n";
  // première ligne on affiche les titres 
  echo '<tr>';
  echo '<td bgcolor="#F0FFFF" width="100px"><b>Programm Number</b></td>';
  echo '<td bgcolor="#F0FFFF" width="105px"><b>Description</b></td>';
  echo '<td bgcolor="#F0FFFF" width="45px"><b>Customer</b></td>';
  echo '<td bgcolor="#F0FFFF" width="530px"><b>Division</b></td>';
  echo '<td bgcolor="#F0FFFF" width="175px"><b>Group</b></td>' ;
  echo '<td bgcolor="#F0FFFF" style="display:none"><b></b></td>' ;  
  echo '</tr>'."\n";
  
  // lecture et affichage des résultats 
  while($row = mysql_fetch_array($result)) 
  {
   echo '<tr id="Row_'.$row["ProgramNumber"].'">';
   echo '<td bgcolor="#FFFFFF" id="IPN_'.$row["ProgramNumber"].'">'.$row["ProgramNumber"].'</td>';
   echo '<td bgcolor="#FFFFFF" id="IDes_'.$row["ProgramNumber"].'">'.$row["Description"].'</td>';
   echo '<td bgcolor="#FFFFFF" id="IC_'.$row["ProgramNumber"].'">'.$row["Customer"].'</td>';
   echo '<td bgcolor="#FFFFFF" id="ID_'.$row["ProgramNumber"].'">'.$row["Division"].'</td>';
   echo '<td bgcolor="#FFFFFF" id="IG_'.$row["ProgramNumber"].'">'.$row["Group_Name"].'</td>';
   echo '<td id="RNW_'.$row["ProgramNumber"].'">
     <button id="BNW_'.$row["ProgramNumber"].'" title="Edit Line" type="button" onmouseover="'.$Zone_Key.'.value=this.id;" onclick="Edit_Tab_Up();">
      <img src="media/image/bouton.png">
     </button>
     </td>';
   echo '</tr>'."\n";
  }


Merci

Merci et que le café soit avec vous.

2 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
19 nov. 2014 à 16:29
Salut,

A tout hasard, ce n'est pas simplement ton INNER JOIN qui pose problème ? As tu essayé avec un LEFT ou RIGHT JOIN ?
2
christ_28 Messages postés 33 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 10 novembre 2014 1
10 nov. 2014 à 16:44
Bonjour,

je ne connais pas trop MySQL, mais plutôt MsSQL (microsoft).

En ce qui concerne les group by sur des champs null, il faut paramétrer une option serveur pour qu'ils soient pris en compte ou alors utiliser isnull(MaColonne, '²²') dans le select ET le group by puis en tenir compte dans la page de restitution.
Mettre '²²' ou n'importe quoi d'autre que tu est sûr de ne pas trouver en base.
En espérant avoir pu t'apporter une solution
1
Rejoignez-nous