Jump to content

[ASTUCE] Generer automatiquement vos fichiers CSV via requete SQL


epic1110

Recommended Posts

Bonjour à tous,

une petite contribution pour créer vos fichiers CSV automatiquement, conformément au formatage des fichiers d'imports exemple de la fonction d'importation de Prestashop.

Pour le moment voici les requêtes pour exporter et créer vos csv pour les adresses, les catégories, les clients, les fournisseurs et les fabricants.

 

Si un expert en requetes sql réussi à poster sur ce topic les requetes permettant d'exporter et de creer les csv pour les produits et pour les combinaisons de produits (attributs,...) conformément à la fonction d'import de prestashop, alors ce topic sera complet.

 

PhPMyAdmin sera utilisé pour executer les requetes sql dans ce tuto, avec le préfixe de base de donnée par défaut de prestashop, c'est à dire "ps_".

 

ATTENTION: Pensez à sauvegarder votre base de donnée avant toute manipulation.

 

Dans PHPMyAdmin séléctionnez votre base de donnée et cliquez sur l'onglet "SQL"

Copier coller le code ci-dessous correspondant au fichier CSV que vous voulez générer.

Une fois coller, cliquez sur "Executer", vous obtenez votre résultat de requête.

Descendez en bas de ce résultat, dans la fenetre "Opérations sur les résultats de la requête",

cliquez sur le bouton "Exporter" et choisissez "personnalisée",

Lignes: "Exporter toutes les lignes",

Sortie: ne touchez à rien, encodage déja en UTF-8

Format: Choisissez CSV et pour "Colonnes séparées par :" choisissez le " ; "

Vous pouvez si vous le souhaiter Afficher les noms de colonnes en première ligne, il faudra penser dans prestashop à ne pas importer la premiere ligne.

Sinon dans la fonction d'import de prestashop ne rien toucher tout est conforme.

Bien penser à choisir tout de même la bonne entité correspondant au bon CSV.

 

Voici donc les requetes SQL:

 

Création du fichier CSV pour récuperer vos adresses:

SELECT
ps_address.id_address,
ps_address.alias,
ps_address.active,
ps_customer.email,
ps_manufacturer.`name` AS Manufacturer,
ps_supplier.`name` AS Supplier,
ps_address.company,
ps_address.lastname,
ps_address.firstname,
ps_address.address1,
ps_address.address2,
ps_address.postcode,
ps_address.city,
ps_country_lang.`name` AS Country,
ps_state.`name` AS State,
ps_address.other,
ps_address.phone,
ps_address.phone_mobile,
ps_address.vat_number
FROM
ps_address
LEFT JOIN ps_customer ON ps_customer.id_customer = ps_address.id_customer
LEFT JOIN ps_manufacturer ON ps_manufacturer.id_manufacturer = ps_address.id_manufacturer
LEFT JOIN ps_supplier ON ps_supplier.id_supplier = ps_address.id_supplier
LEFT JOIN ps_country_lang ON ps_country_lang.id_country = ps_address.id_country
LEFT JOIN ps_state ON ps_state.id_state = ps_address.id_state

 

Création du fichier CSV pour récuperer vos catégories:

SELECT
ps_category.id_category,
ps_category.active,
`Name Category`.`name` AS `Name`,
`Name Parent`.`name` AS Parent,
`Name Category`.description,
`Name Category`.meta_title,
`Name Category`.meta_keywords,
`Name Category`.meta_description,
`Name Category`.link_rewrite
FROM
ps_category
LEFT JOIN ps_category_lang AS `Name Category` ON `Name Category`.id_category = ps_category.id_category
LEFT JOIN ps_category_lang AS `Name Parent` ON `Name Parent`.id_category = ps_category.id_parent

 

 

Création du fichier CSV pour récuperer vos clients:

SELECT
ps_customer.id_customer,
ps_customer.active,
ps_customer.id_gender,
ps_customer.email,
ps_customer.passwd,
ps_customer.birthday,
ps_customer.lastname,
ps_customer.firstname,
ps_customer.newsletter,
ps_customer.optin
FROM
ps_customer

 

Création du fichier CSV pour récuperer vos fabricants:

SELECT
ps_manufacturer.id_manufacturer,
ps_manufacturer.active,
ps_manufacturer.`name`,
ps_manufacturer_lang.description,
ps_manufacturer_lang.short_description,
ps_manufacturer_lang.meta_title,
ps_manufacturer_lang.meta_keywords,
ps_manufacturer_lang.meta_description
FROM
ps_manufacturer
LEFT JOIN ps_manufacturer_lang ON ps_manufacturer_lang.id_manufacturer = ps_manufacturer.id_manufacturer

 

Création du fichier CSV pour récuperer vos fournisseurs: (hors colonne "Short description")

SELECT
ps_supplier.id_supplier,
ps_supplier.active,
ps_supplier.`name`,
ps_supplier_lang.description,
ps_supplier_lang.meta_title,
ps_supplier_lang.meta_keywords,
ps_supplier_lang.meta_description
FROM
ps_supplier
LEFT JOIN ps_supplier_lang ON ps_supplier_lang.id_supplier = ps_supplier.id_supplier

 

Ce topic peut bienventendu être optimisé, amélioré, modifié.

Je ne suis pas au niveau de certains sur le forum, qui sont surement plus expert en la matière et seront optimiser ce contenu. Sachant qu'il n'existe pour le moment, malheureusement, pas de fonction d'export directement dans Prestashop de toutes ces données en fichiers CSV. (Certains modules existent certes, mais pas pour la totalité des fichiers d'import CSV de prestashop, et sinon, pas OpenSource)

Peut être qu'une fonction d'export en CSV est déja prévue dans la 1.5 ? Je ne sais pas.

  • Like 11
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
  • 1 month later...

Salut à tous.

 

Merci @Epic1110 pour cette contribution, j'ai fait le test pour les catégories sur un prestashop 1.4.7.2, ça marche au poil :D .

 

Pour ceux que ça peut aider, voici la syntaxe du fichier .csv à utiliser avec la fonction import de prestashop pour créer la catégorie "categorie test" :

 

"id_category";"active";"Name";"Parent";"description";"meta_title";"meta_keywords";"meta_description";"link_rewrite"

"2";"1";"categorie test";"1";"description de la categorie";"title categorie";"meta keywords";"meta description";"categorie-test"

 

@+

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Bonjour à tous,

J'ai un "petit" bug, ma base me dit : "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ps_address LEFT JOIN ps_customer ON ps_customer.id_customer = ps_address.id' at line 20"

Je suis sur phpMyAdmin 3.4.9

Serveur web :

  • Apache/2.2.16 (Debian)
  • Version du client MySQL: 5.1.49
  • Extension PHP: mysqli

MySql :

  • Serveur: sql5 (sql5 via TCP/IP)
  • Version du serveur: 5.0.92-87
  • Version du protocole: 10
  • Utilisateur: [email protected]
  • Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)

Pouvez-vous m'aider ?

 

Merci

Link to comment
Share on other sites

  • 2 weeks later...

Pour les produits, (pour moi ça me suffit) :

 


SELECT DISTINCT
ps_product.id_product AS 'id_produit',            
ps_product.reference AS 'reference',
ps_product.supplier_reference AS 'reference fournisseur',
ps_product_lang.name AS 'designation' ,
ps_product.id_category_default AS 'categorie par defaut',
ps_manufacturer.name AS 'marque',
ps_product.price AS 'prix_ht',
ps_product_lang.description_short AS 'resume',
ps_product_lang.description AS 'Description',
ps_product.quantity AS 'quantite',
ps_product.active AS 'Actif (0.1)'


FROM ps_product

LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer)

ON (	 	
ps_product.id_product = ps_category_product.id_product AND
ps_product.id_product=ps_product_lang.id_product AND
ps_product.id_product=ps_product_lang.id_product AND
ps_product.id_product = ps_category_product.id_product  AND
ps_product.id_manufacturer = ps_manufacturer.id_manufacturer
)

Edited by yZ0 (see edit history)
Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

Pour les produits, (pour moi ça me suffit) :

 


SELECT DISTINCT
ps_product.id_product AS 'id_produit',			
ps_product.reference AS 'reference',
ps_product.supplier_reference AS 'reference fournisseur',
ps_product_lang.name AS 'designation' ,
ps_product.id_category_default AS 'categorie par defaut',
ps_manufacturer.name AS 'marque',
ps_product.price AS 'prix_ht',
ps_product_lang.description_short AS 'resume',
ps_product_lang.description AS 'Description',
ps_product.quantity AS 'quantite',
ps_product.active AS 'Actif (0.1)'


FROM ps_product

LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer)

ON (	 	
ps_product.id_product = ps_category_product.id_product AND
ps_product.id_product=ps_product_lang.id_product AND
ps_product.id_product=ps_product_lang.id_product AND
ps_product.id_product = ps_category_product.id_product  AND
ps_product.id_manufacturer = ps_manufacturer.id_manufacturer
)

 

Bonjour,

 

Je me suis inspiré de votre requête SQL pour la compléter afin qu'elle corresponde parfaitement au fichier csv de Prestashop.

Le problème c'est que ma requête ne fonctionne pas et je ne sais pas trop pourquoi, n'étant pas spécialiste en SQL.

 

Est-ce que quelqu'un pourrait y jeter un coup d'oeil et me dire ce qui ne va pas ?

 

Par rapport au fichier csv de Prestashop 1.4.9, j'ai seulement retiré les colonnes "Feature:Height" et "Feature:Battery Life" qui correspondent à priori aux caractéristiques du produit.

 

J'aimerais aussi inclure ces caractéristiques mais bon faut déjà corriger la requête SQL sans ces caractéristiques.

 

Merci d'avance.

 

Voici la requête SQL:

SELECT DISTINCT
ps_product.id_product AS 'id',
ps_product.active AS 'Actif (0.1)',
ps_product_lang.name AS 'Name*',
'' AS 'Categories (x,y,z,...)',
ps_product.price AS 'Price tax excl.',
ps_product.id_tax_rules_group AS 'Tax rules id',
ps_product.wholesale_price AS 'Wholesale price',
ps_product.on_sale AS 'On sale (0/1)',
ps_specific_price.reduction AS 'Discount amount',
ps_specific_price.reduction AS 'Discount percent',
ps_specific_price.from AS 'Discount from (yyy-mm-dd)',
ps_specific_price.to AS 'Discount to (yyy-mm-dd)',
ps_product.reference AS 'Reference #',
ps_product.supplier_reference AS 'Supplier reference #',
ps_supplier.name AS 'Supplier',
ps_manufacturer.name AS 'Manufacturer',
ps_product.ean13 AS 'EAN13',
ps_product.upc AS 'UPC',
ps_product.ecotax AS 'Ecotax',
ps_product.weight AS 'Weight',
ps_product.quantity AS 'Quantity',
ps_product_lang.description_short AS 'Short description',
ps_product_lang.description AS 'Description',
ps_tag.name AS 'Tags (x,y,z,...)',
ps_product_lang.meta_title AS 'Meta-title',
ps_product_lang.meta_keywords AS 'Meta-keywords',
ps_product_lang.meta_description AS 'Meta-description',
ps_product_lang.link_rewrite AS 'URL rewritten',
ps_product_lang.available_now AS 'Text when in-stock',
ps_product_lang.available_later AS 'Text if back-order allowed',
ps_product.available_for_order AS 'Available for order',
ps_product.date_add AS 'Date add product',
ps_product.show_price AS 'Show price',
'' as 'Image URLs (x,y,z,...)',
ps_product.online_only AS 'Only available online',
0 as 'Delete existing images (0 = no, 1 = yes)',
ps_product.condition AS 'Condition'
FROM ps_product
LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer, ps_specific_price, ps_supplier, ps_product_tag, ps_tag)
ON (		   
ps_product.id_product = ps_category_product.id_product AND
ps_product.id_product = ps_product_lang.id_product AND
ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND
ps_product.id_product = ps_specific_price.id_product AND
ps_product.id_supplier = ps_supplier.id_supplier AND
ps_product_tag.id_product = ps_product_tag.id_product AND
ps_tag.id_tag = ps_tag.id_tag
)
WHERE
ps_product_lang.id_lang = 2 AND
ps_tag.id_lang = 2

