[mysql] aide pour une pitite requète

aide pour une pitite requète [mysql] - SQL/NoSQL - Programmation

Marsh Posté le 08-07-2002 à 17:12:51    

voilà, je voudrais faire un truc du style :
 
 

Code :
  1. UPDATE table SET brol=0 WHERE brol=1 ORDER BY ordre DESC LIMIT 5,3;


 
 
c'est pour changer brol en brol=0 pour les entrée de 5 à 8 où brol=1
 
 
j'en profite pour demander s'il y a pas moyen de faire ce qui suit, mais plus simplement parce que ca me parait un peu lourd pour ce que ca fait :
 

Code :
  1. $sql = "SELECT COUNT(*) FROM table WHERE top=1";
  2. $query = mysql_query($sql, $db);
  3. $my_result = $mysql_fetch_row($query);
  4. $taille = $myresult[0];


 
voili :)
 
 
je suis neuneu ! n'est-ce pas ?


Message édité par art_dupond le 08-07-2002 à 17:15:33

---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:12:51   

Reply

Marsh Posté le 08-07-2002 à 17:15:52    

tu as pas un champ "id" dans ta table???
parce que le limit, c'est un peu hasard.
(genre si tu fais un order by truc limit 3, ça te renvoie pas necessairement les 3 records ou truc est le plus petit...)

Reply

Marsh Posté le 08-07-2002 à 17:16:26    

hum, je vais essayer avec WHERE SELECT...
 
 
 
ps : je me réponds parce que bon... je me sens seul :na:


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:17:04    

--greg-- a écrit a écrit :

tu as pas un champ "id" dans ta table???
parce que le limit, c'est un peu hasard.
(genre si tu fais un order by truc limit 3, ça te renvoie pas necessairement les 3 records ou truc est le plus petit...)




j'ai des numéros d'ordre : ordre


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:18:39    

art_dupond a écrit a écrit :

 
j'ai des numéros d'ordre : ordre




 
UPDATE table SET brol=0 WHERE brol=1 AND ordre>5 AND ordre<=8;
 

Reply

Marsh Posté le 08-07-2002 à 17:20:35    

bon, je vais mieux expliquer comme ca ce sera plus clair (sorry)
 
 
ordre = nombre de clicks => ne sont pas des nombres qui se suivent et je les connais pas à l'avance


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:23:01    

tu dois bien avoir un champ clé primaire dans ta base ???


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-07-2002 à 17:29:33    

euh oui, id
 
mais je crois pas en avoir besoin pour faire ce que je veux faire


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:33:18    

ben si, tu prends la requete que greg t'a filé plus haut, et tu remplaces ordre par id


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-07-2002 à 17:43:06    

euh... j'suis neuneu, mais je crois pas que c'est ce qu'il me faut.
 
bon je vais faire un dessin.
 
 

Code :
  1. id        nom       brol        ordre
  2. 7        pout        1           125
  3. 4        patate      1           112
  4. 10       proutte     0           100
  5. 1        otchouck    1           98
  6. ...


 
et je voudrais garder les 2 premières entrées avec brol=1 (donc les entrées avec brol=1 et dont ordre est le plus grand)
et les autres entrées ou brol=1, je veux les remettre à 0
 
donc je veux avoir en final :
 

Code :
  1. id        nom       brol        ordre
  2. 7        pout        1           125
  3. 4        patate      1           112
  4. 10       proutte     0           100
  5. 1        otchouck    0           98
  6. ...


 
donc je peux pas faire avec id


Message édité par art_dupond le 08-07-2002 à 17:45:18

---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:43:06   

Reply

Marsh Posté le 08-07-2002 à 17:47:12    

tu veux updater les deux qui ont l'ordre le plus petit alors?


Message édité par --greg-- le 08-07-2002 à 17:48:02
Reply

Marsh Posté le 08-07-2002 à 17:49:15    

je veux garder les deux dont l'ordre est le plus grand
et remettre tous les autres qui étaient à 1 => zéro


Message édité par art_dupond le 08-07-2002 à 17:49:54

---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:51:48    

à part avec une requete imbriquée je vois pas :(

Reply

Marsh Posté le 08-07-2002 à 17:52:58    

ben propose toujours.
 
je sais pas comment faire, c'est pour ca que je demande :p  
 
j'suis neuneu moi :cry:


Message édité par art_dupond le 08-07-2002 à 17:53:31

---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:55:08    

update set brol=0 where brol=1 and id not in (select id from table where brol=1 order by ordre desc limit 2)


Message édité par --greg-- le 08-07-2002 à 17:56:09
Reply

Marsh Posté le 08-07-2002 à 17:55:12    

en fait, je voudrais faire
 

Code :
  1. UPDATE sites SET top=0 WHERE top=1


 
à partir de la troisième entré par exemple
 
ca doit etre faisable simplement quand meme. non ?


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:55:38    

ok vais essayer


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 17:56:28    

art_dupond a écrit a écrit :

ok vais essayer



voir edit

Reply

Marsh Posté le 08-07-2002 à 18:06:41    

marche pas :(
 
UPDATE sites SET top=0 where top=1  marche
select id from table where brol=1 order by ordre desc limit 2 marche
 
mais le tout ne marche pas :(


Message édité par art_dupond le 08-07-2002 à 18:07:13

---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 18:16:48    

art_dupond a écrit a écrit :

marche pas :(
 
UPDATE sites SET top=0 where top=1  marche
select id from table where brol=1 order by ordre desc limit 2 marche
 
mais le tout ne marche pas :(




t sur que t'as tout bien recopié?
et ça marche pas="y'a un message d'erreur" ou bien "ça fait pas ce que je veux" !?

Reply

Marsh Posté le 08-07-2002 à 18:25:45    

ca marche pas :  
 
You have an error in your SQL syntax near (select id from table where brol=1 order by ordre desc limit 2)' at line 1
 


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 18:26:29    

au cas ou j'aurais fait une connerie,  
 
mon code tel quel:
 
"UPDATE sites SET top=0 where top=1 AND site_id NOT IN (SELECT site_id FROM sites WHERE top=1 ORDER BY nb_clics DESC LIMIT 2)"


---------------
oui oui
Reply

Marsh Posté le 08-07-2002 à 18:31:21    

ha oui euh c vrai, ça marche pas les requetes imbriquées dans mysql, oops.
euh alors donc je sais pas comment tu peux faire.
pê ton probleme se situe plus au niveau du data model :)

Reply

Marsh Posté le 08-07-2002 à 18:44:23    

ouais ben j'ai jamais appris alors bon...
 
bon, je vais essayer de me débrouiller.
 
merci de ton aide :)
 
 
 :hello:  
 


---------------
oui oui
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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