Code SQL ?
Donnlaur
-
Fu Xuen Messages postés 3651 Statut Contributeur -
Fu Xuen Messages postés 3651 Statut Contributeur -
Bonjour. Voici mon problème.
Dans une table SQL (Nom, prenom, temps1, temps2, temps3) je voudrais faire une selection du (nom, prenom, le meilleur des 3 temps) et trier cette liste temps du plus petit au plus grand.
Ex: Pierre dupont 12:00 12:05 12:07
Paul emile 12:25 12:36 11:59
Réponse :
Paul emile 11:59
Pierre dupont 12:00
Merci pour votre aide.
Dans une table SQL (Nom, prenom, temps1, temps2, temps3) je voudrais faire une selection du (nom, prenom, le meilleur des 3 temps) et trier cette liste temps du plus petit au plus grand.
Ex: Pierre dupont 12:00 12:05 12:07
Paul emile 12:25 12:36 11:59
Réponse :
Paul emile 11:59
Pierre dupont 12:00
Merci pour votre aide.
A voir également:
- Code SQL ?
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
5 réponses
Salut,
Si tu utilises Oracle, tu peux utiliser le DECODE et combiner avec des SIGN pour déterminer le plus gran des trois champs.
En MYSQL, tu peux utiliser la fonction GREATEST() pour faire des comparaisons entre tes champs.
Essaie et si ca marche pas, fais-moi signe !
michael.
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
Si tu utilises Oracle, tu peux utiliser le DECODE et combiner avec des SIGN pour déterminer le plus gran des trois champs.
En MYSQL, tu peux utiliser la fonction GREATEST() pour faire des comparaisons entre tes champs.
Essaie et si ca marche pas, fais-moi signe !
michael.
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
Salut,
Plus généralement, c'est possible en SQL quelquesoit le SGBD. Il faut faire une sous-requête :
-= Fu Xuen =-
Plus généralement, c'est possible en SQL quelquesoit le SGBD. Il faut faire une sous-requête :
SELECT prenom, nom, (SELECT min(t.time) FROM table t WHERE t.prenom = prenom AND t.nom = nom) AS chrono FROM table ORDER BY chrono
-= Fu Xuen =-
Pas d'accord avec toi.
1. Tu ne prends pas le meilleur des trois temps qui se trouvent sur une ligne.
2. Une sous-requete telle que tu l'écris ne fonctionne pas avec tous les SGBD (notamment les versions 7 d'Oracle...)
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
1. Tu ne prends pas le meilleur des trois temps qui se trouvent sur une ligne.
2. Une sous-requete telle que tu l'écris ne fonctionne pas avec tous les SGBD (notamment les versions 7 d'Oracle...)
Ne vous souciez pas de n'être pas remarqué ; cherchez
plutôt à faire quelque chose de remarquable [Confucius]
je pense plutot que tu devrais remplacer "min" par "max" si tu veux obtenir le meilleur temps.
SELECT
nom,
prenom,
(SELECT max(t.time) FROM table t WHERE t.prenom = prenom AND t.nom = nom) AS chrono
FROM
table
ORDER BY
chrono
SELECT
nom,
prenom,
(SELECT max(t.time) FROM table t WHERE t.prenom = prenom AND t.nom = nom) AS chrono
FROM
table
ORDER BY
chrono
Bonjour à tout le monde et merci déjà pour vos réponses.
Dans le code présenté par 'Fu Xuen' je n'ai pas une liste avec
le temps le plus petit par ligne mais le temps le plus petit sur
toute la base de donnée. Ce qui veut dire que j'ai toujours le même temps sur tous les champs. Moi ce que j'aimerais c'est avoir par ligne le temps le plus petit pour le record.
Une petite précision c'est que j'utilise pour l'instant InterBase6.
Merci Donnlaur.
Dans le code présenté par 'Fu Xuen' je n'ai pas une liste avec
le temps le plus petit par ligne mais le temps le plus petit sur
toute la base de donnée. Ce qui veut dire que j'ai toujours le même temps sur tous les champs. Moi ce que j'aimerais c'est avoir par ligne le temps le plus petit pour le record.
Une petite précision c'est que j'utilise pour l'instant InterBase6.
Merci Donnlaur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je dois dire qu'il y a un pb serieux de conception avec ta table. en effet SQL n'etant pas un language procedural il est pratiquement impossible de sortir le meilleur des trois temps de ta table si chaque temps est sur sa colonne grace à SQL seul. je te conseille de les (les temps) inserrer en ligne. au mieux regarder si Interbase n'offre pas les possibilités du procédural sur des données extraites dans une bd.
@+
@+
Malheureusement pour moi je n'arrive pas à trouver le code dont j'ai besoin et c'est pour cela que je reprends contact avec vous.
J'avais oublié de précisé avant que j'utilise Interbase6 et je ne vois pas ou je peux faire des comporaisons avec dans colonnes.
Voilà, si vous avez une solution je suis preneur.
Merci.