Se connecter avec
S'enregistrer | Connectez-vous

SQL

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

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

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

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.

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

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

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

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.

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

ç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 !

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 ?

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 ?
Lassé par la pub ? Créez un compte
Tom's guide dans le monde