epic1110 Posted February 13, 2012 Share Posted February 13, 2012 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. 11 Link to comment Share on other sites More sharing options...
epic1110 Posted February 22, 2012 Author Share Posted February 22, 2012 Bonjour, Si des personnes ont un retour à faire, des améliorations à apporter, n'hésitez pas ! Cordialement 1 Link to comment Share on other sites More sharing options...
mikedukie Posted March 2, 2012 Share Posted March 2, 2012 Merci epic1110 ! Import clients de la version 1.3.7 vers 1.4.6 en 3 minutes.. ! Cette astuce me plaît vraiment Beaucoup plus propre que les modules payants. Link to comment Share on other sites More sharing options...
soso45 Posted April 16, 2012 Share Posted April 16, 2012 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 . 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" @+ 1 Link to comment Share on other sites More sharing options...
silco Posted June 19, 2012 Share Posted June 19, 2012 (edited) Ce tuto est supper merci beaucoup tres beau travail. Par contre pour les produits si quelqu'un savait ce serait vraiment cool. Edited June 19, 2012 by silco (see edit history) Link to comment Share on other sites More sharing options...
kunx Posted June 19, 2012 Share Posted June 19, 2012 merci pour ces infos , et toujours pas de nouvelle pour le csv produit? Link to comment Share on other sites More sharing options...
marty69 Posted June 20, 2012 Share Posted June 20, 2012 oui un CSV produit avec déclinaisons serait top ! mais ca doit être bien complexe ! 1 Link to comment Share on other sites More sharing options...
Arphaxad Posted June 26, 2012 Share Posted June 26, 2012 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 More sharing options...
yZ0 Posted July 4, 2012 Share Posted July 4, 2012 (edited) 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 July 5, 2012 by yZ0 (see edit history) Link to comment Share on other sites More sharing options...
epic1110 Posted July 4, 2012 Author Share Posted July 4, 2012 Bonjour, merci à toi pour cette contribution yZ0, je vais tester cela de ce pas. Cordialement Link to comment Share on other sites More sharing options...
silco Posted August 30, 2012 Share Posted August 30, 2012 Merci pour les produits c'est bien cool. Link to comment Share on other sites More sharing options...
Fafa59 Posted September 11, 2012 Share Posted September 11, 2012 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 More sharing options...
Fafa59 Posted September 11, 2012 Share Posted September 11, 2012 (edited) 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 September 11, 2012 by Fafa59 (see edit history) 1 Link to comment Share on other sites More sharing options...
Cyrkam Posted October 21, 2012 Share Posted October 21, 2012 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 More sharing options...
epic1110 Posted October 22, 2012 Author Share Posted October 22, 2012 (edited) 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 October 22, 2012 by epic1110 (see edit history) 1 Link to comment Share on other sites More sharing options...
redtango2 Posted October 22, 2012 Share Posted October 22, 2012 (edited) Bonjour j'essaie sur la version 1.5.1. via le manager mais à chaque fois j'ai cette erreur 2 erreurs 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 October 22, 2012 by redtango (see edit history) Link to comment Share on other sites More sharing options...
Jean Francois G Posted October 24, 2012 Share Posted October 24, 2012 @redtango : Déja, tu dois virer la virgule a la fin de la ligne : -- 0 as 'Delete existing images (0 = no, 1 = yes)' -- Link to comment Share on other sites More sharing options...
Jean Francois G Posted October 24, 2012 Share Posted October 24, 2012 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 More sharing options...
Cyrkam Posted October 24, 2012 Share Posted October 24, 2012 (edited) 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 October 24, 2012 by Cyrkam (see edit history) Link to comment Share on other sites More sharing options...
Cyrkam Posted October 24, 2012 Share Posted October 24, 2012 (edited) voir post suivant Edited October 25, 2012 by Cyrkam (see edit history) Link to comment Share on other sites More sharing options...
Cyrkam Posted October 24, 2012 Share Posted October 24, 2012 (edited) 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 November 9, 2012 by Cyrkam (see edit history) Link to comment Share on other sites More sharing options...
kretinus Posted November 3, 2012 Share Posted November 3, 2012 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 More sharing options...
ShowYou Posted November 9, 2012 Share Posted November 9, 2012 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 Le champ SQL est trop long. (Longueur maximale : 1000) 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 More sharing options...
Cyrkam Posted November 11, 2012 Share Posted November 11, 2012 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 ? 1 Link to comment Share on other sites More sharing options...
ShowYou Posted November 25, 2012 Share Posted November 25, 2012 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 More sharing options...
olivier51 Posted December 20, 2012 Share Posted December 20, 2012 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 More sharing options...
passicool Posted January 4, 2013 Share Posted January 4, 2013 Bonjour, As tu bien mis séparateur ";" et surtout coché la case "transmettre" Link to comment Share on other sites More sharing options...
tonereco64 Posted January 23, 2013 Share Posted January 23, 2013 salut ca marche super aurais tu la solution pour les commandes ? Link to comment Share on other sites More sharing options...
Vinc3nzo Posted January 23, 2013 Share Posted January 23, 2013 salut ca marche super aurais tu la solution pour les commandes ? Pour les commandes c'est les fichiers: "ps_order" Link to comment Share on other sites More sharing options...
dar1987 Posted January 26, 2013 Share Posted January 26, 2013 Franchement, merci à vous pour ce topic, je vais tester ça pour migrer ma boutique de la version 1.4.9 vers la 1.5.3, vous pensez que c'est faisable? Link to comment Share on other sites More sharing options...
nononeo Posted February 12, 2013 Share Posted February 12, 2013 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 More sharing options...
Myst26 Posted April 5, 2013 Share Posted April 5, 2013 (edited) 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 April 5, 2013 by Myst26 (see edit history) 1 Link to comment Share on other sites More sharing options...
tonereco64 Posted April 6, 2013 Share Posted April 6, 2013 Bonjour à tous et merci pour l'astuce, MYST26, attention à tous question difficile..... 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...... Link to comment Share on other sites More sharing options...
papich Posted May 9, 2013 Share Posted May 9, 2013 Merci pour ces infos mais si par exemple j'exporte de la 1.4 comment je réintégre mes catégories en 1.5.4.1? De même pour les produits... Link to comment Share on other sites More sharing options...
calindoudou Posted May 10, 2013 Share Posted May 10, 2013 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 More sharing options...
passicool Posted May 11, 2013 Share Posted May 11, 2013 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 More sharing options...
ILMP Posted May 15, 2013 Share Posted May 15, 2013 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 More sharing options...
calindoudou Posted May 16, 2013 Share Posted May 16, 2013 (edited) Bonjour Passicool, Je n'ai pas trouvé ou inserer le texte a coller. je joins une copie ecran de ce que j'ai dans mon 1&1, ca expliquera certaienemnt mieux que ma facon de decrire. Merci d'avance Edited May 16, 2013 by calindoudou (see edit history) Link to comment Share on other sites More sharing options...
shaka Posted May 22, 2013 Share Posted May 22, 2013 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 More sharing options...
passicool Posted May 27, 2013 Share Posted May 27, 2013 Pour passer vos boutique de 1.4 vers 1.5 il y a 1-Click Upgrade sous prestashop, cocher plus d'option(mode expert) et remplacer version mineures (recommandé) par version majeur puis sauver Ainsi en cas de problème vous pouvez revenir en arrière. Link to comment Share on other sites More sharing options...
dukofo Posted May 30, 2013 Share Posted May 30, 2013 (edited) 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 May 30, 2013 by dukofo (see edit history) Link to comment Share on other sites More sharing options...
dukofo Posted May 30, 2013 Share Posted May 30, 2013 (edited) 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 May 30, 2013 by dukofo (see edit history) Link to comment Share on other sites More sharing options...
dukofo Posted May 31, 2013 Share Posted May 31, 2013 Quelqu'un pourrait me donner une bonne config pour exporter uniquement mes catégories en 1.5.4 Merci. Link to comment Share on other sites More sharing options...
calindoudou Posted June 11, 2013 Share Posted June 11, 2013 @ 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 More sharing options...
calindoudou Posted June 16, 2013 Share Posted June 16, 2013 Petit up Link to comment Share on other sites More sharing options...
calindoudou Posted June 27, 2013 Share Posted June 27, 2013 Vraiment personne pour me donner une piste ?? Link to comment Share on other sites More sharing options...
calindoudou Posted September 7, 2013 Share Posted September 7, 2013 Bonjour, en relancant le petit sujet (au cas ou pour au dessus). Ma demande serait de savoir comment pouvoir exporter les commandes en attentes, et les re-injecteés en y ayant inseré le N° suivi ainsi qu'un changement de statut. Merci d'avance pour votre aide. Cdt Link to comment Share on other sites More sharing options...
papich Posted September 7, 2013 Share Posted September 7, 2013 Bonjour regarde ce module pourrait te convenir http://www.prestashop.com/forums/topic/8424-module-to-export-orders/?do=findComment&comment=8182 Link to comment Share on other sites More sharing options...
calindoudou Posted September 8, 2013 Share Posted September 8, 2013 Bonjour et merci de ta reponse. J'ai installé le module (malgrès que sur le forum en anglais j'ai rien compris) . Malheureuseument, il ne fonctionne pas :s Cdt Link to comment Share on other sites More sharing options...
omkarpa Posted September 9, 2013 Share Posted September 9, 2013 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 More sharing options...
calindoudou Posted September 22, 2013 Share Posted September 22, 2013 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.firstnameFROM `ps_orders` OINNER JOIN ps_order_history OH on OH.id_order = O.id_orderINNER JOIN ps_customer C on C.id_customer= O.id_customerwhere 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: #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 More sharing options...
calindoudou Posted September 30, 2013 Share Posted September 30, 2013 je remonte cette petite question Link to comment Share on other sites More sharing options...
passicool Posted October 16, 2013 Share Posted October 16, 2013 >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 More sharing options...
askaline Posted October 18, 2013 Share Posted October 18, 2013 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 More sharing options...
ShowYou Posted October 19, 2013 Share Posted October 19, 2013 (edited) 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: #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 October 19, 2013 by monvidedressing (see edit history) Link to comment Share on other sites More sharing options...
ShowYou Posted October 19, 2013 Share Posted October 19, 2013 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 More sharing options...
ShowYou Posted October 19, 2013 Share Posted October 19, 2013 (edited) 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 November 3, 2013 by monvidedressing (see edit history) Link to comment Share on other sites More sharing options...
brikobike Posted December 16, 2013 Share Posted December 16, 2013 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 More sharing options...
ShowYou Posted December 19, 2013 Share Posted December 19, 2013 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 More sharing options...
brikobike Posted December 20, 2013 Share Posted December 20, 2013 (edited) 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 December 20, 2013 by brikobike (see edit history) Link to comment Share on other sites More sharing options...
mfrederic4 Posted December 27, 2013 Share Posted December 27, 2013 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. Link to comment Share on other sites More sharing options...
BubbleWorld Posted January 16, 2014 Share Posted January 16, 2014 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 More sharing options...
mfrederic4 Posted January 16, 2014 Share Posted January 16, 2014 Bonjour, Merci BubbleWorld de votre aide. Bonne journée. 1 Link to comment Share on other sites More sharing options...
Cyrius91 Posted March 7, 2014 Share Posted March 7, 2014 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 More sharing options...
brandlee Posted April 3, 2014 Share Posted April 3, 2014 (edited) 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 April 3, 2014 by brandlee (see edit history) Link to comment Share on other sites More sharing options...
toujoursDbugs Posted May 3, 2014 Share Posted May 3, 2014 Bonjour, merci pour tout ce travail. Toutes ces requêtes sont elles compatibles avec la version 1.6.0.6? Y a t-il une possibilité de regrouper toutes ces requêtes en une seule? Link to comment Share on other sites More sharing options...
rachel01 Posted July 15, 2014 Share Posted July 15, 2014 Bonjour, Quelqu'un connaîtrait-il la requête pour exporter ses commandes (avec détail produits et client) ? Merci d'avance Link to comment Share on other sites More sharing options...
danvers Posted August 30, 2014 Share Posted August 30, 2014 (edited) 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 August 31, 2014 by danvers (see edit history) Link to comment Share on other sites More sharing options...
t-prod Posted September 5, 2014 Share Posted September 5, 2014 Bonjour, Concernant les images notamment en venant d'une 1.3 vers 1.6 comment procédez vous ? Le CSV possède un champ où il faut séparer les images par des virgules. Merci pour votre aide Link to comment Share on other sites More sharing options...
thierry2 Posted September 7, 2014 Share Posted September 7, 2014 Bonjour, je cherche comment faire pour avoir les références,les attributs avec les valeurs ,les quantités pour presta 1.6.0.9.Merci 1 Link to comment Share on other sites More sharing options...
lexxa7ierist tra Posted September 14, 2014 Share Posted September 14, 2014 bonjour quelle requetes SQL pour récupérer les sous-catégories car j'ai réussi à avoir les catégories mais pas les sous-catégories un petit coud de main svp merci Link to comment Share on other sites More sharing options...
hallowman28 Posted October 13, 2014 Share Posted October 13, 2014 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 More sharing options...
kingfaya Posted March 4, 2015 Share Posted March 4, 2015 (edited) 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: Création du fichier CSV pour récuperer vos adresses: SELECTps_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_numberFROMps_addressLEFT JOIN ps_customer ON ps_customer.id_customer = ps_address.id_customerLEFT JOIN ps_manufacturer ON ps_manufacturer.id_manufacturer = ps_address.id_manufacturerLEFT JOIN ps_supplier ON ps_supplier.id_supplier = ps_address.id_supplierLEFT JOIN ps_country_lang ON ps_country_lang.id_country = ps_address.id_countryLEFT 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 DISTINCTps_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_countryFROMps_addressLEFT JOIN (ps_manufacturer, ps_supplier, ps_state)ON (ps_manufacturer.id_manufacturer = ps_address.id_manufacturer ANDps_supplier.id_supplier = ps_address.id_supplier ANDps_state.id_state = ps_address.id_state )INNER JOIN ps_customer ON ps_address.id_customer = ps_customer.id_customerGROUP 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 March 4, 2015 by kingfaya (see edit history) Link to comment Share on other sites More sharing options...
balaizeben Posted March 17, 2015 Share Posted March 17, 2015 (edited) 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.activeFROM ps_product pLEFT JOIN ps_product_lang pl on pl.id_product = p.id_product and pl.id_lang = 1 and pl.id_shop = 1LEFT JOIN ps_product_shop pshop on pshop.id_product = p.id_product and pshop.id_shop = 1LEFT JOIN ps_manufacturer m on m.id_manufacturer = p.id_manufacturerLEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_product and psupp.id_product_attribute = 0INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1group by p.id_product voilà Edited March 17, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
kingfaya Posted March 17, 2015 Share Posted March 17, 2015 (edited) 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 March 17, 2015 by kingfaya (see edit history) Link to comment Share on other sites More sharing options...
balaizeben Posted March 17, 2015 Share Posted March 17, 2015 (edited) 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 March 17, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
kingfaya Posted March 18, 2015 Share Posted March 18, 2015 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 = 0INNER 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 More sharing options...
kingfaya Posted March 18, 2015 Share Posted March 18, 2015 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 More sharing options...
balaizeben Posted March 18, 2015 Share Posted March 18, 2015 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 More sharing options...
balaizeben Posted March 18, 2015 Share Posted March 18, 2015 (edited) 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.activeFROM ps_product pLEFT JOIN ps_product_lang pl on pl.id_product = p.id_product and pl.id_lang = 1 and pl.id_shop = 1LEFT JOIN ps_product_shop pshop on pshop.id_product = p.id_product and pshop.id_shop = 1LEFT JOIN ps_manufacturer m on m.id_manufacturer = p.id_manufacturerLEFT JOIN ps_product_supplier psupp on psupp.id_product = p.id_product and psupp.id_product_attribute = 0INNER JOIN ps_stock_available sa on sa.id_product = p.id_product and sa.id_product_attribute = 0 and sa.id_shop = 1group 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 March 18, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
kingfaya Posted March 18, 2015 Share Posted March 18, 2015 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 More sharing options...
balaizeben Posted March 19, 2015 Share Posted March 19, 2015 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 More sharing options...
kingfaya Posted March 19, 2015 Share Posted March 19, 2015 pour le nom du fournisseur je pense que tu dois piocher dans la table ps_supplier_lang (ou quelque chose comme ça) Link to comment Share on other sites More sharing options...
balaizeben Posted March 20, 2015 Share Posted March 20, 2015 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 More sharing options...
kingfaya Posted March 20, 2015 Share Posted March 20, 2015 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 More sharing options...
balaizeben Posted March 23, 2015 Share Posted March 23, 2015 (edited) 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 March 23, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
kingfaya Posted March 23, 2015 Share Posted March 23, 2015 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 More sharing options...
balaizeben Posted March 23, 2015 Share Posted March 23, 2015 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 More sharing options...
balaizeben Posted March 23, 2015 Share Posted March 23, 2015 (edited) 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 March 23, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
hallowman28 Posted March 23, 2015 Share Posted March 23, 2015 (edited) bonsoir, quelqu'un peux me donner la requête pour extraire les commandes ? avec comme colonne : ID_order / ref preduit / qté / n° de facture / mode de paiement / créer le / total à payer / référence commande / nom client c serai super cool car j'y arrive pas . Edited March 23, 2015 by hallowman28 (see edit history) Link to comment Share on other sites More sharing options...
kingfaya Posted March 24, 2015 Share Posted March 24, 2015 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 More sharing options...
balaizeben Posted March 24, 2015 Share Posted March 24, 2015 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 More sharing options...
kingfaya Posted March 24, 2015 Share Posted March 24, 2015 (edited) 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 March 24, 2015 by kingfaya (see edit history) Link to comment Share on other sites More sharing options...
balaizeben Posted March 24, 2015 Share Posted March 24, 2015 (edited) 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 March 24, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
balaizeben Posted March 24, 2015 Share Posted March 24, 2015 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 More sharing options...
balaizeben Posted March 27, 2015 Share Posted March 27, 2015 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 More sharing options...
julg78 Posted April 1, 2015 Share Posted April 1, 2015 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 More sharing options...
balaizeben Posted April 1, 2015 Share Posted April 1, 2015 (edited) 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 April 1, 2015 by balaizeben (see edit history) Link to comment Share on other sites More sharing options...
julg78 Posted April 9, 2015 Share Posted April 9, 2015 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 More sharing options...
Petit Wapiti Posted April 14, 2015 Share Posted April 14, 2015 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now