Link to comment
Share on other sites

Bonjour,

 

Je me suis inspiré de votre requête SQL pour la compléter afin qu'elle corresponde parfaitement au fichier csv de Prestashop.

Le problème c'est que ma requête ne fonctionne pas et je ne sais pas trop pourquoi, n'étant pas spécialiste en SQL.

 

Est-ce que quelqu'un pourrait y jeter un coup d'oeil et me dire ce qui ne va pas ?

 

Par rapport au fichier csv de Prestashop 1.4.9, j'ai seulement retiré les colonnes "Feature:Height" et "Feature:Battery Life" qui correspondent à priori aux caractéristiques du produit.

 

J'aimerais aussi inclure ces caractéristiques mais bon faut déjà corriger la requête SQL sans ces caractéristiques.

 

Merci d'avance.

 

Voici la requête SQL:

SELECT DISTINCT
ps_product.id_product AS 'id',
ps_product.active AS 'Actif (0.1)',
ps_product_lang.name AS 'Name*',
'' AS 'Categories (x,y,z,...)',
ps_product.price AS 'Price tax excl.',
ps_product.id_tax_rules_group AS 'Tax rules id',
ps_product.wholesale_price AS 'Wholesale price',
ps_product.on_sale AS 'On sale (0/1)',
ps_specific_price.reduction AS 'Discount amount',
ps_specific_price.reduction AS 'Discount percent',
ps_specific_price.from AS 'Discount from (yyy-mm-dd)',
ps_specific_price.to AS 'Discount to (yyy-mm-dd)',
ps_product.reference AS 'Reference #',
ps_product.supplier_reference AS 'Supplier reference #',
ps_supplier.name AS 'Supplier',
ps_manufacturer.name AS 'Manufacturer',
ps_product.ean13 AS 'EAN13',
ps_product.upc AS 'UPC',
ps_product.ecotax AS 'Ecotax',
ps_product.weight AS 'Weight',
ps_product.quantity AS 'Quantity',
ps_product_lang.description_short AS 'Short description',
ps_product_lang.description AS 'Description',
ps_tag.name AS 'Tags (x,y,z,...)',
ps_product_lang.meta_title AS 'Meta-title',
ps_product_lang.meta_keywords AS 'Meta-keywords',
ps_product_lang.meta_description AS 'Meta-description',
ps_product_lang.link_rewrite AS 'URL rewritten',
ps_product_lang.available_now AS 'Text when in-stock',
ps_product_lang.available_later AS 'Text if back-order allowed',
ps_product.available_for_order AS 'Available for order',
ps_product.date_add AS 'Date add product',
ps_product.show_price AS 'Show price',
'' as 'Image URLs (x,y,z,...)',
ps_product.online_only AS 'Only available online',
0 as 'Delete existing images (0 = no, 1 = yes)',
ps_product.condition AS 'Condition'
FROM ps_product
LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer, ps_specific_price, ps_supplier, ps_product_tag, ps_tag)
ON (		  
ps_product.id_product = ps_category_product.id_product AND
ps_product.id_product = ps_product_lang.id_product AND
ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND
ps_product.id_product = ps_specific_price.id_product AND
ps_product.id_supplier = ps_supplier.id_supplier AND
ps_product_tag.id_product = ps_product_tag.id_product AND
ps_tag.id_tag = ps_tag.id_tag
)
WHERE
ps_product_lang.id_lang = 2 AND
ps_tag.id_lang = 2

 

J'ai modifié ma requête SQL pour le rendre plus clair.

Cela fonctionne sauf pour les Tags que je ne sais pas comment récupérer avec un jointure.

 

A oui, sinon j'ai id_lang = 2 car dans mon cas ça correspond à l'id de la langue française et je ne souhaite récupérer que les données en français.

 

Requête modifiée:

SELECT DISTINCT

ps_product.id_product AS 'id',
ps_product.active AS 'Actif (0.1)',
ps_product_lang.name AS 'Name*',
'' AS 'Categories (x,y,z,...)',
ps_product.price AS 'Price tax excl.',
ps_product.id_tax_rules_group AS 'Tax rules id',
ps_product.wholesale_price AS 'Wholesale price',
ps_product.on_sale AS 'On sale (0/1)',
ps_specific_price.reduction AS 'Discount amount',
ps_specific_price.reduction AS 'Discount percent',
ps_specific_price.from AS 'Discount from (yyy-mm-dd)',
ps_specific_price.to AS 'Discount to (yyy-mm-dd)',
ps_product.reference AS 'Reference #',
ps_product.supplier_reference AS 'Supplier reference #',
ps_supplier.name AS 'Supplier',
ps_manufacturer.name AS 'Manufacturer',
ps_product.ean13 AS 'EAN13',
ps_product.upc AS 'UPC',
ps_product.ecotax AS 'Ecotax',
ps_product.weight AS 'Weight',
ps_product.quantity AS 'Quantity',
ps_product_lang.description_short AS 'Short description',
ps_product_lang.description AS 'Description',
ps_tag.name AS 'Tags (x,y,z,...)',
ps_product_lang.meta_title AS 'Meta-title',
ps_product_lang.meta_keywords AS 'Meta-keywords',
ps_product_lang.meta_description AS 'Meta-description',
ps_product_lang.link_rewrite AS 'URL rewritten',
ps_product_lang.available_now AS 'Text when in-stock',
ps_product_lang.available_later AS 'Text if back-order allowed',
ps_product.available_for_order AS 'Available for order',
ps_product.date_add AS 'Date add product',
ps_product.show_price AS 'Show price',
'' AS 'Image URLs (x,y,z,...)',
ps_product.online_only AS 'Only available online',
0 AS 'Delete existing images (0 = no, 1 = yes)',
ps_product.condition AS 'Condition'

FROM ps_product, ps_tag

LEFT OUTER JOIN ps_product_lang
ON ps_product.id_product = ps_product_lang.id_product AND ps_product_lang.id_lang = 2

LEFT OUTER JOIN ps_manufacturer
ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer

LEFT OUTER JOIN ps_specific_price
ON ps_product.id_product = ps_specific_price.id_product

LEFT OUTER JOIN ps_supplier
ON ps_product.id_supplier = ps_supplier.id_supplier

LEFT OUTER JOIN ps_product_tag
ON ps_product.id_product = ps_product_tag.id_product AND ps_tag.id_tag = ps_product_tag.id_tag AND ps_tag.id_lang = 2

Edited by Fafa59 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

J'ai testé pour l'export et 'import de la table client, tout ce passe bien cependant les mots de passes de mes clients ont changés, je n'arrive pas a me connecter et j ai une erreur d'authentification. En vérifiant les tables entre l'export et l'import le code password a changé. Pourquoi ?

 

Je précise que j exporte de la version 1.4.3 vers import sur 1.5

Link to comment
Share on other sites

Bonjour Cyrkam

Les mots de passes sont hashés via une clé de cookie (ces clés sont dans le fichier settings.inc.php).

Lorsque vous importez vos tables clients les mots de passes n'ont pas changé, mais les clés de cryptages ne sont pas les mêmes, donc il est impossible de se logguer.

une solution proposée par un membre (Jean Francois G) est disponible ici.

Cordialement

Edited by epic1110 (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour j'essaie sur la version 1.5.1.

 

via le manager

 

mais à chaque fois j'ai cette erreur

2 erreurs

  1. Le champ SQL est trop long. (Longueur maximale : 1000)

sur phpmyadmin ( sur OVH=

 

sur phpm y admin

j'ai un proleme avec LEFJOIN erreur de syntaxe

 

debug : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ps2010_product LEFT JOIN ( ps2010_product.price, ps2010_product_lang, ps201' at line 29{"success":false,"error":"

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ps2010_product\nLEFT JOIN ( ps2010_product.price, ps2010_product_lang, ps201' at line 29<\/div>"}

 

 

 

voici le le fichier corrigé

 

SELECT DISTINCT

ps2010_product.id_product AS 'id',

ps2010_product.active AS 'Actif (0.1)',

ps2010_product_lang.name AS 'Name*',

'' AS 'Categories (x,y,z,...)',

ps2010_product.price AS 'Price tax excl.',

ps2010_product.wholesale_price AS 'Wholesale price',

ps2010_product.on_sale AS 'On sale (0/1)',

ps2010_product.reference AS 'Reference #',

ps2010_product.supplier_reference AS 'Supplier reference #',

ps2010_supplier.name AS 'Supplier',

ps2010_manufacturer.name AS 'Manufacturer',

ps2010_product.ean13 AS 'EAN13',

ps2010_product.weight AS 'Weight',

ps2010_product.quantity AS 'Quantity',

ps2010_product_lang.description_short AS 'Short description',

ps2010_product_lang.description AS 'Description',

ps2010_tag.name AS 'Tags (x,y,z,...)',

ps2010_product_lang.meta_title AS 'Meta-title',

ps2010_product_lang.meta_keywords AS 'Meta-keywords',

ps2010_product_lang.meta_description AS 'Meta-description',

ps2010_product_lang.link_rewrite AS 'URL rewritten',

ps2010_product_lang.available_now AS 'Text when in-stock',

ps2010_product_lang.available_later AS 'Text if back-order allowed',

ps2010_product.date_add AS 'Date add product',

'' as 'Image URLs (x,y,z,...)',

0 as 'Delete existing images (0 = no, 1 = yes)',

 

FROM ps2010_product

LEFT JOIN ( ps2010_category_product, ps2010_product.price, ps2010_product_lang, ps2010_manufacturer, ps2010_supplier, ps2010_product_tag, ps2010_tag)

ON (

ps2010_product.id_product = ps2010_category_product.id_product AND

ps2010_product.id_product = ps2010_product_lang.id_product AND

ps2010_product.id_manufacturer = ps2010_manufacturer.id_manufacturer AND

ps2010_product.id_supplier = ps2010_supplier.id_supplier AND

ps2010_product_tag.id_product = ps2010_product_tag.id_product AND

ps2010_tag.id_tag = ps2010_tag.id_tag

)

WHERE

ps2010_product_lang.id_lang = 2 AND

ps2010_tag.id_lang = 2

 

 

 

Merci d'une réponse

Edited by redtango (see edit history)
Link to comment
Share on other sites

pour ma part, j'ai exporté avec celui la remis à ma sauce, et qui fonctionne pleinement :

 

SELECT DISTINCT

mag_product.id_product AS 'id',

mag_product.active AS 'Actif (0.1)',

mag_product_lang.name AS 'Name*',

'' AS 'Categories (x,y,z,...)',

mag_product.price AS 'Price tax excl.',

mag_product.id_tax_rules_group AS 'Tax rules id',

mag_product.reference AS 'Reference #',

mag_product.weight AS 'Weight',

mag_product.quantity AS 'Quantity',

mag_product_lang.description_short AS 'Short description',

mag_product_lang.description AS 'Description',

mag_product_lang.link_rewrite AS 'URL rewritten'

 

FROM mag_product

 

LEFT OUTER JOIN mag_product_lang

ON mag_product.id_product = mag_product_lang.id_product

 

LEFT OUTER JOIN mag_manufacturer

ON mag_product.id_manufacturer = mag_manufacturer.id_manufacturer

 

LEFT OUTER JOIN mag_specific_price

ON mag_product.id_product = mag_specific_price.id_product

 

LEFT OUTER JOIN mag_supplier

ON mag_product.id_supplier = mag_supplier.id_supplier

Link to comment
Share on other sites

pour ma part, j'ai exporté avec celui la remis à ma sauce, et qui fonctionne pleinement :

 

Merci pour ta requette, Elle marche bien mais je recupere pas le numéro de categorie pour ma part.

 

Quelqu'un pourrait peut etre m'expliquer (la logique et a quoi ca sert) des lignes suivantes ?:

 

'' AS 'Categories (x,y,z,...)', (est ce pour remplir une case vide ?)

 

et surtout:

 

LEFT OUTER JOIN mag_product_lang

ON mag_product.id_product = mag_product_lang.id_product

Edited by Cyrkam (see edit history)
Link to comment
Share on other sites

Pour ma part, (grace a vos derniers post), qui veut importer mon catalogue produit depuis une version 1.4.3 vers une 1.5.1.0 j'avance bien avec cette requête :

 

SELECT DISTINCT

ps_product.id_product AS 'id',

ps_product.active AS 'Actif (0.1)',

ps_product_lang.name AS 'Name*',

ps_product.id_category_default AS 'Categories (x,y,z,...)',

ps_product.price AS 'Price tax excl.',

ps_product.id_tax_rules_group AS 'Tax rules id',

ps_product.reference AS 'Reference #',

ps_product.weight AS 'Weight',

ps_product.quantity AS 'Quantity',

ps_product_lang.description_short AS 'Short description',

ps_product_lang.description AS 'Description',

ps_product_lang.link_rewrite AS 'URL rewritten',

ps_product_lang.meta_description AS 'Meta Description',

ps_product_lang.meta_keywords AS 'Meta Keywords',

ps_product_lang.meta_title AS 'Meta title'

 

FROM ps_product

 

LEFT OUTER JOIN ps_product_lang

ON ps_product.id_product = ps_product_lang.id_product

 

LEFT OUTER JOIN ps_manufacturer

ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer

 

LEFT OUTER JOIN ps_specific_price

ON ps_product.id_product = ps_specific_price.id_product

 

LEFT OUTER JOIN ps_supplier

ON ps_product.id_supplier = ps_supplier.id_supplier

 

WHERE

ps_product_lang.id_lang = 2

 

 

Sachant qu'ensuite je l'exporte depuis MySQL :

 

 

exporter en CSV

 

Champs terminés par ;

champs entourés par "

caractere special "

lignes terminées par \r\n

 

 

J' importe avec la fonction Import de prestashop 1.5.0.1

 

Et ca marche au poil !!

 

j'ai rajouté les données suivantes :

 

Meta title:

Meta description:

Meta keywords:

Edited by Cyrkam (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Un grand merci pour ces posts, enfin un moyen propre et efficace d'exporter ses produits d'une boutique à l'autre sans problèmes.

 

J'ai cependant 2 petites questions :

- je souhaiterais aussi importer les dimensions de mes produits ors ça ne fait pas parti des "champs disponibles" dans l'import

- Deuxio comment faire pour importer les produits en multilangue?

 

Merci and keep up the good work!

Link to comment
Share on other sites

Bonjour,

Avec ca, sur une installation 1.5.2 :

SELECT DISTINCT

 

ps_product.id_product AS 'id',

ps_product.active AS 'Actif (0.1)',

ps_product_lang.name AS 'Name*',

'' AS 'Categories (x,y,z,...)',

ps_product.price AS 'Price tax excl.',

ps_product.id_tax_rules_group AS 'Tax rules id',

ps_product.wholesale_price AS 'Wholesale price',

ps_product.on_sale AS 'On sale (0/1)',

ps_specific_price.reduction AS 'Discount amount',

ps_specific_price.reduction AS 'Discount percent',

ps_specific_price.from AS 'Discount from (yyy-mm-dd)',

ps_specific_price.to AS 'Discount to (yyy-mm-dd)',

ps_product.reference AS 'Reference #',

ps_product.supplier_reference AS 'Supplier reference #',

ps_supplier.name AS 'Supplier',

ps_manufacturer.name AS 'Manufacturer',

ps_product.ean13 AS 'EAN13',

ps_product.upc AS 'UPC',

ps_product.ecotax AS 'Ecotax',

ps_product.weight AS 'Weight',

ps_product.quantity AS 'Quantity',

ps_product_lang.description_short AS 'Short description',

ps_product_lang.description AS 'Description',

ps_tag.name AS 'Tags (x,y,z,...)',

ps_product_lang.meta_title AS 'Meta-title',

ps_product_lang.meta_keywords AS 'Meta-keywords',

ps_product_lang.meta_description AS 'Meta-description',

ps_product_lang.link_rewrite AS 'URL rewritten',

ps_product_lang.available_now AS 'Text when in-stock',

ps_product_lang.available_later AS 'Text if back-order allowed',

ps_product.available_for_order AS 'Available for order',

ps_product.date_add AS 'Date add product',

ps_product.show_price AS 'Show price',

'' AS 'Image URLs (x,y,z,...)',

ps_product.online_only AS 'Only available online',

0 AS 'Delete existing images (0 = no, 1 = yes)',

ps_product.condition AS 'Condition'

 

FROM ps_product, ps_tag

 

LEFT OUTER JOIN ps_product_lang

ON ps_product.id_product = ps_product_lang.id_product AND ps_product_lang.id_lang = 2

 

LEFT OUTER JOIN ps_manufacturer

ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer

 

LEFT OUTER JOIN ps_specific_price

ON ps_product.id_product = ps_specific_price.id_product

 

LEFT OUTER JOIN ps_supplier

ON ps_product.id_supplier = ps_supplier.id_supplier

 

LEFT OUTER JOIN ps_product_tag

ON ps_product.id_product = ps_product_tag.id_product AND ps_tag.id_tag = ps_product_tag.id_tag AND ps_tag.id_lang = 2

J'ai :

2 erreurs

  1. Le champ SQL est trop long. (Longueur maximale : 1000)
  2. Erreur

Malgré certains tests de modifications, je ne trouve pas les erreurs à rectifier.

Ca devrait sauter aux yeux mais là je sèche

Link to comment
Share on other sites

Bonjour,

 

J'ai un soucis avec cette requete :

 

 

 

Création du fichier CSV pour récuperer vos adresses:

SELECT
ps_address.id_address,
ps_address.alias,
ps_address.active,
ps_customer.email,
ps_manufacturer.`name` AS Manufacturer,
ps_supplier.`name` AS Supplier,
ps_address.company,
ps_address.lastname,
ps_address.firstname,
ps_address.address1,
ps_address.address2,
ps_address.postcode,
ps_address.city,
ps_country_lang.`name` AS Country,
ps_state.`name` AS State,
ps_address.other,
ps_address.phone,
ps_address.phone_mobile,
ps_address.vat_number
FROM
ps_address
LEFT JOIN ps_customer ON ps_customer.id_customer = ps_address.id_customer
LEFT JOIN ps_manufacturer ON ps_manufacturer.id_manufacturer = ps_address.id_manufacturer
LEFT JOIN ps_supplier ON ps_supplier.id_supplier = ps_address.id_supplier
LEFT JOIN ps_country_lang ON ps_country_lang.id_country = ps_address.id_country
LEFT JOIN ps_state ON ps_state.id_state = ps_address.id_state

 

 

Elle me génère 4 Adresses identiques pour chaque client .... Pourquoi ?

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Bonsoir,

Je tente de créer un script php pouvant être appelé par une tâche cron permettant de créer des fichiers csv. J'ai besoin d'aide !!

J'ai un problème avec la partie insérant le résultat de la requête dans le fichier :

<?php
include_once('./config/settings.inc.php');
$date =   date("Y_m_d_H")."h".date("i")."m";
$connection = mysql_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_)
   or die("Unable to connect to MySQL");
   $db = mysql_select_db(_DB_NAME_,$connection);
if (mysql_connect (_DB_SERVER_, _DB_USER_, _DB_PASSWD_)) {
 echo 'connexion réussie';
}
else {
 echo 'connexion impossible...'.mysql_error();
}
$query=("SELECT p.id_product, p.active, pl.name, p.price, p.id_tax_rules_group, p.wholesale_price, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
WHERE pl.id_lang = 1");
$result = mysql_query($query) or die ($query. ' - ' . mysql_error());
file_put_contents($date."_monfichier.csv", $result);
if (!$result) {
   $message  = 'Requête invalide : ' . mysql_error() . "\n";
   $message .= 'Requête complète : ' . $query;
   die($message);
}

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour à tous.

 

pour exporter mes produits en CSV, j'utilise la requete de Cyrkam postée le 25 octobre.

 

je suis en version 1.5.2.0

 

Cela fonctionne ... presque.

 

En fait, dans ma description de produits, j'ai du texte et un tableau avec du contenu.

Quand j'execute la requete, le texte est bien exporter, mais sans le tableau et son contenu.

 

Il y a une astuce ?

 

Cordialement

Olivier51

Link to comment
Share on other sites

  • 3 weeks later...
  • 3 weeks later...
  • 3 weeks later...

Bonjour à tous,

 

Concernant la requête SQL concernant les catégories, quelles modifications faut-il faire sur la requête pour n'obtenir qu'une seule langue (le français par exemple) quand on a un site multilingue ?

 

 

Pour info, je suis en version Prestashop 1.4.4.1

 

 

Merci pour ce très bon topic et pour votre aide.

Link to comment
Share on other sites

  • 1 month later...

toto_toto voici la requete pour les catégories :

 

SELECT
ps_category.id_category,
ps_category.active,
`Name Category`.`name` AS `Name`,
`Name Parent`.`id_category` AS Parent,
`Name Category`.description,
`Name Category`.meta_title,
`Name Category`.meta_keywords,
`Name Category`.meta_description,
`Name Category`.link_rewrite
FROM
ps_category
LEFT JOIN ps_category_lang AS `Name Category` ON `Name Category`.id_category = ps_category.id_category AND `Name Category`.id_lang = 5
LEFT JOIN ps_category_lang AS `Name Parent` ON `Name Parent`.id_category = ps_category.id_parent AND `Name Category`.id_lang = 5
GROUP BY id_category

 

A noter que que je n'utilise pas le nom de la catégories parents pour faire le lien parent : simplement que si vous avez une catégorie avec le même, cela ne marchera pas.

 

Toto_toto, remplace 5 ( l'id de la langue Fr) par l'id de la langue voulu.

 

Ensuite lors de l'import, sélectionne bien la bonne langue pour sur l'interface Admin

Edited by Myst26 (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour à tous et merci pour l'astuce, MYST26, attention à tous question difficile..... :wacko:

sais tu comment dans l'arborescence Catégorie et sous catégorie changer que les sous catégories,

pourquoi? lors de l'import de nouveaux produits je cré de nouvelles catégories, mais celles ci ne sont plus dans l'ordre alphabétique de recherche, donc je me pose deux questions:

ou enlever la catégorie et ses sous catégories ( j'ai essayer mais cela n'est pas pratique car je perds beaucoup d'info sur certains produits, prix spécifique, par quatité, promos etc...

ou arriver à enlever que les sous catégories, et bien sur arriver à les réimporter ...?

merci d'avance...... B)

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

super le tuto, j'ai tout suivi à la lettre mais je rencontre un problème (du fait que je sois nulle en informatique).

Je me suis connecté au phpmyadmin (suis chez 1&1) mais je sais pas ou coller le code qui m'interresse

Je dois vraiment pas etre futée sachant que j'ai lu le process 3-4fois

Si quelqu'un avait une piste je vous en serait reconnaissante.

Merci

Link to comment
Share on other sites

Bonjour,

 

Une fois dans mysql, tu dois cliquer sur le nom de ta base de donnée colonne de gauche qui doit être du style "dbXXXXXXX" ensuite tu as les menu structure, sql, rechercher etc... tu va sur SQL. Tu colle le code puis executer.

Tu obtiens ton tableau

tu fais exporter

Sur cette nouvel page verifier que tu est bien en csv et surtout cocher "transmettre" puis cliquer sur executer..

 

Maintenant tu as ton fichier.

Link to comment
Share on other sites

Bonjour,

 

Une fois dans mysql, tu dois cliquer sur le nom de ta base de donnée colonne de gauche qui doit être du style "dbXXXXXXX" ensuite tu as les menu structure, sql, rechercher etc... tu va sur SQL. Tu colle le code puis executer.

Tu obtiens ton tableau

tu fais exporter

Sur cette nouvel page verifier que tu est bien en csv et surtout cocher "transmettre" puis cliquer sur executer..

 

Maintenant tu as ton fichier.

 

 

Bonjour à tous !

 

Je suis entrain de passer mon Presta 1.4.9 vers 1.5 (Dernière version) j'ai voulu suivre votre tuto... ça fait 3 heures que j'essaye d'exporter les catégories (Pour commencer) et je n'arrive même pas !! :-( ... j'ai toujours des erreurs de partout.

 

Est ce qu'il existe un autre moyen pour migrer le catalogue complet ? en langue Français seulement.

 

Merci à vous pour votre aide.

 

Cordialement

Matias

Link to comment
Share on other sites

Bonjour,

 

Je suis sous PS 1.5.4.1 et souhaite copier les informations de la fiche produit "résumé", "description", "Référencement" de la page en FRANCAIS vers les autres langues grâce à une requete Mysql.

 

Une idée ?

Link to comment
Share on other sites

Bonjour à tous.

j'ai essayé plusieurs versions, aucune pour ma part ne marche réellement je suis sous 1.5.4

L'import des catégories via cette version ne marche pas

SELECT

ps_category.id_category,

ps_category.active,

`Name Category`.`name` AS `Name`,

`Name Parent`.`id_category` AS Parent,

`Name Category`.description,

`Name Category`.meta_title,

`Name Category`.meta_keywords,

`Name Category`.meta_description,

`Name Category`.link_rewrite

FROM

ps_category

LEFT JOIN ps_category_lang AS `Name Category` ON `Name Category`.id_category = ps_category.id_category AND `Name Category`.id_lang = 5

LEFT JOIN ps_category_lang AS `Name Parent` ON `Name Parent`.id_category = ps_category.id_parent AND `Name Category`.id_lang = 5

GROUP BY id_category

 

Cela me prend bien toutes mes catégories mais lors de l'import il y a des erreurs sur toutes mes catégories etant ecrit Le lien réécrit pour (ID : 98) a été réécrit en tant que nom de ma catégorie.

 

Je pense qu'il ne manque pas grand chose pour que cela marche car c'est la même erreur pour toutes mes catégories.

 

J'ai plusieurs fois le même nom de catégories, c'est donc impossible pour moi de les récupérer tels quelles ?

Edited by dukofo (see edit history)
Link to comment
Share on other sites

Quand je fais l'import avec la facon a cyrkham, cela me met The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

 

Est ce que quelqu'un dernièrement avec une version 1.5.4 est arrivé à importer les catégories ?

Edited by dukofo (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

@ passicol,

J'ai oublié et pas eu le temps de vous répondre, mais je voulais vous remercier de votre aide :) ca fonctionne

 

@ tous : ou trouver les tables qui me permettra de recuperer les numeros suivis avec les noms clients (pour relancer la poste au dela des 48H).

et dans le cas ou la solution est réalisable est il possible de generer une tache cron pour que ca fonctionne sans se prendre la tete :)

 

Merci d'avance

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Bonjour,

 

Merci pour ce topic qui m'ouvre les portes des requêtes SQL…

à ce propos j'aimerais savoir si en partant de la table ci-dessous:

 

 

ps_order_detail:

id_order   product_id   product_quantity
     1                 1                       1
     2                 1                       9
     2                 2                       3
     3                 1                       5
     3                  2                      6
     3                  3                      3
     3                  4                      1
 

 

 il est possible de créer une nouvelle table comme celle-ci ?? et si oui, quelle en serait la syntaxe…  

voici donc ce à quoi j'aimerais arriver:

 

 

ps_nouvelle_table:
id_order  product_id1  product_id2  product_id3   product_id4
     1                   1
     2                   9                     3
     3                   5                     6                     3                    1
 
merci d'avance pour votre aide!  :)
Link to comment
Share on other sites

  • 2 weeks later...

re bonjour,

 

Après tumultes essai, très galère pour moi, j'ai reussi a exporté les commandes "en cours de livraisons" via cette commande :

SELECT O.id_order, O.id_customer, C.email, C.lastname, C.firstname
FROM `ps_orders` O
INNER JOIN ps_order_history OH on OH.id_order = O.id_order
INNER JOIN ps_customer C on C.id_customer= O.id_customer
where OH.id_order_state = 2

 

Le problème est quand j'essai de modifier le statut avec cette commande :

INSERT INTO ps_order_history (id_employee, id_order, id_order_state, date_add)
VALUES(2 ,7,5, '20/09/2013 07:30'),
VALUES(2,8,5,
'20/09/2013 07:30'),

......

j'ai une erreur  de ce type :

MySQL a répondu:b_help.png

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES(2,7,5,'20/09/2013  07:30'),
VALUES(2,8,5,'20/09/2013  07:30'),
VALUES(2' at line 3 

 

Quelqu'un aurait une piste ?????

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

>Bibiyanki Il y a déjà la requête pour les catégories qui fonctionne en 1.4

 

Pour ceux qui le souhaite en 1.4 les déclinaisons sont stocké dans les 5 tables PS_Attribute.

L'export est moins exploitable car l'info est stocké avec un identifiant qui permet de faire la liaison avec l'attribut et le groupe puis le produit.

J'ai trop de déclinaison pour pouvoir en tirer quelque chose mais pour ceux qui en ont peu vous avez au moins la direction à prendre.

Link to comment
Share on other sites

Bonjour bonjour,
 
Voici une petite contribution, ma requête pour sortir l'inventaire :

SET SQL_BIG_SELECTS=1;

SELECT pl.id_product 'ID produit', pl.name Nom, cl.name Catégorie,
IFNULL(sa.quantity, '?') Quantité, CONCAT(IFNULL(CONCAT(agl.name,' : '),''), IFNULL(al.name,'')) Déclinaison
FROM product_lang pl
LEFT JOIN category_lang cl on cl.id_category = (select cp.id_category from category_product cp where cp.id_product=pl.id_product LIMIT 0,1 ) and cl.id_lang=2
LEFT JOIN stock_available sa on sa.id_product=pl.id_product and (sa.id_product_attribute<>0
or sa.id_product not in (select id_product from stock_available where id_product_attribute<>0))
LEFT JOIN (select id_product_attribute, MIN(id_attribute) id_attribute from product_attribute_combination group by id_product_attribute) pac 
on pac.id_product_attribute = sa.id_product_attribute and sa.id_product_attribute<>0
LEFT JOIN attribute_lang al on al.id_attribute=pac.id_attribute and al.id_lang=2
LEFT JOIN attribute_group_lang agl on agl.id_attribute_group=(
select a.id_attribute_group from attribute a where a.id_attribute = pac.id_attribute LIMIT 0,1) and agl.id_lang=2
WHERE pl.id_lang=2
ORDER BY pl.id_product desc

Bon, alors déjà BIG SELECT parce que sinon ça passe pas (je suis une ancienne de SQL Server... je suis frustrée donc)

Ensuite ma problématique c'était d'avoir des déclinaisons, et le stock, puisque c'est pour une client qui veut faire un inventaire et qui bcp de produits presque tous avec déclinaison.

 

Donc explications :

Je commence par product_lang avec id_lang=2 because je veux français.

+ Je joins UNE catégorie (au pif celle qui vient) - ceci pourrait être INNER JOIN si on est sûr d'avoir une categ...

+ Je joins le stock et là faut avoir quelques notions du stock 1.5 : SOIT je joins pour une déclinaison SOIT le produit n'a pas de déclinaison - idem ça devrait être INNER JOIN si on est sûr de ne pas avoir d'incohérence, ie de produits qui ne sont pas dans la table stock... Ce site provenant d'une migration 1.3.2 vers 1.5.2 (que j'ai faite oui c'est possible !) on n'est jamais sûr de rien...

+ Je vais chercher le nom de la déclinaison, s'il y en a une (et en fait je ne prends QUE le nom du 1er attribut qui vient - pour ma client ça suffit la plupart du temps... ouf!). Nom de la déclinaison = nom de l'attibut ET nom de la valeur de l'attribut, d'où les multiples jointures...

 

Voili voilou.

Ce n'est pas parfait mais ça a le mérite d'exister.

A noter qui si je ne suis pas connectée sur phpmyadmin en root ça ne fonctionne pas, et que l'export en csv ou autre ne fonctionne pas non plus, je n'ai pas cherché plus loin donc je fais un copié/collé du résultat...

 

Si vous vous en servez et que vous êtes content faites le moi savoir !

Si ça marche pas je ne veux pas le savoir :)

 

a+

Pascaline

Link to comment
Share on other sites

re bonjour,

 

Après tumultes essai, très galère pour moi, j'ai reussi a exporté les commandes "en cours de livraisons" via cette commande :

SELECT O.id_order, O.id_customer, C.email, C.lastname, C.firstname

FROM `ps_orders` O

INNER JOIN ps_order_history OH on OH.id_order = O.id_order

INNER JOIN ps_customer C on C.id_customer= O.id_customer

where OH.id_order_state = 2

 

Le problème est quand j'essai de modifier le statut avec cette commande :

INSERT INTO ps_order_history (id_employee, id_order, id_order_state, date_add)

VALUES(2 ,7,5, '20/09/2013 07:30'),

VALUES(2,8,5,'20/09/2013 07:30'),

......

j'ai une erreur  de ce type :

MySQL a répondu:b_help.png

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES(2,7,5,'20/09/2013  07:30'),

VALUES(2,8,5,'20/09/2013  07:30'),

VALUES(2' at line 3 

 

Quelqu'un aurait une piste ?????

Bonjour Calindoudou,

Il y a un espace sur la 1er ligne (2 ,7...

Edited by monvidedressing (see edit history)
Link to comment
Share on other sites

Bonjour bonjour,

 

Voici une petite contribution, ma requête pour sortir l'inventaire :

SET SQL_BIG_SELECTS=1;

SELECT pl.id_product 'ID produit', pl.name Nom, cl.name Catégorie,
IFNULL(sa.quantity, '?') Quantité, CONCAT(IFNULL(CONCAT(agl.name,' : '),''), IFNULL(al.name,'')) Déclinaison
FROM product_lang pl
LEFT JOIN category_lang cl on cl.id_category = (select cp.id_category from category_product cp where cp.id_product=pl.id_product LIMIT 0,1 ) and cl.id_lang=2
LEFT JOIN stock_available sa on sa.id_product=pl.id_product and (sa.id_product_attribute<>0
or sa.id_product not in (select id_product from stock_available where id_product_attribute<>0))
LEFT JOIN (select id_product_attribute, MIN(id_attribute) id_attribute from product_attribute_combination group by id_product_attribute) pac 
on pac.id_product_attribute = sa.id_product_attribute and sa.id_product_attribute<>0
LEFT JOIN attribute_lang al on al.id_attribute=pac.id_attribute and al.id_lang=2
LEFT JOIN attribute_group_lang agl on agl.id_attribute_group=(
select a.id_attribute_group from attribute a where a.id_attribute = pac.id_attribute LIMIT 0,1) and agl.id_lang=2
WHERE pl.id_lang=2
ORDER BY pl.id_product desc

Bon, alors déjà BIG SELECT parce que sinon ça passe pas (je suis une ancienne de SQL Server... je suis frustrée donc)

Ensuite ma problématique c'était d'avoir des déclinaisons, et le stock, puisque c'est pour une client qui veut faire un inventaire et qui bcp de produits presque tous avec déclinaison.

 

Donc explications :

Je commence par product_lang avec id_lang=2 because je veux français.

+ Je joins UNE catégorie (au pif celle qui vient) - ceci pourrait être INNER JOIN si on est sûr d'avoir une categ...

+ Je joins le stock et là faut avoir quelques notions du stock 1.5 : SOIT je joins pour une déclinaison SOIT le produit n'a pas de déclinaison - idem ça devrait être INNER JOIN si on est sûr de ne pas avoir d'incohérence, ie de produits qui ne sont pas dans la table stock... Ce site provenant d'une migration 1.3.2 vers 1.5.2 (que j'ai faite oui c'est possible !) on n'est jamais sûr de rien...

+ Je vais chercher le nom de la déclinaison, s'il y en a une (et en fait je ne prends QUE le nom du 1er attribut qui vient - pour ma client ça suffit la plupart du temps... ouf!). Nom de la déclinaison = nom de l'attibut ET nom de la valeur de l'attribut, d'où les multiples jointures...

 

Voili voilou.

Ce n'est pas parfait mais ça a le mérite d'exister.

A noter qui si je ne suis pas connectée sur phpmyadmin en root ça ne fonctionne pas, et que l'export en csv ou autre ne fonctionne pas non plus, je n'ai pas cherché plus loin donc je fais un copié/collé du résultat...

 

Si vous vous en servez et que vous êtes content faites le moi savoir !

Si ça marche pas je ne veux pas le savoir :)

 

a+

Pascaline

Bonjour Askaline,

 

Comme je suis une mauvaise élève.... je la ramène..:-)

En PS 1.5.6, lorsque je mets cette requête dans le Gestionnaire SQL, j'ai une erreur :

La table DEPENDENT-SUBQUERY n'existe pas.

Et je ne trouve pas d'où vient l'erreur puisque cette table effectivement n'existe pas et n'est pas appelé.

J'ai d'autres requêtes qui fonctionne parfaitement !!

Link to comment
Share on other sites

Re bonjour,

J'avais cette requête qui fonctionnait très bien et après une MAJ de 1.5.5 en 1.5.6, le fichier est vide. Aucune erreur n'apparaît. Elle fonctionne sur Mysql.

Mes autres requêtes pour les catégories... fonctionnent très bien.

Je précise que le fichier contient normalement environ 20 000 lignes.

 

SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, cl.id_category, p.price, p.id_tax_rules_group, p.wholesale_price, p.on_sale, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) WHERE pl.id_lang = 2 AND cl.id_lang = 2 GROUP BY p.id_product

 

EDIT : je suis idiote mais puisque la requête fonctionne sur Mysql c'est du côté de Prestashop qu'il y a un soucis.

 

EDIT : c'est la partie "GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories" qui pose un problème !!!

 

EDIT : Finalement problème résolu par l'opération du Saint Esprit.... Les mystères de l'informatique !!!

Edited by monvidedressing (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Bonjour, j'essai d'appliquer les requetes présentées ici même pour passer ma boutique de 1.4.7.3 à 1.5.6.1 a la fin de l'importation, j'ai un message me disant que les donnés sont bien importées mais il n'y a toujours rien de visible dans mon BO, que ce passe t'il ?

 

merci

Link to comment
Share on other sites

Bonjour, j'essai d'appliquer les requetes présentées ici même pour passer ma boutique de 1.4.7.3 à 1.5.6.1 a la fin de l'importation, j'ai un message me disant que les donnés sont bien importées mais il n'y a toujours rien de visible dans mon BO, que ce passe t'il ?

 

merci

Bonjour brikobike,

 

Ces requêtes sont pour exporter les produits mais pas les importer. Comment pouvez-vous importer avec ces requêtes ??????

Vous importez quoi (fichier csv ou sql ) et par quel biais (l'import PS ou l'import directe dans la base de données)?

Link to comment
Share on other sites

Bonjour monvidedressing, tout d'abord je te remercie pour ton aide, je me sert des requetes pour exporter mes produits en CSV via PHPadmin puis je les importes via le module import inclus dans prestashop, j'ai bien un message me disant que l'importation a été effectuée mais je n'ai toujours rien dans la colone "categorie" ou autres   :(

Edited by brikobike (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

Merci pour ce tuto que je viens de découvrir.

Je recherche quelle serait la requêtes SQL pour récupérer les commandes clients.

 

Merci de votre aides.

Bonne fêtes à tous.

 

Bonjour,

 

Merci pour vos contributions.

 

mfrederic4, pour les commandes, Prestashop préconise ce code : 

 
Listing all the orders, with details about carrier, currency, payment, total and date

SELECT o.`id_order` AS `id`,
    CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `Customer`,
    ca.`name` AS `Carrier`,
    cu.`name` AS `Currency`,
    o.`payment`, CONCAT(o.`total_paid_real`, ' ', cu.`sign`) AS `Total`,
    o.`date_add` AS `Date`
FROM `ps_orders` o
LEFT JOIN `ps_customer` c ON (o.`id_customer` = c.`id_customer`)
LEFT JOIN `ps_carrier` ca ON (o.id_carrier = ca.id_carrier)
LEFT JOIN `ps_currency` cu ON (o.`id_currency` = cu.`id_currency`)

Source : http://doc.prestashop.com/display/PS16/SQL+Manager

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

Merci pour vos contributions.

 

mfrederic4, pour les commandes, Prestashop préconise ce code : 

 
Listing all the orders, with details about carrier, currency, payment, total and date

SELECT o.`id_order` AS `id`,
    CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `Customer`,
    ca.`name` AS `Carrier`,
    cu.`name` AS `Currency`,
    o.`payment`, CONCAT(o.`total_paid_real`, ' ', cu.`sign`) AS `Total`,
    o.`date_add` AS `Date`
FROM `ps_orders` o
LEFT JOIN `ps_customer` c ON (o.`id_customer` = c.`id_customer`)
LEFT JOIN `ps_carrier` ca ON (o.id_carrier = ca.id_carrier)
LEFT JOIN `ps_currency` cu ON (o.`id_currency` = cu.`id_currency`)

Source : http://doc.prestashop.com/display/PS16/SQL+Manager

 

Merci ça marche très bien mais j'aurais besoin d'ajouter dans cet export le prix d'achat fournisseur correspondant au produit acheter.

J'essaie d'exporter la valeur "wholesale_price" de la table "ps_product" en vain.

Quelqu'un aurait il une idée?

En vous remerciant par avance.

Link to comment
Share on other sites

  • 4 weeks later...

Pour aussi avoir les quantités :

 

SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, cl.id_category, p.price, p.id_tax_rules_group, p.wholesale_price, p.on_sale, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, sa.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product) LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category) LEFT JOIN ps_stock_available sa ON (p.id_product = sa.id_product) WHERE pl.id_lang = 2 AND cl.id_lang = 2 GROUP BY p.id_product

Edited by brandlee (see edit history)
Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
  • 1 month later...

Bonjour bonjour,

 

Voici une petite contribution, ma requête pour sortir l'inventaire :

SET SQL_BIG_SELECTS=1;

SELECT pl.id_product 'ID produit', pl.name Nom, cl.name Catégorie,
IFNULL(sa.quantity, '?') Quantité, CONCAT(IFNULL(CONCAT(agl.name,' : '),''), IFNULL(al.name,'')) Déclinaison
FROM product_lang pl
LEFT JOIN category_lang cl on cl.id_category = (select cp.id_category from category_product cp where cp.id_product=pl.id_product LIMIT 0,1 ) and cl.id_lang=2
LEFT JOIN stock_available sa on sa.id_product=pl.id_product and (sa.id_product_attribute<>0
or sa.id_product not in (select id_product from stock_available where id_product_attribute<>0))
LEFT JOIN (select id_product_attribute, MIN(id_attribute) id_attribute from product_attribute_combination group by id_product_attribute) pac 
on pac.id_product_attribute = sa.id_product_attribute and sa.id_product_attribute<>0
LEFT JOIN attribute_lang al on al.id_attribute=pac.id_attribute and al.id_lang=2
LEFT JOIN attribute_group_lang agl on agl.id_attribute_group=(
select a.id_attribute_group from attribute a where a.id_attribute = pac.id_attribute LIMIT 0,1) and agl.id_lang=2
WHERE pl.id_lang=2
ORDER BY pl.id_product desc

Bon, alors déjà BIG SELECT parce que sinon ça passe pas (je suis une ancienne de SQL Server... je suis frustrée donc)

Ensuite ma problématique c'était d'avoir des déclinaisons, et le stock, puisque c'est pour une client qui veut faire un inventaire et qui bcp de produits presque tous avec déclinaison.

 

Donc explications :

Je commence par product_lang avec id_lang=2 because je veux français.

+ Je joins UNE catégorie (au pif celle qui vient) - ceci pourrait être INNER JOIN si on est sûr d'avoir une categ...

+ Je joins le stock et là faut avoir quelques notions du stock 1.5 : SOIT je joins pour une déclinaison SOIT le produit n'a pas de déclinaison - idem ça devrait être INNER JOIN si on est sûr de ne pas avoir d'incohérence, ie de produits qui ne sont pas dans la table stock... Ce site provenant d'une migration 1.3.2 vers 1.5.2 (que j'ai faite oui c'est possible !) on n'est jamais sûr de rien...

+ Je vais chercher le nom de la déclinaison, s'il y en a une (et en fait je ne prends QUE le nom du 1er attribut qui vient - pour ma client ça suffit la plupart du temps... ouf!). Nom de la déclinaison = nom de l'attibut ET nom de la valeur de l'attribut, d'où les multiples jointures...

 

Voili voilou.

Ce n'est pas parfait mais ça a le mérite d'exister.

A noter qui si je ne suis pas connectée sur phpmyadmin en root ça ne fonctionne pas, et que l'export en csv ou autre ne fonctionne pas non plus, je n'ai pas cherché plus loin donc je fais un copié/collé du résultat...

 

Si vous vous en servez et que vous êtes content faites le moi savoir !

Si ça marche pas je ne veux pas le savoir :)

 

a+

Pascaline

 

Merci Pascaline pour votre code, il fonctionne nickel.

 

Mais comment peut-on faire apparaitre les valeurs pour les attributs?

 

Edit: J'ai réussi à les voir :)

Edited by danvers (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...

ma petite contribution qui fonctionne impec pour l'export de vos catégorie en ligne avec leur ID .

 

SELECT `id_category`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description` FROM `ps_category_lang` WHERE 1

 

 

n'oublier pas avant l'export de cocher CSV, la séparation c'est le point virgule et coche " ajouter le nom en premiere ligne )

 

 

Link to comment
Share on other sites

  • 4 months later...

bonjour

j'apporte également ma contribution en répondant au post de Cyrkam

 

 

Bonjour,

J'ai un soucis avec cette requete :
 

'epic1110', on 13 Feb 2012 - 11:22 AM, said:snapback.png

Création du fichier CSV pour récuperer vos adresses:

SELECT
ps_address
.id_address,
ps_address.alias,
ps_address.active,
ps_customer.email,
ps_manufacturer.`name` AS Manufacturer,
ps_supplier.`name` AS Supplier,
ps_address.company,
ps_address.lastname,
ps_address.firstname,
ps_address.address1,
ps_address.address2,
ps_address.postcode,
ps_address.city,
ps_country_lang.`name` AS Country,
ps_state.`name` AS State,
ps_address.other,
ps_address.phone,
ps_address.phone_mobile,
ps_address.vat_number
FROM
ps_address
LEFT JOIN ps_customer ON ps_customer
.id_customer = ps_address.id_customer
LEFT JOIN ps_manufacturer ON ps_manufacturer
.id_manufacturer = ps_address.id_manufacturer
LEFT JOIN ps_supplier ON ps_supplier
.id_supplier = ps_address.id_supplier
LEFT JOIN ps_country_lang ON ps_country_lang
.id_country = ps_address.id_country
LEFT JOIN ps_state ON ps_state
.id_state = ps_address.id_state

Elle me génère 4 Adresses identiques pour chaque client .... Pourquoi ?

 

Pour sélectionner une seule occurence de chaque adresse il te faut cette requète:

 

SELECT DISTINCT

ps_address.id_address,
ps_address.alias,
ps_address.active,
ps_customer.email,
ps_address.id_customer AS 'ID client',
ps_manufacturer.`name` AS Manufacturer,
ps_supplier.`name` AS Supplier,
ps_address.company,
ps_address.lastname,
ps_address.firstname,
ps_address.address1,
ps_address.address2,
ps_address.postcode,
ps_address.city,
ps_state.`name` AS State,
ps_address.other,
ps_address.phone,
ps_address.phone_mobile,
ps_address.vat_number,
ps_address.id_country

FROM
ps_address

LEFT JOIN (ps_manufacturer, ps_supplier, ps_state)

ON  (

ps_manufacturer.id_manufacturer = ps_address.id_manufacturer AND
ps_supplier.id_supplier = ps_address.id_supplier AND
ps_state.id_state = ps_address.id_state  
)

INNER JOIN ps_customer ON ps_address.id_customer = ps_customer.id_customer


GROUP BY ps_address.id_address

 

il me fallait un INNER JOIN sur la table ps_customer sinon la requète me retournait un résultat null dans les colonnes id_customer et email... cette requète fonctionne pour un presta 1.6.0.11 donc je pense que cela devrait marcher sur les version précédentes...

Edited by kingfaya (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour, je me sert de cette requète pour exporter mes produits, par contre j'aurai aimé rajouter la possibilité d'exporter en même temps le Code EAN et le fournisseur , quelqu'un aurai la solution ?

 

D'avance merci

 

Requète :

 

SELECT
 p
.id_product,
 p.reference,
 group_concat(concat(psupp.product_supplier_reference)) as refs_fournisseur,
 pl.name,
 p.id_category_default,
 m.name as manufacturer_name,
 pshop.price as prix_ht,
 pl.description_short AS resume,
 pl.description AS description,
 sa.quantity as 'quantite',
 p.active

FROM ps_product p
LEFT JOIN ps_product_lang pl on pl
.id_product = p.id_product and pl.id_lang = 1 and pl.id_shop = 1
LEFT JOIN ps_product_shop pshop on pshop.id_product = p.id_product and pshop.id_shop = 1
LEFT JOIN ps_manufacturer m on m.id_manufacturer = p.id_manufacturer
LEFT JOIN ps_product_supplier psupp on psupp
.id_product = p.id_product and psupp.id_product_attribute = 0
INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1
group by p.id_product

 

 

 

 

voilà

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

yop

ajoute p.ean13 pour le code EAN13 (je te l'ai mis dans le même format que ta requête normalement si tu copie-colle ça devrait passer,.... sans oublier les virgules ^^)

et pour le fournisseur:

 

soit tu ajoute p.id_supplier qui te donnera par la suite le fournisseur correspondant

soit tu ajoute la ligne ps_supplier.name qui te donnera directement le nom du fournisseur

 

dans le second cas, tu devra ajouter ps_product.id_supplier = ps_supplier.id_supplier dans tes arguments "on"

(d'ailleurs a ce sujet savais tu que tu peux grouper tes LEFT JOIN avec une parenthèse? ça donne comme on peut le voir un peu plus haut dans ce topic: LEFT JOIN ma_table ON (mon_premier_arg =mon_second_arg AND mon_premier_arg = mon_troisieme_arg..... et ainsi de suite))

 

en espérant que cela te servira

 

edit

 

Sinon tu peux aller voir dans ta BDD, tu verras directement quelles sont les infos qui te sont utiles et ou les trouver. Il ne te restera plus qu'a faire la bonne joiture pour les avoir dans ta requète ^^

Edited by kingfaya (see edit history)
Link to comment
Share on other sites

yop

ajoute p.ean13 pour le code EAN13 (je te l'ai mis dans le même format que ta requête normalement si tu copie-colle ça devrait passer,.... sans oublier les virgules ^^)

et pour le fournisseur:

 

soit tu ajoute p.id_supplier qui te donnera par la suite le fournisseur correspondant

soit tu ajoute la ligne ps_supplier.name qui te donnera directement le nom du fournisseur

 

dans le second cas, tu devra ajouter ps_product.id_supplier = ps_supplier.id_supplier dans tes arguments "on"

(d'ailleurs a ce sujet savais tu que tu peux grouper tes LEFT JOIN avec une parenthèse? ça donne comme on peut le voir un peu plus haut dans ce topic: LEFT JOIN ma_table ON (mon_premier_arg =mon_second_arg AND mon_premier_arg = mon_troisieme_arg..... et ainsi de suite))

 

en espérant que cela te servira

 

edit

 

Sinon tu peux aller voir dans ta BDD, tu verras directement quelles sont les infos qui te sont utiles et ou les trouver. Il ne te restera plus qu'a faire la bonne joiture pour les avoir dans ta requète ^^

 

OK, merci, j'aurai du préciser que j'étais un novice dans ce domaine :) ..... donc je vais essayer de faire ça et reviens ici pour donner des nouvelles.

 

En tout cas merci

 

Donc si je comprend bien, ça devrai donner ça :

 

 

SELECT

 p.id_product,

 p.reference,

 group_concat(concat(psupp.product_supplier_reference)) as refs_fournisseur,

 pl.name,

 p.id_category_default,

 m.name as manufacturer_name,

 pshop.price as prix_ht,

 pl.description_short AS resume,

 pl.description AS description,

 sa.quantity as 'quantite',

 p.ean13,

 ps_supplier.name,

 p.active

 

FROM ps_product p

LEFT JOIN ps_product_lang pl on pl.id_product = p.id_product and pl.id_lang = 1 and pl.id_shop = 1

LEFT JOIN ps_product_shop pshop on pshop.id_product = p.id_product and pshop.id_shop = 1

LEFT JOIN ps_manufacturer m on m.id_manufacturer = p.id_manufacturer

LEFT JOIN ps_product.id_supplier = ps_supplier.id_supplier

LEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_product and psupp.id_product_attribute = 0

INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1

group by p.id_product

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

Je ne comprend pas trop ces deux lignes...

 

 

LEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_product and psupp.id_product_attribute = 0
INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1

Link to comment
Share on other sites

Les jointures servent juste à indiquer "comment" lier les tables (par là j'entend qu'elle indiquent via les arguments passés en ON sur quel élément les tables ont un point commun)

c'est donc pour cela que l'on retrouve le même nom de colonne.

 

tu peux grouper tes jointures en faisant quelque chose de ce genre:

 

LEFT JOIN ps_product_lang pl, ps_product_shop ps, ps_manufacturer pm, ps_supplier

ON

(

ps_product.id_product = pl.id_product AND

ps_product.id_product = ps.id_product AND

ps_product.id_manufacturer = pm.id_manufacturer

)

 

pour selectionner uniquement certains résultats d'apres leur valeurs, tu dois rajouter un WHERE apres la définition des jointures du genre:

 

WHERE

p.id_product = 0 AND

p.id_shop = 1

 

et APRES tu mets ton GROUP BY

 

j'espere que cela t'aura servi pour comprendre un peu plus comment cela fonctionne...

Link to comment
Share on other sites

Les jointures servent juste à indiquer "comment" lier les tables (par là j'entend qu'elle indiquent via les arguments passés en ON sur quel élément les tables ont un point commun)

c'est donc pour cela que l'on retrouve le même nom de colonne.

 

tu peux grouper tes jointures en faisant quelque chose de ce genre:

 

LEFT JOIN ps_product_lang pl, ps_product_shop ps, ps_manufacturer pm, ps_supplier

ON

(

ps_product.id_product = pl.id_product AND

ps_product.id_product = ps.id_product AND

ps_product.id_manufacturer = pm.id_manufacturer

)

 

pour selectionner uniquement certains résultats d'apres leur valeurs, tu dois rajouter un WHERE apres la définition des jointures du genre:

 

WHERE

p.id_product = 0 AND

p.id_shop = 1

 

et APRES tu mets ton GROUP BY

 

j'espere que cela t'aura servi pour comprendre un peu plus comment cela fonctionne...

 Donc avec ma requête mentionné au-dessus , j'ai un message d'erreur :

" #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.id_supplier LEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_prod' at line 23 "

 

Je ne comprend pas, comment font les utilisateurs de prestashop ? L'export des produit pour mettre à jour, vérifié le stock me parait inévitable , non ?

 

Sinon, j'ai essayé en modifiant comme tu m'as indiqué ça donne ça :

 

 

SELECT

 p.id_product,

 p.reference,

 group_concat(concat(psupp.product_supplier_reference)) as refs_fournisseur,

 pl.name,

 p.id_category_default,

 m.name as manufacturer_name,

 pshop.price as prix_ht,

 pl.description_short AS resume,

 pl.description AS description,

 sa.quantity as 'quantite',

 p.ean13,

 ps_supplier.name,

 p.active

 

FROM ps_product p

LEFT JOIN ps_product_lang pl, ps_product_shop ps, ps_manufacturer pm, ps_supplier

ON

(

ps_product.id_product = pl.id_product AND

ps_product.id_product = ps.id_product AND

ps_product.id_manufacturer = pm.id_manufacturer

)

group by p.id_product

 mais avec cette requête, j'ai ce mesage d'erreur :

 

" #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' ps_product_shop ps, ps_manufacturer pm, ps_supplier ON ( ps_product.id_produ' at line 20 "

 

Je ne comprend pas qu'il n'y a pas de module ou une manière simple d'exporter une liste des ses produits avec  les références, fournisseurs, prix, codes EAN, etc ....

 

Merci

Link to comment
Share on other sites

Bon finalement, j'ai utilisé :

 

 

SELECT
 p.id_product,
 p.id_supplier,
 p.ean13,
 p.reference,
 group_concat(concat(psupp.product_supplier_reference)) as refs_fournisseur,
 pl.name,
 p.id_category_default,
 m.name as manufacturer_name,
 pshop.price as prix_ht,
 pl.description_short AS resume,
 pl.description AS description,
 sa.quantity as 'quantite',
 p.active

FROM ps_product p
LEFT JOIN ps_product_lang pl on pl.id_product = p.id_product and pl.id_lang = 1 and pl.id_shop = 1
LEFT JOIN ps_product_shop pshop on pshop.id_product = p.id_product and pshop.id_shop = 1
LEFT JOIN ps_manufacturer m on m.id_manufacturer = p.id_manufacturer
LEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_product and psupp.id_product_attribute = 0
INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1
group by p.id_product

 

Qu'en pensez vous, apparemment, ça à l'air de fonctionner.

 

Par contre comment remplacer l'ID du fournisseur ( p.id_supplier,) par son nom directement ?

 

Merci

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

Vérifie simplement que tu as bien les champs que tu désire et qu'ils ne soient pas dupliqués. Si phpMyAdmin ne te donne pas une erreur c'est que le requête est valide.

maintenant c'est a toi de savoir si tu as bien tous les éléments dont tu as besoin pour ton import et qu'ils ne sont pas en double (voire triple).

Link to comment
Share on other sites

Vérifie simplement que tu as bien les champs que tu désire et qu'ils ne soient pas dupliqués. Si phpMyAdmin ne te donne pas une erreur c'est que le requête est valide.

maintenant c'est a toi de savoir si tu as bien tous les éléments dont tu as besoin pour ton import et qu'ils ne sont pas en double (voire triple).

 

Bonjour, pour l'instant ça fonctionne, il me manque juste le nom du fournisseur, car pour l'instant il me sort l'ID.

Mais je ne trouve pas le moyen pour ça.

 

Ma requête utilisée et sur le post avant.

 

Merci

Link to comment
Share on other sites

pour le nom du fournisseur je pense que tu dois piocher dans la table ps_supplier_lang (ou quelque chose comme ça)

 

Oui, il faudrait récupérer le nom ( colonne "name") dans la table " ps_supplier ", mais je n'y arrive pas...

 

Quelqu'un aurai une idée ?

 

Merci

Link to comment
Share on other sites

en fait il y a plein de trucs que je ne comprend pas dans ta requête...

c'est quoi ton sa.quantity

parce que je vois nulle part la déclaration de l'alias.. donc je ne sais pas trop a quoi cela correspond...

ce que je te recommanderais, dans un premier temps, c'est d'enlever tes alias et de mettre le vrai nom des tables dans lesquelles tu veut piocher des infos. ça te permettra de mieux visualiser dans quelle table tu vas chercher les infos et peut être de mieux comprendre comment elles s'articulent entre elles .

(parce que là je t'avoue que je suis un peu perdu, j'ai beau prendre ma BDD comme exemple (elle devrait être sensiblement la même) je n'arrive pas a afficher du résultat... ta requète de base est valide mais ne renvoie rien)

je vais te mettre celle que j'ai utilisé et tu me diras si elle fonctionne et si il te manque des infos a piocher... ça te va?

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_product.price AS 'prix_ht',

ps_product_lang.description_short AS 'resume',

ps_product_lang.description AS 'Description',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

ps_image.id_image AS 'id_image',

ps_image.position AS 'position_image',

ps_image.cover AS 'cover',

ps_image_lang.legend AS 'legend'

 

FROM ps_product

 

LEFT JOIN ( ps_category_product, ps_manufacturer, ps_image, ps_image_lang)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

ps_product.id_product = ps_image.id_product AND

ps_image.id_image = ps_image_lang.id_image

)

 

INNER JOIN ps_product_lang

 

ON ps_product.id_product=ps_product_lang.id_product

 

WHERE ps_product_lang.description_short != ' '

 

GROUP BY ps_product.id_product

Link to comment
Share on other sites

en fait il y a plein de trucs que je ne comprend pas dans ta requête...

c'est quoi ton sa.quantity

parce que je vois nulle part la déclaration de l'alias.. donc je ne sais pas trop a quoi cela correspond...

ce que je te recommanderais, dans un premier temps, c'est d'enlever tes alias et de mettre le vrai nom des tables dans lesquelles tu veut piocher des infos. ça te permettra de mieux visualiser dans quelle table tu vas chercher les infos et peut être de mieux comprendre comment elles s'articulent entre elles .

(parce que là je t'avoue que je suis un peu perdu, j'ai beau prendre ma BDD comme exemple (elle devrait être sensiblement la même) je n'arrive pas a afficher du résultat... ta requète de base est valide mais ne renvoie rien)

je vais te mettre celle que j'ai utilisé et tu me diras si elle fonctionne et si il te manque des infos a piocher... ça te va?

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_product.price AS 'prix_ht',

ps_product_lang.description_short AS 'resume',

ps_product_lang.description AS 'Description',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

ps_image.id_image AS 'id_image',

ps_image.position AS 'position_image',

ps_image.cover AS 'cover',

ps_image_lang.legend AS 'legend'

 

FROM ps_product

 

LEFT JOIN ( ps_category_product, ps_manufacturer, ps_image, ps_image_lang)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

ps_product.id_product = ps_image.id_product AND

ps_image.id_image = ps_image_lang.id_image

)

 

INNER JOIN ps_product_lang

 

ON ps_product.id_product=ps_product_lang.id_product

 

WHERE ps_product_lang.description_short != ' '

 

GROUP BY ps_product.id_product

 

OK, merci, en fait c'est une requète qyue j'avais trouvé sur le forum est reprise, mais j'avoue que je ne comprenais pas tout...

 

La tienne est plus claire effectivement. Par contre il faut juste que je réussi à rajouter le nom du fournisseur.

 

Est-ce que je peux rajouter :

 

ps_supplier.name AS 'Fournisseur' ,

 

Dans le " paragraphe " Select Distinct, et faut- il rajouter autre chose dans les "paragraphe" en -dessous ( les jointure si j'ai bien compris) ?

 

Ce qui me donnerait :

 

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_supplier.name AS 'Fournisseur' ,

ps_product.price AS 'prix_ht',

ps_product_lang.description_short AS 'resume',

ps_product_lang.description AS 'Description',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

ps_image.id_image AS 'id_image',

ps_image.position AS 'position_image',

ps_image.cover AS 'cover',

ps_image_lang.legend AS 'legend'

 

FROM ps_product

 

LEFT JOIN ( ps_category_product, ps_manufacturer, ps_image, ps_image_lang)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

ps_product.id_product = ps_image.id_product AND

ps_image.id_image = ps_image_lang.id_image

)

 

INNER JOIN ps_product_lang

 

ON ps_product.id_product=ps_product_lang.id_product

 

WHERE ps_product_lang.description_short != ' '

 

GROUP BY ps_product.id_product

 

 

Merci

 

Edit: Bon ça ne fonctionne pas..... j'ai ce message d'erreur : " #1054 - Unknown column 'ps_supplier.name' in 'field list' "

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

oui c'est normal que ça ne fonctionne pas

 

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_supplier.name AS 'Fournisseur' ,

ps_product.price AS 'prix_ht',

ps_product_lang.description_short AS 'resume',

ps_product_lang.description AS 'Description',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

ps_image.id_image AS 'id_image',

ps_image.position AS 'position_image',

ps_image.cover AS 'cover',

ps_image_lang.legend AS 'legend'

 

FROM ps_product

 

LEFT JOIN ( ps_category_product, ps_manufacturer, ps_image, ps_image_lang)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

ps_product.id_product = ps_image.id_product AND

ps_image.id_image = ps_image_lang.id_image

)

 

INNER JOIN ps_product_lang

 

ON ps_product.id_product=ps_product_lang.id_product

 

WHERE ps_product_lang.description_short != ' '

 

GROUP BY ps_product.id_product

 

 car tu as oublié de préciser la jointure de la table ps-supplier et ps-product, c'est pour cela qu'il ne peut trouver la colonne correspondante

 

essaie en rajoutant dans le left join

 

ps_product.id_product = ps_supplier.id_product

 

en suivant la même logique que les jointure précédentes

 

(je te fais ça vite fait sur un coin de table avent de partir du travail a vrai dire... éssaie ce soir ou demain matin et moi je me repenche dessus demain si cela ne fonctionne toujours pas... ceci dit si tu comptais sur moi pour te filer une soluce toute faite ... c'est mort! ^^ Je préfère t'apprendre à pêcher plutôt que de te donner un poisson ^^)

 

encore une dernière chose: vas dans ton phpmyadmin et vérifie bien la structure de tes tables... je ne suis pas certain que le nom du fournisseur se trouve dans ps_supplier... je crois (si c'est bien construit comme la table ps_product) que tu vas trouver le nom du fournisseur dans ps_supplier_lang... mais je ne suis pas sur de monj coup alors tu devrais vérifier....

bonne soirée a toi et tiens moi au jus demain pour savoir si cela a marché ou pas ^^

Link to comment
Share on other sites

Bon nouvelle requête qui a l'air de fonctionner :

 

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_supplier.name AS 'Fournisseur' ,

ps_product.price AS 'prix_ht',

ps_product_lang.description_short AS 'resume',

ps_product_lang.description AS 'Description',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

ps_image.id_image AS 'id_image',

ps_image.position AS 'position_image',

ps_image.cover AS 'cover',

ps_image_lang.legend AS 'legend'

 

FROM ps_product

 

LEFT JOIN ( ps_category_product, ps_manufacturer, ps_image, ps_image_lang, ps_supplier)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

ps_product.id_product = ps_image.id_product AND

ps_image.id_image = ps_image_lang.id_image

)

 

INNER JOIN ps_product_lang

 

ON ps_product.id_product=ps_product_lang.id_product

 

WHERE ps_product_lang.description_short != ' '

 

GROUP BY ps_product.id_product

 

Voilà, qu'en penses tu ?

 

Et sinon, est-ce normal qui a 2 fois la ligne :

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_product = ps_category_product.id_product AND

 

Si oui pourquoi ?

 

Merci

Link to comment
Share on other sites

oui c'est normal que ça ne fonctionne pas

 

 

 car tu as oublié de préciser la jointure de la table ps-supplier et ps-product, c'est pour cela qu'il ne peut trouver la colonne correspondante

 

essaie en rajoutant dans le left join

 

ps_product.id_product = ps_supplier.id_product

 

en suivant la même logique que les jointure précédentes

 

(je te fais ça vite fait sur un coin de table avent de partir du travail a vrai dire... éssaie ce soir ou demain matin et moi je me repenche dessus demain si cela ne fonctionne toujours pas... ceci dit si tu comptais sur moi pour te filer une soluce toute faite ... c'est mort! ^^ Je préfère t'apprendre à pêcher plutôt que de te donner un poisson ^^)

 

encore une dernière chose: vas dans ton phpmyadmin et vérifie bien la structure de tes tables... je ne suis pas certain que le nom du fournisseur se trouve dans ps_supplier... je crois (si c'est bien construit comme la table ps_product) que tu vas trouver le nom du fournisseur dans ps_supplier_lang... mais je ne suis pas sur de monj coup alors tu devrais vérifier....

bonne soirée a toi et tiens moi au jus demain pour savoir si cela a marché ou pas ^^

 

Ok, merci j'étais en train de te  répondre.... tu peux regarder le post plus haut.

 

Sinon, le nom des fournisseurs est bien présent dans la table " ps_supplier "

 

Pour répondre, a ton post plus haut, connais tu un site ou un post sur le forum qui expliquerai çà ?

 

Sinon, d'après ce que je comprend, la 1ère partie " Select Distinct" , ceux sont les collonnes avec les champs que l'on veut sortir.

 

Par contre en dessous quand tu écris :

 

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

 

Je comprend donc, que l'idée du produit, n'est pas dans la table ps_product, du coup on lui dit d'aller la chercher dans la table ps_catégory.

Mais pour ma part, l'ID du produit est bien dans la table ps_product" , donc que veut dire cette phrase ?

 

En revanche pour la 2ème, là oui effectivement le nom du fournisseur n'étant pas présent dans la table " ps_product", on va la chercher dans la table "ps_manufacturer", mais pourquoi on marque " .id_manufacturer AND " et pas  " ps_product.id_manufacturer = ps_manufacturer.name AND " , car c'est le nom que je veux moi, et pas l'id ?

 

Et dernière chose, si je veux sortir moins de colonnes que ça, est-ce qu'il suffit de faire moi même le tri dans la parti " SELECT DISTINCT" ou je dois également faire le tri plus bas dans les jointures ?

 

Merci

 

Edit: ma nouvelle requête me sort les produits que d'un seul fournisseur ??

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

Arf effectivement la ligne en double c'est ma faute j'ai pas été assez attentif (bougre de moi!!!)

 

Pour la petite explication :

SELECT

[là tu mets toutes les colonnes que tu veux extraire]

ex: ps_product.name

     (nom_table.nom_colonne)

     ps_supplier.name

FROM

[là tu mets le nom de la table d'où proviennent les colonnes]

ex: ps_product

LEFT JOIN

[ici tu mets les tables supplémentaires]

ex: ps_supplier

ON

[ici c'est là ou les tables se rejoignent et ce qu'elles ont en commun]

ex: ps_product.id_product = ps_supplier.id_product

     (nom_table_reference.colonne = nom_table_ajoutée.colonne)

 

ici la clé primaire d'une table (en l'occurrence l'id_product) est également la clé secondaire d'une autre table, la jointure se fait au niveau de cette fameuse clé. Dans l'argument "ON", on mets en avant les points communs des tables : Pour simplifier, on indique que la colonne de la table de référence correspond à la colonne de la table ajoutée (je sais pas si je suis clair).

 

WHERE

[là c'est la contrainte de sélection]

GROUP BY

[et là tu les range]

 

redis moi si j'ai été suffisamment explicite ^^

avec cela tu devrais t'en tirer un peu mieux.

Sinon si tu veux un cours il y a des tutos très bien fait sur openclassroom

 

J'espère t'avoir été utile ^^

Link to comment
Share on other sites

Arf effectivement la ligne en double c'est ma faute j'ai pas été assez attentif (bougre de moi!!!)

 

Pour la petite explication :

SELECT

[là tu mets toutes les colonnes que tu veux extraire]

ex: ps_product.name

     (nom_table.nom_colonne)

     ps_supplier.name

FROM

[là tu mets le nom de la table d'où proviennent les colonnes]

ex: ps_product

LEFT JOIN

[ici tu mets les tables supplémentaires]

ex: ps_supplier

ON

[ici c'est là ou les tables se rejoignent et ce qu'elles ont en commun]

ex: ps_product.id_product = ps_supplier.id_product

     (nom_table_reference.colonne = nom_table_ajoutée.colonne)

 

ici la clé primaire d'une table (en l'occurrence l'id_product) est également la clé secondaire d'une autre table, la jointure se fait au niveau de cette fameuse clé. Dans l'argument "ON", on mets en avant les points communs des tables : Pour simplifier, on indique que la colonne de la table de référence correspond à la colonne de la table ajoutée (je sais pas si je suis clair).

 

WHERE

[là c'est la contrainte de sélection]

GROUP BY

[et là tu les range]

 

redis moi si j'ai été suffisamment explicite ^^

avec cela tu devrais t'en tirer un peu mieux.

Sinon si tu veux un cours il y a des tutos très bien fait sur openclassroom

 

J'espère t'avoir été utile ^^

 

OK, merci, je vais essayé de me faire une bonne requête, et je met le résultat ici, pour que tu jette un coup d’œil.

 

Sinon, comment savoir si une clé primaire d'une table et également secondaire dans une autre table ? Et est-ce qu'elle peut-être dans + de 2 tables et si oui est-ce que l'on doit joindre toutes les tables ?

 

 

Merci

 

 

 

Merci

Link to comment
Share on other sites

Pour voir quelle colonne est la clé primaire, il te suffit d'aller dans l'onglet structure après avoir sélectionné une table dans phpMyAdmin

La clé primaire est celle qui est en gris

 

Non tu n'est pas obligé de lier toutes les tables dans lesquelles se trouve la clé, juste celle qui détiennent les infos qui t’intéressent et indiquer l'endroit ou la clé secondaire  correspond a la clé primaire (la fameuse jointure) : et ça tu le fais dans l'argument "ON"

Edited by kingfaya (see edit history)
Link to comment
Share on other sites

Pour voir quelle colonne est la clé primaire, il te suffit d'aller dans l'onglet structure après avoir sélectionné une table dans phpMyAdmin

La clé primaire est celle qui est en gris

 

Non tu n'est pas obligé de lier toutes les tables dans lesquelles se trouve la clé, juste celle qui détiennent les infos qui t’intéressent et indiquer l'endroit ou la clé secondaire  correspond a la clé primaire (la fameuse jointure) : et ça tu le fais dans l'argument "ON"

 

Bon, j'en suis là :

 

 

SELECT DISTINCT

ps_product.id_product AS 'id_produit',

ps_product.reference AS 'reference',

ps_product.ean13 AS 'EAN13',

ps_product.supplier_reference AS 'reference fournisseur',

ps_product_lang.name AS 'designation' ,

ps_product.id_category_default AS 'categorie par defaut',

ps_manufacturer.name AS 'marque',

ps_supplier.name AS 'Fournisseur' ,

ps_product.price AS 'prix_ht',

ps_product.quantity AS 'quantite',

ps_product.active AS 'Actif (0.1)',

 

 

FROM ps_product

 

LEFT JOIN (ps_manufacturer, ps_supplier)

 

ON (

ps_product.id_product = ps_category_product.id_product AND

ps_product.id_manufacturer = ps_manufacturer.id_manufacturer AND

C'est là que je bloque... donc apparemment sur phpmyadmin, les clé primaire sont soulignées mais pas grisées... Mais là toi par exemple comment t'as su que la clé "id_product " était aussi présente et apparemment primaire également ( est-ce possible ) dans la table " ps_category_product"  ?

Car moi à je veux récupérer la clé " name " dans la table " ps-supplier" mais elle n'est pas primaire, comment savoir ou est-elle également et de plus primaire ?

ce qui me donnerai à la suite : " ps_supplier.name = "table a trouver"."nom de colonne" .  Est-ce bien ça ?

 

Merci

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

Pour voir quelle colonne est la clé primaire, il te suffit d'aller dans l'onglet structure après avoir sélectionné une table dans phpMyAdmin

La clé primaire est celle qui est en gris

 

Non tu n'est pas obligé de lier toutes les tables dans lesquelles se trouve la clé, juste celle qui détiennent les infos qui t’intéressent et indiquer l'endroit ou la clé secondaire  correspond a la clé primaire (la fameuse jointure) : et ça tu le fais dans l'argument "ON"

 

Bon alors avec l'aide de forum et d'un pote, j'en suis là :

SELECT DISTINCT P.id_product,

S.name, M.name ,Pl.name as

Produit, P.ean13, P.quantity,

P.ecotax, P.wholesale_price,

P.price,

P.reference,group_concat(concat(

P.supplier_reference)), P.active

FROM ps_product as P,

ps_supplier as S,

ps_manufacturer as M,
ps_product_lang as Pl,
ps_product_supplier as Ps

WHERE

P.id_supplier=S.id_supplier
AND

M.id_manufacturer=P.id_manufactu

rer
AND

P.supplier_reference=Ps.product_

supplier_reference
AND Ps.id_product_attribute = 0

ORDER BY S.name, id_product;

 

Par contre, je bloque pour les références produits, je n'ai que les références fournisseurs des produits créés avant la mise à jour des " stock avancés"

Certaines colonnes sont remplies dans la table Produit, et les colonnes vides de cette tables sont remplies dans la table product_supplier. Comment faire pour relier les infos de ces 2 tables.

 

Merci

Link to comment
Share on other sites

Bonjour, je recherche toujours à extraire les références fournisseur, pour tous les articles créés avant la mise à jour des stock avancées, je les trouve dans la table :

 

`ps_product`.`supplier_reference`

 

Mais par contre je ne trouve pas cette référence fournisseur pour les produits créés après cette mise à jour des stock avancées.

 

Quelqu'un aurai une idée ?

 

Merci

Link to comment
Share on other sites

Bonjour,

 

Lorsque j'ouvre mon fichier CSV dans Excel, les textes sont bourrés de caractères spéciaux alors que j'ai exporter la base de donnée en utf8.

 

Avez-vous une idée pour y remédier ? 

 

Merci d'avance

Link to comment
Share on other sites

Bonjour, j'ai 2 problèmes:

 

le 1er:

Y a t'il possibilité d'exporter les produits avec les déclinaisons, car pour l'instant je n'arrive pas à exporter les déclinaisons ?

 

et le 2ème :

C'est bizarre, lorsque j'utilise ma requête sous "phpmyadmin", les références fournisseurs de mes produits apparaissent bien, par contre une fois exporté en .xls, certaine référence n'apparaissent pas sous excel, alors qu'elles sont bien présentes dans la fiche du produit ainsi que sous " phpmyadmin ??

 

Auriez vous une solution ou une idée à mes problèmes ?

 

Merci

 

EDIT, en fait, je viens de m'apercevoir que lorsque les références fournisseurs n'apparaissent pas dans mon fichier excel, ce sont les produits avec des déclinaisons.  Mes 2 problèmes sont donc un peu liés !!

Edited by balaizeben (see edit history)
Link to comment
Share on other sites

Bonjour à tous,

 

Pour l'exportation de mes produits, j'ai trouvé cette requête qui me convient parfaitement sauf pour l'exportation de mes URLs. '' AS 'Image URLs (x,y,z,...)'. 

 

Je suis complètement perdu...

 

Merci pour votre aide ! ;)

 

SELECT DISTINCT
ps_product.id_product AS 'id',
ps_product.active AS 'Actif (0.1)',
ps_product_lang.name AS 'Name*',
ps_product.id_category_default AS 'Categories (x,y,z,...)',
ps_product.price AS 'Price tax excl.',
ps_product.id_tax_rules_group AS 'Tax rules id',
ps_product.weight AS 'Weight',
ps_product.quantity AS 'Quantity',
ps_product_lang.description_short AS 'Short description',
ps_product_lang.description AS 'Description',
ps_product_lang.link_rewrite AS 'URL rewritten',
ps_product_lang.meta_description AS 'Meta Description',
ps_product_lang.meta_keywords AS 'Meta Keywords',
ps_product_lang.meta_title AS 'Meta title'
 
FROM ps_product
 
LEFT OUTER JOIN ps_product_lang
ON ps_product.id_product = ps_product_lang.id_product
 
LEFT OUTER JOIN ps_manufacturer
ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer
 
LEFT OUTER JOIN ps_specific_price
ON ps_product.id_product = ps_specific_price.id_product
 
LEFT OUTER JOIN ps_supplier
ON ps_product.id_supplier = ps_supplier.id_supplier
 
 
WHERE
ps_product_lang.id_lang = 2
Link to comment
Share on other sites

Bonjour petite question pour l'export de mes commandes pour ma compta.

J'utilise la requete suivante

select oi.`id_order_invoice` as Facture, oi.`id_order` as Commande, oi.`date_add` as Date_facture, c.`lastname` as Nom,  c.`firstname` as Prenom,  oi.`total_products` as Total_produits_HT,  (oi.`total_paid_tax_incl` - oi.`total_paid_tax_excl`) as TVA, (oi.`total_paid_tax_incl` - oi.`total_shipping_tax_incl`) as Total_produits_TTC, oi.`total_shipping_tax_excl` as Frais_d_expedition, oi.`total_paid_tax_incl` as Total_paye
from ps_order_invoice oi 
left outer join ps_orders o on oi.`id_order` = o.`id_order` 
left outer join ps_customer c on o.`id_customer` = c.`id_customer` 
order by  oi.`id_order_invoice` DESC

Je souhaite ajouter une colonne : mode_de_paiement afin de pouvoir ensuite travailler sur les commandes par chéque/etc. Je m'y connais pas assez en sql, ce que je sais c'est que je veux extraire "payment_method" de la table ps_order_payment . Quel est la ligne sql a mettre et où. Merci. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...