SQL : Sortir une ligne par identifiants
Résolu
Nicoyac
-
Sacha79 Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
Sacha79 Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail actuellement sur SQL Server et je cherche à obtenir ce résultat :
TABLE DEPART TABLE ARRIVEE
id id2 modele id id2 modele
1 a toto 1 a toto
2 b titi 2 b titi
3 c papa 3 e tata
1 d dodo
3 e tata
En bref je souhaite sortir une ligne par "id" avec un tri décroissant sur modele mais je veux absolument avoir les autres champs dans le résultat.
Aujourd'hui j'arrive,
soit à sortir une table avec l'id uniquement mais pas les autres champs en faisant :
SELECT id
FROM TABLE DEPART
GROUP BY id
soit à sortie une table avec l'id et le modele mais celle-ci comporte encore les doublons sur id
SELECT DISTINCT id, modele
FROM TABLE DEPART
ORDER BY id, modele DESC
Auriez-vous une idée ? Merci d'avance et bonne journée,
Je travail actuellement sur SQL Server et je cherche à obtenir ce résultat :
TABLE DEPART TABLE ARRIVEE
id id2 modele id id2 modele
1 a toto 1 a toto
2 b titi 2 b titi
3 c papa 3 e tata
1 d dodo
3 e tata
En bref je souhaite sortir une ligne par "id" avec un tri décroissant sur modele mais je veux absolument avoir les autres champs dans le résultat.
Aujourd'hui j'arrive,
soit à sortir une table avec l'id uniquement mais pas les autres champs en faisant :
SELECT id
FROM TABLE DEPART
GROUP BY id
soit à sortie une table avec l'id et le modele mais celle-ci comporte encore les doublons sur id
SELECT DISTINCT id, modele
FROM TABLE DEPART
ORDER BY id, modele DESC
Auriez-vous une idée ? Merci d'avance et bonne journée,
A voir également:
- SQL : Sortir une ligne par identifiants
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
7 réponses
Coucou !!
J'ai pas vraiment tout compris mais si je te cite :
Aujourd'hui j'arrive, soit à sortir une table avec l'id uniquement mais pas les autres champs en faisant :
SELECT id
FROM TABLE DEPART
GROUP BY id
Si tu veux les autres champs, t'as juste à écrire :
SELECT *
FROM TABLE DEPART
GROUP BY id
Non ??
Bon courage !!
J'ai pas vraiment tout compris mais si je te cite :
Aujourd'hui j'arrive, soit à sortir une table avec l'id uniquement mais pas les autres champs en faisant :
SELECT id
FROM TABLE DEPART
GROUP BY id
Si tu veux les autres champs, t'as juste à écrire :
SELECT *
FROM TABLE DEPART
GROUP BY id
Non ??
Bon courage !!
Je me rend compte que la demande n'est pas très clair donc voici la table de départ et la table voulue en résultat :
TABLE DEPART
id--id2--modele
1--a--toto
2--b--titi
3--c--papa
1--d--dodo
3--e--tata
TABLE RESULTAT
1--a--toto
2--b--titi
3--e--tata
TABLE DEPART
id--id2--modele
1--a--toto
2--b--titi
3--c--papa
1--d--dodo
3--e--tata
TABLE RESULTAT
1--a--toto
2--b--titi
3--e--tata
salut,
je reprends un peu : tu as 2 tables, DEPART ET ARRIVEE.
mais que veux-tu obtenir réellement, je n'ai pas bien compris ce que tu cherche à sortir...
et qu'est ce que ton id2 ?
arrivee.id1 = clé étrangère sur depart ?
arrivee.id2 = clé étrangère sur depart?
Explique et détaille nous plus précisément tes tables, tes champs, et donne peut-être un exemple de ce que tu souhaites obtenir comme résultats pour ta requête ;-)
erratum : ah je crois que tu as été plus rapide que moi...
je reprends un peu : tu as 2 tables, DEPART ET ARRIVEE.
mais que veux-tu obtenir réellement, je n'ai pas bien compris ce que tu cherche à sortir...
et qu'est ce que ton id2 ?
arrivee.id1 = clé étrangère sur depart ?
arrivee.id2 = clé étrangère sur depart?
Explique et détaille nous plus précisément tes tables, tes champs, et donne peut-être un exemple de ce que tu souhaites obtenir comme résultats pour ta requête ;-)
erratum : ah je crois que tu as été plus rapide que moi...
Alors,
ETRANGER, ta deuxième proposition ne fonctionnera pas non plus et justement là est tout le problème :
Si je fais "SELECT id FROM TABLE DEPART GROUP BY id", j'obtiens le bon dédoublonnage mais pas les bonnes infos. Et si je fais SELECT * FROM TABLE DEPART GROUP BY id, id2, modele", j'obtiens les bonnes infos mais pas le bon dédoublonnage (qui se fera sur les trois champs) !
Concernant la question de LEFADRINE la table d'entrée a une double clé : id et id2 mais je cherche à dédoublonner uniquement sur id en prenant la première valeur de "modele" après tri, en l'occurence la syntaxe SQL de ce que je veux pourrais ressembler à cela mais cette syntaxe est fausse :
SELECT *
FROM TABLE DEPART
GROUP BY id
ORDER BY modele DESC
ETRANGER, ta deuxième proposition ne fonctionnera pas non plus et justement là est tout le problème :
Si je fais "SELECT id FROM TABLE DEPART GROUP BY id", j'obtiens le bon dédoublonnage mais pas les bonnes infos. Et si je fais SELECT * FROM TABLE DEPART GROUP BY id, id2, modele", j'obtiens les bonnes infos mais pas le bon dédoublonnage (qui se fera sur les trois champs) !
Concernant la question de LEFADRINE la table d'entrée a une double clé : id et id2 mais je cherche à dédoublonner uniquement sur id en prenant la première valeur de "modele" après tri, en l'occurence la syntaxe SQL de ce que je veux pourrais ressembler à cela mais cette syntaxe est fausse :
SELECT *
FROM TABLE DEPART
GROUP BY id
ORDER BY modele DESC
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah je vois ce que tu veux :
tu veux obtenir pour un id donné la ligne qui a le modele le plus grand ?
exemple :
DEPART
1 a abc
1 b zzz
RESULTAT
1 a abc
tu veux obtenir pour un id donné la ligne qui a le modele le plus grand ?
exemple :
DEPART
1 a abc
1 b zzz
RESULTAT
1 a abc
dans ce cas, tu as besoin d'une sous requete :
voilà ;)
SELECT * FROM arrivee WHERE modele IN (SELECT MAX(modele) FROM arrivee GROUP BY id);
voilà ;)
Lefadrine,
La requête que tu m'as indiqué ne me convient pas vraiment puisque les modèles se répétent souvent dans la table (non visible dans mon exemple). Pour mieux l'exprimer, les id correpondent à des personnes et le modèle à un véhicule. Si pour la personne 1 je sélectionne la veleur max soit par exemple 2CV alors avec cette requête je sortirai par la suite toutes les 2CV de la table.
Par contre ta réponse m'a donné la solution en effet la requéte qui fonctionnera sera :
SELECT MAX(Modèle), id
FROM TABLE ENTREE
GROUP BY id
Merci à vous deux pour votre aide, à charge de revanche,
Nicoyac
La requête que tu m'as indiqué ne me convient pas vraiment puisque les modèles se répétent souvent dans la table (non visible dans mon exemple). Pour mieux l'exprimer, les id correpondent à des personnes et le modèle à un véhicule. Si pour la personne 1 je sélectionne la veleur max soit par exemple 2CV alors avec cette requête je sortirai par la suite toutes les 2CV de la table.
Par contre ta réponse m'a donné la solution en effet la requéte qui fonctionnera sera :
SELECT MAX(Modèle), id
FROM TABLE ENTREE
GROUP BY id
Merci à vous deux pour votre aide, à charge de revanche,
Nicoyac
Est-ce que cette requête ne répondrait pas à ta question : Reccupérer le détail de la valeur MAX d'une table enfant : SUJET : Table Parent COMMENTAIRE : Table Enfant
http://ww11.xoowiki.com/Article/SQL-Server/detail-dune-valeur-max-enfant-143.aspx
http://ww11.xoowiki.com/Article/SQL-Server/detail-dune-valeur-max-enfant-143.aspx
Bonne journée,