Page 1 sur 1

Fusion d'enregistrement

Posté : 03 févr. 2006, 17:11
par CoiKispiCs
Bonjour a vous !! :D

voilà mon problème, j'ai une base de données sous mysql avec plusieurs tables (jusque là tout vas bien :lol: )

le soucis c'est que j'ai une table PRINTERS :

Image

ce que je voudrais c'est de mettre un champ id et un champ printer

exemple :

id printer
1 HP 4000 D214, HP4550 Couleur A153

au lieu d'avoir comme dans l'image,

ce que je voudrais c'est avoir le langage sql car pour l'instant il n'y a que 3 enregistrement mais je suis ammener a en mettre beaucoup plus


merci d'avance :) :)

Re: Fusion d'enregistrement

Posté : 03 févr. 2006, 17:22
par albat
ce que je voudrais c'est de mettre un champ id et un champ printer
Euh... ce n'est pas déjà ce que tu as ? :shock:
ce que je voudrais c'est avoir le langage sql
car pour l'instant il n'y a que 3 enregistrement
mais je suis ammener a en mettre beaucoup plus
J'ai un peu de mal à comprendre tes demandes...

Posté : 03 févr. 2006, 17:28
par CoiKispiCs
excuse moi je me suis peut etre mal exprimé :lol:

ce que je voudrais c'est une requete sql qui permet de regrouper les champs de même "ID"

je sais pas si c'est plus clair :)

Posté : 03 févr. 2006, 18:56
par zehle
si j'ai bien compri tu as une table PRINTERS, tu voudrai crée une autre table disant Imprimentes à partir de ta premiere table.

tu fait comme suit (tout en sachant que ce n'est pas optimisé):

mysql_connect("host","login","pass");
mysql_select_db("base_de_données");

$sql="select id from PRINTERS";
$res=mysql_query($sql)
while(list($id)=mysql_fetch_array($res))
{
  $sql1="select printer from PRINTERS where id=$id";
  $res1=mysql_query($sql1);
  while(list($nom)=mysql_fetch_array($res1))
    $noms=$noms." , " $nom;
   
  //insertion des données dans la nouvelle table.
  $sql2="insert into IMPRIMENTES(id,printer) values ($id, '$noms')";
  mysql_query($sql2);
}

mysql_close();
voilà !!!

Posté : 03 févr. 2006, 20:56
par Cyrano
Je vais me lancer un peu à l'aveuglette : tu voudrais récupérer le contenu sans doublons de la table "printers" pour le mettre dans une table "imprimantes" : Si c'est ça, une seule et unique requête :

Code : Tout sélectionner

INSERT INTO `IMPRIMANTES` (printer) VALUES(SELECT DISTINCT(Printer) FROM `PRINTERS`);
Sauf erreur de ma part, ça va faire le trasfert directement. Je n'ai pas ajouté les clés primiares de la table PRINTERS pas plus que je n'ai précisé celle de la table IMPRIMANTES, si ton champ id est de type INT auto_increment, la numérotation sera automatique.

Posté : 03 févr. 2006, 22:44
par Hubert Roksor
Regardez son exemple, je crois qu'il veut grouper les enregistrements par ID. "1 HP 4000 D214, HP4550 Couleur A153"

CoiKispiCs, essaie ça comme requête:

Code : Tout sélectionner

SELECT ID, GROUP_CONCAT(Printer) AS Printers FROM PRINTERS GROUP BY ID
Attention, cette requête ne modifie pas tes données, juste la façon dont elles sont affichées. Plus d'infos: GROUP_CONCAT

Posté : 06 févr. 2006, 15:45
par CoiKispiCs
merci beaucoup Hubert Roksor ta fonction marche pour l'affichage

comme j'ai pas trouver comment faire pour changer dans la base de données j'ai fais les changements dans l'affichage de la requete et ça marche :D


merci a vous tous pour avoir répondu aussi vite :)

@ bientot mais j'espere pour d'autre raisons que des problemes de base de données :lol: