Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[mysql] insertion si pas dans la table

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué

Inscrit le: 01 Mar 2004
Messages: 442
Localisation: Londres

URL permanente de ce messagePosté le : Lun Jan 30, 2006 17:39    Sujet du message: [mysql] insertion si pas dans la table

Bonjour a tous,

J'ai une table tres simple de la forme suivante:

Code:

objet | quantité
poire | 1
pomme | 3
abricot | 5


Mon probleme est le suivant, je cherche une query simple en mysql qui me permet de:

1) si l'objet n'est pas present dans la table (par ex. orange), je l'insere et ma table devient
Code:
 
objet | quantité
poire | 1
pomme | 3
abricot | 5
orange | 1


2) si l'objet est deja la (ex. pomme), j'update la ligne correspondante et ma table devient
Code:

objet | quantité
poire | 1
pomme | 4
abricot | 5


Y'a t'il un moyen de faire ca avec une seule requete qui ne soit pas trop lente (ma table contient plusieurs milliers d'objets) ?

Merci d'avance !
 
lesbonsplansdesophie Visiter le site web du posteur
mr_go
WRInaute accro
WRInaute accro

Inscrit le: 21 Sep 2005
Messages: 1944
Localisation: Sous le soleil

URL permanente de ce messagePosté le : Lun Jan 30, 2006 17:50    Sujet du message: [mysql] insertion si pas dans la table

Rolling Eyes REPLACE Rolling Eyes
 
mr_go Visiter le site web du posteur
lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué

Inscrit le: 01 Mar 2004
Messages: 442
Localisation: Londres

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:01    Sujet du message: [mysql] insertion si pas dans la table

merci pour ton aide - j'aurais peut-etre du preciser pour des raisons techniques "objet" n'est pas un index de la table, auquel cas ca ne marche plus... ou j'ai pas tout compris ?
 
lesbonsplansdesophie Visiter le site web du posteur
lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué

Inscrit le: 01 Mar 2004
Messages: 442
Localisation: Londres

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:03    Sujet du message: [mysql] insertion si pas dans la table

...et l'autre chose c'est que quand bien meme je pourrais me debrouiller pr que ce soit un index, si je ne m'abuse avec replace je remplace (comme son nom l'indique) la ligne existante - je ne la modifie pas pour ajouter 1 a ma colonne quantité comme précisé plus haut.... a moins que la encore je ne sois a la masse ??
 
lesbonsplansdesophie Visiter le site web du posteur
mr_go
WRInaute accro
WRInaute accro

Inscrit le: 21 Sep 2005
Messages: 1944
Localisation: Sous le soleil

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:05    Sujet du message: [mysql] insertion si pas dans la table

http://dev.mysql.com/doc/refman/5.0/en/replace.html

Il te faut faire effectivement un SELECT pour récupérer la clé (logique tu me diras)
 
mr_go Visiter le site web du posteur
lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué

Inscrit le: 01 Mar 2004
Messages: 442
Localisation: Londres

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:06    Sujet du message: [mysql] insertion si pas dans la table

...et pour finir si tu regardes bien c'est extremement gourmant en ressources (cf le dernier commentaire sur http://dev.mysql.com/doc/refman/5.0/en/replace.html) donc pas exactement ce qu'il me faut pour une table de plusieurs centaines de milliers d'objets... bref je crois que je vais rester a ma requete en deux parties, meme si ca me satisfait moyen.
 
lesbonsplansdesophie Visiter le site web du posteur
lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué

Inscrit le: 01 Mar 2004
Messages: 442
Localisation: Londres

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:06    Sujet du message: [mysql] insertion si pas dans la table

on est d'accord Smile
 
lesbonsplansdesophie Visiter le site web du posteur
mr_go
WRInaute accro
WRInaute accro

Inscrit le: 21 Sep 2005
Messages: 1944
Localisation: Sous le soleil

URL permanente de ce messagePosté le : Lun Jan 30, 2006 18:07    Sujet du message: [mysql] insertion si pas dans la table

Ca ne sera pas pire que ta requete en 2 parties Wink
 
mr_go Visiter le site web du posteur
erisced
Nouveau WRInaute

Inscrit le: 27 Jan 2006
Messages: 18

URL permanente de ce messagePosté le : Mar Jan 31, 2006 14:35    Sujet du message: [mysql] insertion si pas dans la table

Je pense que ça peut se faire avec une requête UPDATE en premier lieu et une requête d'INSERTION en 2ème lieu.

Je suppose que ta base contient déjà un certains nombres d'articles et qu'il y aura plus souvent des mises à jour a faire sur les quantités plutôt que des insertions de nouveaux objets.

En partant de ce principe il vaut mieux faire en premier la requête d'UPDATE (sans se soucier si l'objet existe déjà):

mysql_query("UPDATE objet SET quantite=quantite+1 WHERE 'ta condition par ex : objet= blabla' ");


Ensuite tu testes si la requête a affecté une ligne et tu dis que si aucune ligne n'a été affecté par la requete précédente alors tu insère un nouvel objet:

if (mysql_affected_rows()==0)
mysql_query("INSERT INTO objet (champ1,champ2,...) VALUES (valeur1,valeur2,...)");


Je ne sais pas si c'est la solution que tu as retenue mais voilà comment j'aurais fait Wink
 
erisced Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort