[MySQL] requête foireuse... un peu plus dur :)

requête foireuse... un peu plus dur :) [MySQL] - Programmation

Marsh Posté le 05-06-2001 à 18:44:00    

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]

Reply

Marsh Posté le 05-06-2001 à 18:44:00   

Reply

Marsh Posté le 05-06-2001 à 20:27:03    

on peut pas imbriquer les requetes SELECT en mysql je crois  :(

Reply

Marsh Posté le 05-06-2001 à 20:41:45    

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 ?

Reply

Marsh Posté le 05-06-2001 à 20:47:33    

tu peux créer une table temporaire ... je n'ai pas la syntaxe en tête.

Reply

Marsh Posté le 05-06-2001 à 20:51:46    

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 :)

Reply

Marsh Posté le 05-06-2001 à 21:07:16    

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

Reply

Marsh Posté le 05-06-2001 à 21:19:58    

non, ça marche pas dans mon cas ça :)

Reply

Marsh Posté le 05-06-2001 à 21:29:44    

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

Reply

Marsh Posté le 05-06-2001 à 22:54:01    

j'ai cherché mais j'ai pas trouvé :(:(

Reply

Marsh Posté le 05-06-2001 à 23:42:38    

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

Reply

Marsh Posté le 05-06-2001 à 23:42:38   

Reply

Marsh Posté le 06-06-2001 à 09:41:49    

oui c'est bon avec ça et une table temporaire, je vais m'en sortir :)

Reply

Marsh Posté le 06-06-2001 à 09:45:49    

zarbi ton pb... lolo tavais donné la soluce il me semble non ?
c koi ki clochait ? :??:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 06-06-2001 à 09:55:30    

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 ?

Reply

Marsh Posté le 06-06-2001 à 09:56:40    

donc j'avais bon ?   :??:  
:hot:  :hot:  :hot:

Reply

Marsh Posté le 06-06-2001 à 10:00:59    

à 300 % !!!!!!
 
de plus il me smeblait avoir déjà essayé... bref... j'suis nul..
 
désolé..

Reply

Marsh Posté le 08-06-2001 à 14:21:36    

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à....

Reply

Marsh Posté le 08-06-2001 à 14:24:45    

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


---------------

Reply

Marsh Posté le 08-06-2001 à 14:28:28    

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....

Reply

Marsh Posté le 08-06-2001 à 15:19:43    

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 :)

Reply

Marsh Posté le 08-06-2001 à 16:06:19    

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:

Reply

Marsh Posté le 08-06-2001 à 16:09:15    

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


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 08-06-2001 à 16:11:27    

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:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed