Mise a jour TABLE
Résolu/Fermé
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
-
12 oct. 2018 à 09:42
speedy_souris Messages postés 53 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 28 février 2019 - 12 oct. 2018 à 21:29
speedy_souris Messages postés 53 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 28 février 2019 - 12 oct. 2018 à 21:29
A voir également:
- Mise a jour TABLE
- Mise a jour chrome - Accueil - Applications & Logiciels
- Table ascii - Guide
- Mise a jour windows 10 - Accueil - Mise à jour
- Table des matières word - Guide
- Mise a jour chromecast - Accueil - Guide TV et vidéo
7 réponses
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
Modifié le 12 oct. 2018 à 10:12
Modifié le 12 oct. 2018 à 10:12
Bonjour,
Table1 contient quoi ? Si elle est vide ce n'est pas un
Si elle contient quelque chose ta commande essaie de remplir une seule cellule avec toutes les valeurs contenues dans table2. Il faudrait ne ramener qu'une seule valeur, sur un critère. Tu devrais détailler ce que tu veux faire.
Table1 contient quoi ? Si elle est vide ce n'est pas un
updatequ'il faut faire.
Si elle contient quelque chose ta commande essaie de remplir une seule cellule avec toutes les valeurs contenues dans table2. Il faudrait ne ramener qu'une seule valeur, sur un critère. Tu devrais détailler ce que tu veux faire.
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
Modifié le 12 oct. 2018 à 12:12
Modifié le 12 oct. 2018 à 12:12
j'ai penser à une insertion
mais je ne sait pas s'il est possible de faire une jointure avec une insertion ?
Oui tu auras
Mais si
- id_catégorie est dans table produit, pas besoin de jointure,
- et si id_catégorie est dans la table produit pourquoi créer une table liaison (c'est probablement une relation du mcd entre les 2 tables, qui devrait disparaitre par la dé-normalisation quand id_catégorie migre dans la table produit)
- id_catégorie n'est pas dans la table produit comment on détermine la catégorie d'un produit ?
mais je ne sait pas s'il est possible de faire une jointure avec une insertion ?
Oui tu auras
INSERT INTO table3 (..,..) SELECT .., .. FROM table1, table2 WHERE table1.xx = table2.xx
Mais si
- id_catégorie est dans table produit, pas besoin de jointure,
- et si id_catégorie est dans la table produit pourquoi créer une table liaison (c'est probablement une relation du mcd entre les 2 tables, qui devrait disparaitre par la dé-normalisation quand id_catégorie migre dans la table produit)
- id_catégorie n'est pas dans la table produit comment on détermine la catégorie d'un produit ?
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 14:00
12 oct. 2018 à 14:00
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
12 oct. 2018 à 14:34
12 oct. 2018 à 14:34
Donc le couple id_produi/id_catégorie est une donnée primaire, qui ne peut pas être trouvée par du sql. Il faut saisir ces informations.
Comment sont initialisées/chargées les table catégories et produit ?
Comment sont initialisées/chargées les table catégories et produit ?
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 14:35
12 oct. 2018 à 14:35
INSERT INTO Table3(Table3.categorie_id, Table3.produit_id)
SELECT Table2.id, Table1.id FROM Table2, Table1
WHERE Table1.id = table2.id
cette requete donne la meme chose dans la colonne category_id et produit_id (25 pour les deux)
or j'ai beaucoup plus de produits que de categories
colonne categorie_id ~ 25
colonne produit_id ~ 200
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
Modifié le 12 oct. 2018 à 14:43
Modifié le 12 oct. 2018 à 14:43
Évidemment
bis repetita placent : Donc le couple id_produi/id_catégorie est une donnée primaire, qui ne peut pas être trouvée par du sql. Il faut saisir ces informations.
Table1.id = table2.idtu compares des choux et des carottes. l'id du produit avec l'id de la catégorie, ce qui n'a aucun sens.
bis repetita placent : Donc le couple id_produi/id_catégorie est une donnée primaire, qui ne peut pas être trouvée par du sql. Il faut saisir ces informations.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 15:48
12 oct. 2018 à 15:48
Après avoir compris que les id des tables 1 et 2 n'était pas identique
j'ai essayer cette requete maintenant :
ERROR 1054 (42S22): Unknown column 'Table3.product_id' in 'where clause'
je ne comprend pas pourquoi ?
INSERT INTO Table3(Table3.categorie_id, Table3.produit_id)
SELECT Table2.id, Table1.id FROM Table2, Table1
WHERE Table1.id = table3.product_id AND Table2.id = Table3.category_id
j'ai essayer cette requete maintenant :
ERROR 1054 (42S22): Unknown column 'Table3.product_id' in 'where clause'
je ne comprend pas pourquoi ?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
12 oct. 2018 à 15:51
12 oct. 2018 à 15:51
Bonjour,
Je ne suis pas certain que tu lises les réponses qui te sont données...
Donc pour éviter à JeePee de le réécrire encode une fois, et en espérant que ça sera assez lisible pour toi
le couple id_produi/id_catégorie est une donnée primaire, qui ne peut pas être trouvée par du sql. Il faut saisir ces informations.
Je ne suis pas certain que tu lises les réponses qui te sont données...
Donc pour éviter à JeePee de le réécrire encode une fois, et en espérant que ça sera assez lisible pour toi
le couple id_produi/id_catégorie est une donnée primaire, qui ne peut pas être trouvée par du sql. Il faut saisir ces informations.
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
Modifié le 12 oct. 2018 à 16:22
Modifié le 12 oct. 2018 à 16:22
Débutant et en formation dans la programmation et les bases de données, je ne sait pas ce qu'est une donnée primaire,
L'objectif qui m'est demander developper une application en python qui recupere des infos produit alimentaire
au format JSON les insere dans la BD (API OPENFOOD FACT)
demandez à l'utilisateur de choisir une categorie produit
ensuite demandez à l'utilisateur de choisir un produit dans la categorie choisi
et l'appli affiche un produit substituer avec un grade nutritionel plus bas ainsi que le magasin ou l'acheter
alors si je ne peut lier un id produit à id categorie l'appli ne sert à rien (réussir exam de formation = echec)
merci de m'avoir répondu
L'objectif qui m'est demander developper une application en python qui recupere des infos produit alimentaire
au format JSON les insere dans la BD (API OPENFOOD FACT)
demandez à l'utilisateur de choisir une categorie produit
ensuite demandez à l'utilisateur de choisir un produit dans la categorie choisi
et l'appli affiche un produit substituer avec un grade nutritionel plus bas ainsi que le magasin ou l'acheter
alors si je ne peut lier un id produit à id categorie l'appli ne sert à rien (réussir exam de formation = echec)
merci de m'avoir répondu
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
>
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 16:22
12 oct. 2018 à 16:22
Essayons d'expliquer simplement...
D'un côté tu as des produits
De l'autre, des catégories
Tu veux associer ces produits à des catégories........ mais cette association ne peut pas être faite en "automatique" (via une requête sql ).
C'est à toi de remplir cette table d'association... à la main.
Produit 1 : catégorie truc
Produit 1 : catégorie bidule
Produit 2 : catégorie machin
etc....
C'est justement cette table (que tu auras donc rempli à la main...) qui te permettra de faire l'association produit/catégorie )
Tant que tu n'auras pas rempli cette table.... IMPOSSIBLE de savoir quel produit mettre avec quelle catégorie.
Aucune requête ne peut remplir cette table automatiquement à ta place !!!
D'un côté tu as des produits
De l'autre, des catégories
Tu veux associer ces produits à des catégories........ mais cette association ne peut pas être faite en "automatique" (via une requête sql ).
C'est à toi de remplir cette table d'association... à la main.
Produit 1 : catégorie truc
Produit 1 : catégorie bidule
Produit 2 : catégorie machin
etc....
C'est justement cette table (que tu auras donc rempli à la main...) qui te permettra de faire l'association produit/catégorie )
Tant que tu n'auras pas rempli cette table.... IMPOSSIBLE de savoir quel produit mettre avec quelle catégorie.
Aucune requête ne peut remplir cette table automatiquement à ta place !!!
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
>
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
Modifié le 12 oct. 2018 à 16:38
Modifié le 12 oct. 2018 à 16:38
Comment, avec quoi, as-tu rempli produits et catégories ?
Pour moi quand je lis "developper une application en python qui recupere des infos produit alimentaire au format JSON les insere dans la BD (API OPENFOOD FACT) " c'est que les données que tu cherches sont dans le .json
Pareil pour la table produit de substitution
Pour moi quand je lis "developper une application en python qui recupere des infos produit alimentaire au format JSON les insere dans la BD (API OPENFOOD FACT) " c'est que les données que tu cherches sont dans le .json
Pareil pour la table produit de substitution
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 16:45
12 oct. 2018 à 16:45
OK merci pour ces explication simplifier
c'est la que ca poser soucis car 200 produits c'est pour tester mon appli
OPENFOODFACT étant une base de données de produit alimentaires internantionale qui ne limite pas à une vintaine de categories produit ni à une centaine de produits
remplir la table d'association à la main ???
je vais voir pour construire cela differement
c'est la que ca poser soucis car 200 produits c'est pour tester mon appli
OPENFOODFACT étant une base de données de produit alimentaires internantionale qui ne limite pas à une vintaine de categories produit ni à une centaine de produits
remplir la table d'association à la main ???
je vais voir pour construire cela differement
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
Modifié le 12 oct. 2018 à 18:03
Modifié le 12 oct. 2018 à 18:03
C'est pas clair ;-/
Quand plus haut tu disais que tu avais 200 produits, c'est que tu n'as chargé qu'un fichier json correspondant à une catégorie, par exemple pizza ?
Et qu'il faut les charger un par un pour chaque catégorie ?
Quand plus haut tu disais que tu avais 200 produits, c'est que tu n'as chargé qu'un fichier json correspondant à une catégorie, par exemple pizza ?
Et qu'il faut les charger un par un pour chaque catégorie ?
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
Modifié le 12 oct. 2018 à 19:06
Modifié le 12 oct. 2018 à 19:06
j'ai récupére 24 ou 25 categories (fichier json) par ordre alphabetique (chocolat, fromage, charcuterie, fruit....)
dans la premiere partie(menu category)
j'ai mis la categorie et le nom des 25 fichiers json dans une liste ligne 13 à 28
la boucle for permet de parcourir la liste de l'ensemble des fichiers json
a chaque tour de boucle j'apelle la fonction contained_database() ligne 31 de la partie 1 (menu category)
qui insere la categorie des produit dans la table category ligne 29 à 34 de la partie 2(insertion category et produit)
elle continu en inserant les données produits dans la table product ligne 40 à 76 de la partie 2(insertion category et produit)
ensuite il affiche les category ce qui forme le menu du choix de categorrie (ligne 32 partie 1)
Table category:
Table product:
maintenant ce que je veux arriver a faire c'est recuperer l'id de la table category et l'id de la table product et les lier avec la table category_product qui est vide
dans la premiere partie(menu category)
j'ai mis la categorie et le nom des 25 fichiers json dans une liste ligne 13 à 28
la boucle for permet de parcourir la liste de l'ensemble des fichiers json
a chaque tour de boucle j'apelle la fonction contained_database() ligne 31 de la partie 1 (menu category)
qui insere la categorie des produit dans la table category ligne 29 à 34 de la partie 2(insertion category et produit)
elle continu en inserant les données produits dans la table product ligne 40 à 76 de la partie 2(insertion category et produit)
ensuite il affiche les category ce qui forme le menu du choix de categorrie (ligne 32 partie 1)
Table category:
Table product:
maintenant ce que je veux arriver a faire c'est recuperer l'id de la table category et l'id de la table product et les lier avec la table category_product qui est vide
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
12 oct. 2018 à 19:14
12 oct. 2018 à 19:14
Tu pourrais rajouter, après le chargement de la table product une commande sql comme
Le 16, à mettre en variable, doit correspondre à ton choix dans le menu de chargement et doit (à verifier) correspondre à l'id dans la table category.
C'est toi qui a créé le modèle de la BDD, ou les 4 tables étaient imposées ?
Car comme je l'ai écrit plus haut, le category_id dans la table product simplifierait le modèle. Il suffirait de mettre '16' dans le champ category_id lors du chargement de la table product.
Et reste un autre chargement à faire : les produits de substitution. A partir de quoi les charger ?
insert into category_product(category_id, product_id) select '16', product.id from product where product.id not in (select product_id from category_product)
Le 16, à mettre en variable, doit correspondre à ton choix dans le menu de chargement et doit (à verifier) correspondre à l'id dans la table category.
C'est toi qui a créé le modèle de la BDD, ou les 4 tables étaient imposées ?
Car comme je l'ai écrit plus haut, le category_id dans la table product simplifierait le modèle. Il suffirait de mettre '16' dans le champ category_id lors du chargement de la table product.
Et reste un autre chargement à faire : les produits de substitution. A partir de quoi les charger ?
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
Modifié le 12 oct. 2018 à 20:22
Modifié le 12 oct. 2018 à 20:22
Concernant le modéle de la BDD c'est moi en partie qui l'a creer mais la 4 eme table substitution_product c'est mon mentor qui me la donnée (condition importante pour la soutenance du projet )
Pour la partie substitution de produits, une chose après l'autre ....
reste pas mal de chose a régler avant cette partie (menu produit selon le choix category, choix du produit...)
maintenant, j'ai quelques notions à digérer pour bien appréhender la suite du script
merci pour votre aide et votre patience
.......
aprés avoir tester la requete que tu as faite le 16 (choix de category) a mon idée ne devrait pas apparaitre dans la table category_product
je m'explique
exemple
les produits 1 à 12 ont la category 8
les produits 13 à 38 ont la category 2
les produits 75 à 106 ont la category 16
...
produit n à 159 ont la category 1
le 16 intervient pour afficher les produit 75 à 106 (menu choix produit à substituer)
ensuite affichage du produit substituer (grade nutritionel qui se rapproche de A)
le classement des produits se font par un grade nutritionel qui part de A à E
A excellent pour la santé
E moins pour la santé
Pour la partie substitution de produits, une chose après l'autre ....
reste pas mal de chose a régler avant cette partie (menu produit selon le choix category, choix du produit...)
maintenant, j'ai quelques notions à digérer pour bien appréhender la suite du script
merci pour votre aide et votre patience
.......
aprés avoir tester la requete que tu as faite le 16 (choix de category) a mon idée ne devrait pas apparaitre dans la table category_product
je m'explique
exemple
les produits 1 à 12 ont la category 8
les produits 13 à 38 ont la category 2
les produits 75 à 106 ont la category 16
...
produit n à 159 ont la category 1
le 16 intervient pour afficher les produit 75 à 106 (menu choix produit à substituer)
ensuite affichage du produit substituer (grade nutritionel qui se rapproche de A)
le classement des produits se font par un grade nutritionel qui part de A à E
A excellent pour la santé
E moins pour la santé
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
>
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 20:15
12 oct. 2018 à 20:15
A l'occasion renseigne toi sur le chargement des données de substitution.
Et tu pourrais regarder ce projet, il travaille sur les mêmes données que toi, même si au départ le chargement s'effectue depuis un .csv : https://github.com/jfsubrini/project5_off_converter
Et tu pourrais regarder ce projet, il travaille sur les mêmes données que toi, même si au départ le chargement s'effectue depuis un .csv : https://github.com/jfsubrini/project5_off_converter
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
12 oct. 2018 à 20:06
12 oct. 2018 à 20:06
Bonsoir,
Lorsque tu ajoutes une catégorie dans ta table, tu peux, en mysql, récupérer l'ID nouvelle créé.
Pour cela il existe la fonction LAST_INSERT_ID()
Et bien entendu.. Tu fais la même chose lors de l'insertion des produits.
De cette façon.. tu as les deux id à insérer dans ta table d'association
En gros :
1 - Ajout catégorie dans la table category_product
2 - Récupération de l' ID
3 - Boucle sur les produits :
3 - a ) : Ajout d'un produit dans la table product
3 - b) : récupération de l'ID du produit
3 - c ) : Insertion dans la table d'association des deux ID ..
4 - d) produit suivante.. puis reprendre à partir du 3-a
Lorsque tu ajoutes une catégorie dans ta table, tu peux, en mysql, récupérer l'ID nouvelle créé.
Pour cela il existe la fonction LAST_INSERT_ID()
Et bien entendu.. Tu fais la même chose lors de l'insertion des produits.
De cette façon.. tu as les deux id à insérer dans ta table d'association
En gros :
1 - Ajout catégorie dans la table category_product
2 - Récupération de l' ID
3 - Boucle sur les produits :
3 - a ) : Ajout d'un produit dans la table product
3 - b) : récupération de l'ID du produit
3 - c ) : Insertion dans la table d'association des deux ID ..
4 - d) produit suivante.. puis reprendre à partir du 3-a
jee pee
Messages postés
40566
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 décembre 2024
9 460
>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
12 oct. 2018 à 20:12
12 oct. 2018 à 20:12
C'est effectivement meilleur.
speedy_souris
Messages postés
53
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
28 février 2019
12 oct. 2018 à 21:29
12 oct. 2018 à 21:29
merci a tous pour aide
Modifié le 12 oct. 2018 à 12:01
j'ai une table produit,
j'ai une table categorie,
j'ai une table de liaison qui doit contenir l'id produit et l'id categorie (pour lier un produit a une categorie avec les id correspondant) elle est vide et c'est elle que je veux remplir
j'ai penser à une insertion
mais je ne sait pas s'il est possible de faire une jointure avec une insertion ?
12 oct. 2018 à 11:52
Et l'id_catégorie il est présent dans la table produit ?
12 oct. 2018 à 12:29
la table categorie contient id (INT) (Table2) (non vide)
la table categorie_produit contient categorie_id (INT) , produit_id (INT) (Table3) (vide)
12 oct. 2018 à 12:38
12 oct. 2018 à 12:50