Votre question

SQL

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
8 Mars 2006 10:03:08

Bonjour,

Savez-vous comment sélectionner la date la plus récente d'une colonne en SQL ? Merci.

Autres pages sur : sql

8 Mars 2006 10:15:21

Tu as un identifiant dans ta colonne ou la date d'ajout du tuple ?
8 Mars 2006 10:17:25

je ne comprends pas ce que tu veux dire, peux-tu t'expliquer, stp ?
J'ai une colonne contenant plusieurs dates et parmi celles-ci, je voudrai la plus récente.
Contenus similaires
8 Mars 2006 10:19:44

Tu fais un "select ... from ... where ... order by date" avec date la colonne contenant la date ;-)

Par contre j'ai un léger doute... car ca va dépendre de la facon dont la date a été rentrée dans la table je pense...
8 Mars 2006 10:32:00

ça, ça va les trier seulement, non ? Je voudrais faire un select... from... where... and date = "la plus récente de la colonne"
8 Mars 2006 10:34:37

Alors plusieurs possibilité...

1. Trier par date et ne récupérer que la première valeur ;-)
2. Tu récupères la valeur "max" de la date et ensuite tu fais un select... where date="max"
3. Je vais y réfléchir un peu...
8 Mars 2006 10:42:02

euh :hum: 
j'opterai plutôt pour la deuxième solution en attendant mieux car ça doit être un truc clean. J'ai trouvé greatest (ou least pour la valeur la plus petite) qui permet de récupérer la plus grande valeur mais, ils disent que ça ne s'utilise pas en SQL :-( . Enfin, je vais essayer quand même, même si je ne sais pas du tout comment l'utiliser.
8 Mars 2006 10:46:40

select * from ... where date=max(date) ?
8 Mars 2006 10:52:34

group fonction is not allowed here
:-(
8 Mars 2006 10:55:02

group fonction ? Hein ???

C'est l'erreur qu'il te renvoit ?

Sinon avec un select imbriqué :

Select * from ... where date= (select max(date) from ...)
8 Mars 2006 10:59:00

pourquoi faire une sous requete...sa sert à rien.

select champ 1,champ2 ... FROM latablemysql ORDER BY champdate DESC LIMIT x
8 Mars 2006 10:59:56

oui c'était l'erreur retournée, j'ai ensuite essayé de le mettre dans mon select mais, ça marche pas. Je vais donc essayer en requête imbriquée. Je te dis quoi.
En tout cas, merci pour ton aide.
8 Mars 2006 11:15:36

Bon après m'être renseigné, mon code devrait renvoyer tous les tuples contenant la date alors que celle d'Okinou renvoit une seule valeur (la première qu'il trouve).

Maintenant tout dépend de l'utilisation que tu en as...
8 Mars 2006 11:23:52

pour la requête imbriquée, ça me retourne : single-row subquery returns more than one row
donc, je vais essayer l'autre
comment tu utilises le desc limit ?
8 Mars 2006 11:27:17

Donc l'erreur c'est effectivement car il renvoit plusieurs valeurs à priori ;-)

En fait je connaissais pas cette fonction mais elle fait un ordre dans un tri décroissant (jusque là tout est normal) et ensuite on limite les résultats aux "n" premiers tuples en écrivant LIMIT n
8 Mars 2006 11:33:19

command not properly ended
et l'erreur est entre le desc et le limit
sinon, j'ai essayé de faire autrement, mais j'ai toujours "single-row...". Je vais vérifier si je lie bien les tables ensemble et qu'il n'y a pas de "more than one row"
8 Mars 2006 11:36:18

Ce que t'as donné Okinou ne marche pas ?

SELECT *
FROM ...
ORDER BY champdate DESC
LIMIT 1;

? Tu as bien mis le ";" ?
8 Mars 2006 11:38:49

je n'utilise pas le ;
et même si je le mets, il me dit que j'ai un erreur au niveau du limit
8 Mars 2006 11:41:34

C'est du SQL server ?
8 Mars 2006 11:44:43

est-ce que tu as deja lu une doc ou un tuto sur le sujet ?
8 Mars 2006 11:47:01

J'ai trouvé autre chose... maintenant je ne sais aps ce que ca donne...

SELECT TOP 1 * FROM...
ORDER BY Champdate DESC

Ca pourrait éventuellement fonctioner... sous réserve hein ;-)
8 Mars 2006 11:48:07

on va faire plus simple

Que cherche tu a avoir comme résultatau final ?

S'agit t'il de MySQL ou d'une autre type de base ?

Quel est ton hébergeur ou est ce local ?
8 Mars 2006 11:48:33

non c'est du oracle (enfin, à ce que j'ai cru comprendre, vu que j'utilise sysdate pour la date courante)
je ne trouve aucune doc qui parle de ça. Si tu as un lien qui en parle, donne-le moi, stp, ritzle.
8 Mars 2006 11:55:22

finalement, cette histoire de date n'est plus le problème

mais, j'ai toujours un problème :
j'ai une référence, couleur, prix
soit la couleur est -, ce qui caractérise toutes les couleurs ; soit c'est une donnée. Si c'est une donnée, elle a un prix qui est différent du prix des couleurs '-'
je dois joindre cette table avec la table qui contient toutes les références et leurs couleurs
je dois obtenir la référence, toutes les couleurs qui existent pour la référence et le prix associé

j'espère avoir été assez claire, n'hésitez pas à poser des questions
merci de votre aide
8 Mars 2006 11:58:07

au fait, j'ai déjà la requête qui permet de donner le prix des exceptions (couleurs particulières) et celle-ci fonctionne. Le problème se pose pour les autres couleurs

c'est en local que je travaille
8 Mars 2006 12:09:39

J'ai rien compris :-o
8 Mars 2006 12:26:41

bon, j'ai deux tables t1 et t2

t1 est composée de réf, couleur et prix
couleur peut prendre - ou une valeur a, b, c...
- représente toutes les couleurs possibles pour la référence
une couleur a, b, c... est une exception
un prix est associé à une réf, couleur
un prix différent pour les exceptions

t2 est composée de réf et de toutes les couleurs associées à une réf

ex : dans t2 :
réf = 5 | 5 | 5
couleur = a | b | c

dans t1 :
réf = 5 | 5
couleur = - | b
prix = 1€ | 2€

je voudrai obtenir
réf = 5 | 5 | 5
couleur = a | b | c
prix = 1€ | 2€ | 1€

Cela est-il plus clair ?
J'arrive à obtenir 5-b à 2€ mais pas 5-a ni 5-c.

8 Mars 2006 13:10:30

Donc tu voudrais obtenir toutes les références possibles avec leurs couleurs associées pour tous les objets ?
8 Mars 2006 13:41:48

oui
je voulais faire ça avec deux requêtes imbriquées car je suis pas sûre que ça marche dans une seule mais celle des - me pose problème !
8 Mars 2006 13:47:23

Et si tu commences par faire les exceptions et ensuite le premier select avec un truc du genre :

select *
from ...
where not exists (select * from where...)
8 Mars 2006 14:19:28

les exceptions, c'est bon j'arrive à les obtenir
faudrait maintenant que j'obtienne les autes avec les prix de la couleur '-'
je vais essayer de les imbriquer pour dire tu les as trouvés dans la requête exception, tu les mets pas dans la général. Peut-être que je trouverai une solution
merci
8 Mars 2006 14:27:56

Bonjour,

si je prend les notations de ton exemple, ceci devrait marcher.

SELECTFROM t2.couleur NOTIN t1
)
UNIONSELECT t1.couleur = t2.couleur
AND
8 Mars 2006 16:36:12

ça ne va pas, j'obtiens
réf = 5 |5 |5 |5 |5 |5
couleur = a |a |b |b |c |c
prix = 1€|2€|1€|2€|1€|2€

:confused:

peut-être parce que j'ai trop de conditions ?

exists semble mieux fonctionner que in si je décompose les deux requêtes et que je ne demande pas le prix. Mais, je n'obtiens qu'une réponse partielle et dès que j'ajoute le prix, ça ne va plus !
8 Mars 2006 18:10:41

SELECT t2.ref, t2.couleur, t1.prix
FROM t2, t1
WHERE t1.couleur = "-"
AND t2.ref=t1.ref
AND NOT EXISTS (
SELECT t2.ref, t2.couleur, t1.prix
FROM t2, t1
WHERE t1.couleur = t2.couleur
AND t1.ref = t2.ref
)
UNION
SELECT t2.ref, t2.couleur, t1.prix
FROM t2, t1
WHERE t1.couleur = t2.couleur
AND t1.ref = t2.ref

Et un truc de ce genre ?
8 Mars 2006 18:25:18

Désolé, cette requête marche parfaitement avec l'exemple que tu as donné sous MySQL.
Je n'ai pas de base Oracle sous la main, mais je suis étonné que le résultat soit différent.
13 Mars 2006 13:44:47

Ben, finalement, je mets toutes les réf et toutes les couleurs au prix de la ligne -. Et j'ai une autre requête en update des exceptions, que j'arrive à obtenir avec le bon prix.
Merci beaucoup pour votre aide.
15 Mars 2006 09:47:13

Bonjour,

J'ai un nouveau problème !

Je fais un to_number d'une colonne et oracle me renvoit une erreur en disant que j'essaie de faire un to_number d'un caractère non numerique.
Comment puis-je savoir de quelle(s) ligne(s) il s'agit ? J'ai essayé de faire un "... where colonne like '[09]' " mais, cela ne fonctionne pas vu que ça me renvoit tout ! Avez-vous une idée ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS