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

 


Dernière réponse
Sujet : [MySQL] requête foireuse... un peu plus dur :)
Profil supprimé

Fred999 a écrit a écrit :

Popopopop (c) ;)
Pour ta seconde requête (l'insertion) :
- une clé primaire ne devrait JAMAIS, AU GRAND JAMAIS être vide




 
c pourquoi je l'ai viré (la clé)  :sol:  
 
Elcap
 :hello:


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion

Fred999 a écrit a écrit :

Popopopop (c) ;)
Pour ta seconde requête (l'insertion) :
- une clé primaire ne devrait JAMAIS, AU GRAND JAMAIS être vide




 
c pourquoi je l'ai viré (la clé)  :sol:  
 
Elcap
 :hello:

jupiler

Fred999 a écrit a écrit :

Popopopop (c) ;)
 
Bon, pour ta première requête, je te conseille vivement d'utiliser les JOINTURES (comme il est expliqué dans l'extrait de la doc MySQL). Pourquoi? Bin là tu te débrouilles bien avec deux tables, quand il y en aura cinq, faire des IN sera nettement moins pratique.
 
 




 
c''est pas seulement moins pratique, c'est aussi moins performant

Fred999 Popopopop (c) ;)
 
Bon, pour ta première requête, je te conseille vivement d'utiliser les JOINTURES (comme il est expliqué dans l'extrait de la doc MySQL). Pourquoi? Bin là tu te débrouilles bien avec deux tables, quand il y en aura cinq, faire des IN sera nettement moins pratique.
 
Pour ta seconde requête (l'insertion) :
- une clé primaire ne devrait JAMAIS, AU GRAND JAMAIS être vide
- les champs auto-incrémentés, c'est bien mais fais gaffe aux "sauts" en cas de problème sur le serveur (par exemple, passer de 500 à 500000000500) (ne rigole pas, ça nous arrive)
- quand tu fais une insertion, il vaut mieux mettre la liste des champs insérés, même si ce n'est pas obligatoire, ça améliore la lisibilité.
 
A bientôt :hello:
j'ai trouvé !!!
 
comme je suis en test, j'ai pas rmpli tout les champs.... dont un qui est en clé... et comme il y a déjà un enregistrement dont ce champs est vide... ben il veux pas... je m'en suis rendu compte en essayant avec phpmyadmin :
erreur sur la clé 4.... je regarde quelle est la clé 4 dans ma table... et hop, je l'ai viré... et ça marche :))
 
comme quoi faut mettre des clés que là où c'est strictement nécessaire :)
pas de msg d'erreur.. rien...
 
ma clé primaire est un champ auto-increment... le premier de la liste, c'est pour ça que je le renseigne pas...
 
le pb, c'est que :
 
INSERT INTO sscategories VALUES ('', '$listecat', '$nom_sscat')
et
INSERT INTO categories VALUES ('', '$nom_cat')
 
et bien d'autres fonctionnent.... j'ai compté, vérifié, j'ai bien le bon nombre de champs...
si je fais :
$last_id = mysql_insert_id();
echo "$last_id est l'id créé.";
 
j'ai bien 0.... alors que ça devrait être 2...  
 
il n'y a donc bien rien qui s'insère....
__Lolo__ il te renvoie un message d'erreur pr te dire que la clé primaire '' existe déjà non ?
precise le nom de tes champs sauf celui de la clé primaire et vire la valeur '' que tu mettais
ca devrais l'faire
encore une ??
 
INSERT INTO materiels VALUES ('', '$listesscat', '$listefab', '$nom_mat', '$date_fab', '$fiche_web', '$achat_web1', '$nom_img', '$note_glob', 'n')
 
le pb, c'est que ça n'insère rien du tout... un copain développeur a regardé, il ne voit rien de choquant.... et vous ???
 
sos... je pige plus là....
à 300 % !!!!!!
 
de plus il me smeblait avoir déjà essayé... bref... j'suis nul..
 
désolé..
__Lolo__ donc j'avais bon ?   :??:  
:hot:  :hot:  :hot:
ce qui clochait ? ben une faute lorsque j'ai refait la requête  :p  :p  :p  :p  
 
je fais pas de copier/coller... j'essaye de refaire les trucs moi-même... voilà où ça me mène... à dire que ce que me propose les autres est faux... je suis si tant désolé...
 
meuua culle pas...
 
sorry...
 
'scuse ?
wouatouwouatou zarbi ton pb... lolo tavais donné la soluce il me semble non ?
c koi ki clochait ? :??:
oui c'est bon avec ça et une table temporaire, je vais m'en sortir :)
myblood Resalut
Doc de mysql 3.23.36:
 
he following will not yet work in MySQL:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 where table1.id=table2.id);
 
However, in many cases you can rewrite the query without a sub-select:
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL
 
Si ca t'aide t'en mieux
mais bon courage
j'ai cherché mais j'ai pas trouvé :(:(
myblood Bonjour
Je n'ai pas la solution mais regarde dans la doc de mysql il explique comment contourner le problème des select imbriqués
non, ça marche pas dans mon cas ça :)
__Lolo__

Code :
  1. SELECT id_nomnote, nom_note
  2. FROM noms_notes, sscategorie
  3. WHERE noms_notes.id_cat=sscategories.id_cat
  4. AND sscategories.id_sscat = '$listesscat'


j'crois que c pas bon mais on sait jamais  :D

mais ouais mais c'est ça la soluce !!!!!!! c'est pour pas grand chose, je sais pas si ça vaut le coup... enfin, j'apprendrai :)
youdontcare tu peux créer une table temporaire ... je n'ai pas la syntaxe en tête.
merdasse... c'est pour ça que ça marche pas.... putain, j'étais pourtant tout fier de ma requête  :D  :D  :D  
 
t'as une idée pour contourner le pb ?
__Lolo__ on peut pas imbriquer les requetes SELECT en mysql je crois  :(
Ca faisait longtemps hein ?? ;-)
 
bon, là ma requête est un peu plus compliquée.... le pb, c'est qu'il me renvoie toujours 0... il y a donc une erreur dans ma requête vu que ça devrait me renvoyer qqch :):):)
 
SELECT id_nomnote, nom_note FROM noms_notes WHERE noms_notes.id_cat in (SELECT id_cat from sscategories WHERE sscategories.id_sscat = '$listesscat')
 
et voilà :)

 

[edit]--Message édité par elcap--[/edit]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)