Affichage requete
Résolu/Fermé
caro__48
Messages postés
242
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
18 mai 2017
-
Modifié le 29 mars 2017 à 11:26
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 - 29 mars 2017 à 14:08
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 - 29 mars 2017 à 14:08
A voir également:
- Affichage requete
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Comment agrandir l'affichage de l'écran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Affichage conditionnel excel - Guide
3 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 29 mars 2017 à 13:51
Modifié le 29 mars 2017 à 13:51
Bonjour,
Pour éliminer tous les doublons dans une requête SQL, il faut utiliser la clause DISTINCT dans le SELECT.
Par ailleurs, dans ton cas, tu ne veux que le logo mais tu demandes tous les champs (*), ce qui n'est pas considéré comme une bonne pratique (plus de flux réseau, et, typiquement dans le cas présent, ça empêche d'utiliser DISTINCT puisqu'il agirait sur la ligne entière).
Utilise donc la requête suivante :
Xavier
PS : ceci étant dit, la vraie bonne solution comme tu le fais remarquer, c'est d'utiliser une table dédiée aux logos, avec une jointure dans historique_commandes. Tu as 5000 lignes, mais sans doute beaucoup moins de logos ; là, ton serveur SQL est obligé de parcourir toutes les commandes, de vérifier si les logos sont bien distincts... Tu comprends bien que ça lui fait faire plus de travail.
Pour éliminer tous les doublons dans une requête SQL, il faut utiliser la clause DISTINCT dans le SELECT.
Par ailleurs, dans ton cas, tu ne veux que le logo mais tu demandes tous les champs (*), ce qui n'est pas considéré comme une bonne pratique (plus de flux réseau, et, typiquement dans le cas présent, ça empêche d'utiliser DISTINCT puisqu'il agirait sur la ligne entière).
Utilise donc la requête suivante :
SELECT DISTINCT logo FROM historique_commandes ORDER BY logo ASC
Xavier
PS : ceci étant dit, la vraie bonne solution comme tu le fais remarquer, c'est d'utiliser une table dédiée aux logos, avec une jointure dans historique_commandes. Tu as 5000 lignes, mais sans doute beaucoup moins de logos ; là, ton serveur SQL est obligé de parcourir toutes les commandes, de vérifier si les logos sont bien distincts... Tu comprends bien que ça lui fait faire plus de travail.
diablo13800
Messages postés
2890
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
16 février 2024
1 857
Modifié le 29 mars 2017 à 11:44
Modifié le 29 mars 2017 à 11:44
Suivant votre moteur de base Deux choix s'offre a vous , le top 1 ( qui ne semble pas marcher.) et le limit,
Essayer avec le limit comme ceci:
A Vaincre sans péril, on triomphe sans gloire.
Pierre Corneille, Le Cid
Essayer avec le limit comme ceci:
select * FROM historique_commandes Order by logo ASC limit 1
A Vaincre sans péril, on triomphe sans gloire.
Pierre Corneille, Le Cid
caro__48
Messages postés
242
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
18 mai 2017
61
29 mars 2017 à 11:51
29 mars 2017 à 11:51
Ce coup ci cela marche MAIS (il y a toujours des mais...) du coup il ne m'affiche que mon logo "Test1".
Dans ma table de plus 5 000 lignes, j'ai plusieurs logos.
"test 1", répété par exemple 1000 fois,
test 2 (3000 fois)
etc etc...
En fait je veux savoir si il est possible afficher
1 seule fois le logo "TEST1"
en dessous
1 seule fois le logo "test2"
etc etc
Suis-je claire?
Merci merci
Dans ma table de plus 5 000 lignes, j'ai plusieurs logos.
"test 1", répété par exemple 1000 fois,
test 2 (3000 fois)
etc etc...
En fait je veux savoir si il est possible afficher
1 seule fois le logo "TEST1"
en dessous
1 seule fois le logo "test2"
etc etc
Suis-je claire?
Merci merci
diablo13800
Messages postés
2890
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
16 février 2024
1 857
29 mars 2017 à 11:28
29 mars 2017 à 11:28
Bonjour,
Il vous suffit de le préciser dans la requête avec "select top 1"
Il me semble que Limit 1 existe aussi mais celui-ci est en fin de requête
Il vous suffit de le préciser dans la requête avec "select top 1"
Il me semble que Limit 1 existe aussi mais celui-ci est en fin de requête
caro__48
Messages postés
242
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
18 mai 2017
61
29 mars 2017 à 11:36
29 mars 2017 à 11:36
Tout d'abord Merci
Ensuite j'ai un autre problème quand je marque "SELECT TOP 1 * FROM historique_commandes Order by logo ASC...
J'ai une erreur :
Erreur de syntaxe près de '1 * FROM historique_commandes Order by logo ASC' à la ligne 1
Savez vous pourquoi? Je fais une erreur dans la transcription ou alors c'est par ce que mes "logos" sont du texte et non des chiffres. Le top 1 marche dans ce cas la??
Merci beaucoup de votre aide :)
Ensuite j'ai un autre problème quand je marque "SELECT TOP 1 * FROM historique_commandes Order by logo ASC...
J'ai une erreur :
Erreur de syntaxe près de '1 * FROM historique_commandes Order by logo ASC' à la ligne 1
Savez vous pourquoi? Je fais une erreur dans la transcription ou alors c'est par ce que mes "logos" sont du texte et non des chiffres. Le top 1 marche dans ce cas la??
Merci beaucoup de votre aide :)
29 mars 2017 à 14:01
Effectivement cela marche. J'ai mis le * pour faire des test en local rapidement mais je sais que ce n'est pas top du tout :)
Je pense qu'au final quand j'aurai plus de temps, je ferais 2 tables. Le travail est quand même plus propre.
Merci de votre aide.
29 mars 2017 à 14:08
Mais simple question Reivax962 une colonne sur 5000 pour le distinct c'est pas si ralentissant si?