Affichage requete
Résolu
caro__48
Messages postés
242
Date d'inscription
Statut
Membre
Dernière intervention
-
diablo13800 Messages postés 2890 Date d'inscription Statut Membre Dernière intervention -
diablo13800 Messages postés 2890 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans une requête, peut-on demander d'afficher un seul résultat?
Par exemple:
$requete1=mysql_query("
select
*
FROM historique_commandes
Order by logo ASC") or die (mysql_error());
echo ('<table id="t2" border="0" cellpadding="5">
<tr>
<td>
Fournisseurs / Marques:
</tr>');
while ($val = mysql_fetch_object($requete1))
{
?>
<tr>
<td>
<img src="Logos_marques_fournisseurs/<?php echo $val->logo;?>.jpg">
</td>
</tr>
<?php
}
echo('</form> </table>');
La il m'affiche autant le logo que ce qu'il trouve de ligne (cad: si j'ai 8 lignes avec le logo "test1", il affiche 8 fois le logo "test1" dans mon tableau)
Peux t on l'afficher q'une fois?
Ou je suis obligée de faire une autre table avec mes logos uniquement et une jointure entre les deux??
Merci d'avance pour votre aide :)
l'informatique est né pour nous faire réfléchir....
Dans une requête, peut-on demander d'afficher un seul résultat?
Par exemple:
$requete1=mysql_query("
select
*
FROM historique_commandes
Order by logo ASC") or die (mysql_error());
echo ('<table id="t2" border="0" cellpadding="5">
<tr>
<td>
Fournisseurs / Marques:
</tr>');
while ($val = mysql_fetch_object($requete1))
{
?>
<tr>
<td>
<img src="Logos_marques_fournisseurs/<?php echo $val->logo;?>.jpg">
</td>
</tr>
<?php
}
echo('</form> </table>');
La il m'affiche autant le logo que ce qu'il trouve de ligne (cad: si j'ai 8 lignes avec le logo "test1", il affiche 8 fois le logo "test1" dans mon tableau)
Peux t on l'afficher q'une fois?
Ou je suis obligée de faire une autre table avec mes logos uniquement et une jointure entre les deux??
Merci d'avance pour votre aide :)
l'informatique est né pour nous faire réfléchir....
A voir également:
- Affichage requete
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Affichage youtube trop grand ✓ - Forum YouTube
- Casio fx-92 affichage décimal ✓ - Forum calculatrices
3 réponses
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.
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
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
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
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 :)
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.
Mais simple question Reivax962 une colonne sur 5000 pour le distinct c'est pas si ralentissant si?