OVH Cloud OVH Cloud

recuperer des donnees dans deux tables li ees

3 réponses
Avatar
jjboutaud
Bonjour à tou(te)s

Soit deux tables "liées" :
1 - une table nommée 'parc_informatique' contenant des enregistrements
de matériel informatique (id, type, marque, model...)
2 - une seconde table nommée 'uc_backups' contenant des enregistrements
des dates des sauvegardes des disques durs des unités centrales
contenues dans la table précédente. Les rubriques de cette table sont :
id, uc_id, date_backup.
J'utilise le requête suivante : $results = mysql_query("SELECT * FROM
parc_informatique, uc_backups WHERE parc_informatique.id =
uc_backups.uc_id");
Avec la boucle :
<?php while ($row = mysql_fetch_array($results)) { ?>
<tr>
<td><?php echo $row['type']; ?></td>
<td><?php echo $row['marque']; ?></td>
<td><?php echo $row['model']; ?></td>
<td><?php echo $row['serial_no']; ?></td>
<td><?php echo $row['main_user']; ?></td>
<td><?php echo $row['date_backup']; ?></td>
</tr>
<?php } ?>
j'obtiens une ligne par sauvegarde et donc dans le cas d'unité centrale
avec plusieurs sauvegardes, plusieurs lignes avec le même nom d'uc :
Apple PowerMac G3 11-01-2004
Apple PowerMac G3 11-02-2004
Apple PowerBook Pismo 25-04-2004
Apple PowerBook Pismo 25-05-2004
Apple PowerMac G4/400 03-12-2004
Comment éviter la répétition du nom des UCs et obtenir :
Apple PowerMac G3 11-01-2004
11-02-2004
Apple PowerBook Pismo 25-04-2004
25-05-2004
Apple PowerMac G4/400 03-12-2004
Est-ce possible depuis la requête SQL ou suis-je obligé de gérer cela
via le script php affichant les résultats de la requête ?

D'avance merci
--
Président à vie du G.R.O.I.N.
9600/G3-500MHz/Jaguar
Merci Steve ;^)

3 réponses

Avatar
Jean-Marc Molina
Jean-Jacques Boutaud a écrit/wrote :
Comment éviter la répétition du nom des UCs et obtenir :
Apple PowerMac G3 11-01-2004
11-02-2004
Apple PowerBook Pismo 25-04-2004
25-05-2004
Apple PowerMac G4/400 03-12-2004


Qu'est-ce que tu souhaites faire de cette liste ensuite ?
C'est ça qui est important.

Est-ce possible depuis la requête SQL ou suis-je obligé de gérer cela
via le script php affichant les résultats de la requête ?


Le plus simple serait de récupérer les noms d'uc puir les dates pour
chacune.

--
Jean-Marc.

Avatar
jjboutaud
Jean-Marc Molina wrote:

Jean-Jacques Boutaud a écrit/wrote :
Comment éviter la répétition du nom des UCs et obtenir :
Apple PowerMac G3 11-01-2004
11-02-2004
Apple PowerBook Pismo 25-04-2004
25-05-2004
Apple PowerMac G4/400 03-12-2004


Qu'est-ce que tu souhaites faire de cette liste ensuite ?
C'est ça qui est important.

Est-ce possible depuis la requête SQL ou suis-je obligé de gérer cela
via le script php affichant les résultats de la requête ?


Le plus simple serait de récupérer les noms d'uc puir les dates pour
chacune.
salut et merci de cette réponse.

<hors charte>
Ce qui me plaisait dans la requête avec un JOIN, c'était la possibilité
de "tout" récupérer en une seule requête. Par contre, il y a des données
redondantes (les infos concernat les UCs dans mon cas).
</horscharte>
Le but étant en autre de pouvoir afficher pour chaque nom d'UC, les x
dernières sauvegardes, je peux également en deux requêtes récupérer le
nom des UCs puis les dates des sauvegardes et utiliser un tableau
(array) pour les stocker et les afficher depuis une boucle. Vu le nombre
d'UCs (une dizaine maxi), je ne pense pas que cela soit trés pénalisant
en terme de vitesse de traitement.

--
Président à vie du G.R.O.I.N.
9600/G3-500MHz/Jaguar
Merci Steve ;^)


Avatar
Jean-Marc Molina
Jean-Jacques Boutaud a écrit/wrote :
Ce qui me plaisait dans la requête avec un JOIN, c'était la
possibilité de "tout" récupérer en une seule requête. Par contre, il
y a des données redondantes (les infos concernat les UCs dans mon
cas).


En effet il est préférable de faire un minimum de requête pour parvenir à un
résultat. L'accès à la base est très pénalisant en terme de performances. Il
faut alors parfois mieux se tourner vers une requête bien gourmande et un
bel algorithme développé en PHP pour traiter les résultats.

Le but étant en autre de pouvoir afficher pour chaque nom d'UC, les x
dernières sauvegardes, je peux également en deux requêtes récupérer le
nom des UCs puis les dates des sauvegardes et utiliser un tableau
(array) pour les stocker et les afficher depuis une boucle. Vu le
nombre d'UCs (une dizaine maxi), je ne pense pas que cela soit trés
pénalisant en terme de vitesse de traitement.


Pour le nom des UCs et d'autres colonnes tu peux récupérer, voire dois, tout
ça en une requête, simplement avec une jointure. Après rien ne t'empêche
d'utiliser des boucles imbriquées, en PHP, pour traiter chaque UC, à partir
du moment où les résultats sont ordonnés avec un ORDER BY.

--
Jean-Marc.