Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1932 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête d'export de données Mysql vers fichier CSV

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête d'export de données Mysql vers fichier CSV

n°2078629
Bennyb666
http://www.bc-elec.com
Posté le 27-05-2011 à 11:51:57  profilanswer
 

Bonjour à tous,
 
J'ai une base de données Mysql pour mon site.
J'extrais déjà les données de cette base produits pour constituer un fichier catalogue CSV.
 
Mes fiches produits ont une photo principale, dont l'url est reprise dans la table products, mais elles ont également des photos secondes qui sont contenues dans la table products_image
 
Je souhaiterais que ma requête reprenne également les url de ces photos pour les inclure dans mon fichier csv mais je ne sais comment faire...
 
La table d'image se compose ainsi:
ID
product_id
nom de l'image
 
et ma requête actuelle est du type:  Select * from products.
Comment inclure correctement d'ajouter toutes les urls des photos secondaires SACHANT que tout produit n'a pas forcément d'image secondaire et que le nombre peut donc varier de 0 à 10.
 
Merci!  :hello:

mood
Publicité
Posté le 27-05-2011 à 11:51:57  profilanswer
 

n°2078701
rufo
Pas me confondre avec Lycos!
Posté le 27-05-2011 à 15:03:46  profilanswer
 

1) requête sql pour récupérer les produits
2) pour chaque produit, tu fais une requête qui récupère les images secondaires et tu les mets à la fin de la ligne dans le csv. Si y'a moins que 10 images, tu complètes avec des colonnes à vide.
3) enregistrement des données dans le fichier csv.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078714
Bennyb666
http://www.bc-elec.com
Posté le 27-05-2011 à 15:30:06  profilanswer
 

Point 1 ok
point 3 ok
Par contre le point 2 :heink:  Je dois bien vous avouer ne pas parvenir à savoir par où commencer!

n°2078725
rufo
Pas me confondre avec Lycos!
Posté le 27-05-2011 à 15:42:28  profilanswer
 

ben une boucle :/

Code :
  1. $resultaReqSql = fonction qui récupère les produits via sql
  2. Pour chaque entrée dans la var $resultaReqSql faire
  3. {
  4.     $ResultatReqSqlImages = fct qui récupère les images du produit courant via sql
  5.      générée la ligne csv avec les infos sur produit (dans $resultaReqSql)
  6.      compléter la ligne csv avec les images récupérées dans $ResultatReqSqlImages
  7.      Si nb images dans $ResultatReqSqlImages < 10)
  8.      {
  9.          compléter la ligne csv avec [10 - nb images] colonnes (champs vides)
  10.      }
  11.      enregistrer la ligne csv dans le fichier
  12. }


 
Perso, j'ai tendance à bufferiser dans un tableau les lignes csv et à écrire d'un coup tout le tableau au format csv dans le fichier.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078732
Bennyb666
http://www.bc-elec.com
Posté le 27-05-2011 à 15:47:56  profilanswer
 

SELECT products.products_model, products_images.products_images FROM products INNER JOIN products_images ON products.products_id=products_images.products_id WHERE 1
 
Ceci me sort une ligne complète par image au lieu de me mettre toutes les images d'un même produit sur une ligne avec le reste des renseignements :/

n°2078734
Bennyb666
http://www.bc-elec.com
Posté le 27-05-2011 à 15:48:39  profilanswer
 

Heuu, j'aurais dû prévenir que je me suis arrêté après une année de programmation.
J'étais un crack en C :lol:

n°2078738
rufo
Pas me confondre avec Lycos!
Posté le 27-05-2011 à 15:56:36  profilanswer
 

Bennyb666 a écrit :

SELECT products.products_model, products_images.products_images FROM products INNER JOIN products_images ON products.products_id=products_images.products_id WHERE 1
 
Ceci me sort une ligne complète par image au lieu de me mettre toutes les images d'un même produit sur une ligne avec le reste des renseignements :/


 
C'est une solution mais je te l'ai pas proposée car ça va pas être très pratique pour avoir qu'une ligne par produit dans ton csv (mais on peut y arriver quand même). Ma méthode est plus pratique mais fait exécuter plus de requêtes sql.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078740
rufo
Pas me confondre avec Lycos!
Posté le 27-05-2011 à 15:57:30  profilanswer
 

Bennyb666 a écrit :

Heuu, j'aurais dû prévenir que je me suis arrêté après une année de programmation.
J'étais un crack en C :lol:


 
Le sql doit pas être ton fort non plus plus vue le "WHERE 1" à la fin de ta requête :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078750
Bennyb666
http://www.bc-elec.com
Posté le 27-05-2011 à 16:26:36  profilanswer
 

C'est phpmyadmin qui rajoute ça automatiquement. Comme ça ne gêne pas, je l'ai laissé :D

n°2078752
Oliiii
Posté le 27-05-2011 à 16:28:06  profilanswer
 

En SQL Server tu peux faire ca pour arriver a ce que tu veux (avant de le transformer en csv)

Code :
  1. SELECT a.products_model
  2.        , MAX(CASE WHEN a.seq = 1 THEN a.products_images ELSE NULL END) IMG1
  3.        , MAX(CASE WHEN a.seq = 2 THEN a.products_images ELSE NULL END) IMG2
  4.        , MAX(CASE WHEN a.seq = 3 THEN a.products_images ELSE NULL END) IMG3
  5.        , MAX(CASE WHEN a.seq = 4 THEN a.products_images ELSE NULL END) IMG4
  6.        , MAX(CASE WHEN a.seq = 5 THEN a.products_images ELSE NULL END) IMG5
  7.        , MAX(CASE WHEN a.seq = 6 THEN a.products_images ELSE NULL END) IMG6
  8.        , MAX(CASE WHEN a.seq = 7 THEN a.products_images ELSE NULL END) IMG7
  9.        , MAX(CASE WHEN a.seq = 8 THEN a.products_images ELSE NULL END) IMG8
  10.        , MAX(CASE WHEN a.seq = 9 THEN a.products_images ELSE NULL END) IMG9
  11.        , MAX(CASE WHEN a.seq = 10 THEN a.products_images ELSE NULL END) IMG10
  12. FROM (
  13.     SELECT products.products_model
  14.            , products_images.products_images
  15.            , ROW_NUMBER() OVER (PARTITION BY products.products_model ORDER BY products.products_model) seq
  16.     FROM products
  17.         JOIN products_images ON products.products_id=products_images.products_id
  18.     ) a    
  19. GROUP BY a.products_model


 
Edit: pff c'est vendredi...


Message édité par Oliiii le 27-05-2011 à 16:31:19

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête d'export de données Mysql vers fichier CSV

 

Sujets relatifs
lecteur fichier text en phpDELPHI/MYSQL impression
recuperer contenu du log mysql-bin.xxxxUtiliser IF pour affiner un ORDER BY en MySQL
Requete pour planningProblème de requête MySQL
VBA Lien Catia - Excel / ou comment créer une liaison vers un classeurCréation / Ecriture dans un fichier [RESOLU]
Plus de sujets relatifs à : Requête d'export de données Mysql vers fichier CSV


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR