Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Fleimard en SQL


mofo

Messages recommandés

PouYou -> la premiere requete me donnera le nbr d'enregistrement !!!

la deuxieme recuperera tous les enregistrements sauf 3

 

Pour ca je suis ok et je l'ai fait

 

Mais là les enregistrements sont trié par "date" (c comme celà que l'on vire les 3 plus recents)

 

---- Problème = moi je veux les trier par Titre !!!!!!!!!

 

:P

Lien vers le commentaire
Partager sur d’autres sites

Aaaaah ok j'avais pas fait gaffe !

 

Dans ce cas, la première requete doit te servir à déterminer la date maximale, et la deuxième selectionne le reste :

 

select date from table order by date desc limit 1,3

tu prends le dernier element et stockes sa date dans $datelimite

 

et puis

select * from table where date<$datelimite order by titre asc

 

ça devrait passer ça, non ?

je sais pas si on peut le résumer en une seule requete (c'était ptet ça ta question d'ailleurs...)

Lien vers le commentaire
Partager sur d’autres sites

PouYou -> bon en fait pendant que l'on discute sur le forum et ben je teste mais j'ai encore un probleme

 

Ca marche ... mais ... si par exemple on a les dates suivantes

 

1 - 2002-07-15

2 - 2002-07-12

3 - 2002-07-10

4 - 2002-07-10

5 - 2002-07-08

 

On va garder comme date max -> 2002-07-10

 

Lors de l'affichage il va en oublier un puiskil peut y avoir plusieurs enregistrements avec la meme date

 

Donc les trois derniers enregistrements seront (1,2,3 -- j'en parle car je les affiche aussi sur la page)

Et les autres seront ceux dont la date sera avant 2002-07-10 !!!

 

On perdra alors l'info (4)

 

!!!

 

Tout le monde a compris ???

 

++

Lien vers le commentaire
Partager sur d’autres sites

PouYou -> bon en fait pendant que l'on discute sur le forum et ben je teste mais j'ai encore un probleme

 

Ca marche ... mais ... si par exemple on a les dates suivantes

 

1 - 2002-07-15

2 - 2002-07-12

3 - 2002-07-10

4 - 2002-07-10

5 - 2002-07-08

 

On va garder comme date max -> 2002-07-10

 

Lors de l'affichage il va en oublier un puiskil peut y avoir plusieurs enregistrements avec la meme date

 

Donc les trois derniers enregistrements seront (1,2,3 -- j'en parle car je les affiche aussi sur la page)

Et les autres seront ceux dont la date sera avant 2002-07-10 !!!

 

On perdra alors l'info (4)

 

!!!

 

Tout le monde a compris ???

 

++

 

Exact j'y avais pas pensé. Dans ce cas, je suppose que t'as un champ id qui est auto incrémenté ? y'a qu'à se baser là dessus pour fixer la limite.

Lien vers le commentaire
Partager sur d’autres sites

-Pour l'heure dans la date -> pas une bonne idée, car les utilisateurs saisissent tous les champs

à la main dans la base (me demandait pas pourquoi le système est comme ca)

-Pour l'id auto incremente -> en fait yena pas (l'exemple etait faux ... bouh mofo ... bouh mofo)

 

Donc je sais pas trop koi faire

 

J'ai bien pense les trois enregsitrements ki doivent gicler et les enlever ds l'autre requete (c lourd

comme methode ... )

 

 

Je voulai savoir si on pouvait faire des "intersect" avec deux requetes dans la meme table ???

 

J'ai teste ca : select * from toto order by titre EXEPT select * from toto order by date limit 0,3

L'erreur est la suivante : "MySQL a répondu: Something is wrong in your syntax près de 'EXEPT select * from toto order by date limit 0,3"

 

Allez ... on va y arriver !!!

 

Merci pour le temps deja passé

 

Mofo

Lien vers le commentaire
Partager sur d’autres sites

c le order by date qui chie...tu l'as mis au mv endroit... lui il croit que tu fais un order by par "titre EXEPT select * from toto order by date limit 0,3 "

essaye ss le order by dejà, puis essaye avec des parentheses ou des guillemets (c dommage que g pas ma bible sous la main...)

Lien vers le commentaire
Partager sur d’autres sites

Avec Oracle, on ne peut pas utiliser de ORDER BY dans une sous-requête, ce qui est dommage, parce qu'on aurait pu faire :

 

SELECT * FROM

(SELECT * FROM toto

WHERE ROWNUM > 3

ORDER BY date)

ORDER BY titre

 

Du coup c'est un peu mission impossible, surtout si le nombre d'enregistrements à virer est fixe alors que les dates peuvent être égales !!

(donc à moins de faire du PL/SQL laisse tomber !)

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...