Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[1/2 HS] syntaxe qui ne va plus depuis upgrade MySQL

5 réponses
Avatar
andre_debian
Bonsoir,

Depuis l'installation de MySQL derni=E8re version,
Je s=E8che sur une syntaxe SQL qui fonctionnait avant l'upgrade :

"SELECT images, logos, COUNT (*) AS total FROM tablelogo
GROUP BY logos ORDER BY total DESC"

Je pouvais r=E9cup=E9rer le nombre de lignes distinctes =3D "logos" ($row),
ainsi que le contenu du champ =3D "images" ($DATA).

Maintenant, le select affiche un message d'erreur =3D "QUERY empty"

J'ai cherch=E9 via les sites mysql et mon script SELECT semble bon.

Si je mets ce script :
"SELECT logos, COUNT (*) AS total FROM tablelogo
GROUP BY logos ORDER BY total DESC"

Je r=E9cup=E8re le nombre de lignes distinctes "logos"
mais pas le contenu de "images".

Quel est le nouveau script SQL qui fonctionne pour le faire ?

Merci,

Andr=E9

5 réponses

Avatar
Christian Quentin
Bonsoir André,
Je ne sais pas ce qui a changé depuis la mise à jour mais ta requête ne
dit pas quoi faire des images quand tu regroupes par "logos". Faut-il
prendre la première, la dernière, la plus qqch ou la moins qqch ??
Bref, je pense qu'en indiquant à ta requête quelle image retenir dans
chaque regroupement de logos, ça pourrait aider. Il manque une fonction
d'aggrégation sur le champ images.
Christian
Le 21/03/2017 à 20:56, a écrit :
Bonsoir,
Depuis l'installation de MySQL dernière version,
Je sèche sur une syntaxe SQL qui fonctionnait avant l'upgrade :
"SELECT images, logos, COUNT (*) AS total FROM tablelogo
GROUP BY logos ORDER BY total DESC"
Je pouvais récupérer le nombre de lignes distinctes = "logos" ($row),
ainsi que le contenu du champ = "images" ($DATA).
Maintenant, le select affiche un message d'erreur = "QUERY empty"
J'ai cherché via les sites mysql et mon script SELECT semble bon.
Si je mets ce script :
"SELECT logos, COUNT (*) AS total FROM tablelogo
GROUP BY logos ORDER BY total DESC"
Je récupère le nombre de lignes distinctes "logos"
mais pas le contenu de "images".
Quel est le nouveau script SQL qui fonctionne pour le faire ?
Merci,
André
Avatar
Christian Quentin
le nombre de logos distincts ? si oui, la taille du résultat de la
requête ci-dessus te fournira l'info
le nombre de fois où chaque logo distinct a été rencontré lors du
regroupement ? Là, il faudra utiliser
SELECT images, logos, COUNT(logos) FROM tablelogo GROUP BY images, logos :

Ce script marchait avant l'upgrade de mysql... :
Erreur de la requête SELECT images, logos, COUNT(logos) FROM tablelogos
GROUP BY images, logos

Oui mais cette requête est un peu différente : regarde la clause GROUP BY
elle contient les 2 champs que tu veux afficher dans ta clause SELECT
ce n'était pas le cas dans la requête initiale.
Ceci correspond à un vote pour un logo, nombreux logos et images,
au fur et à mesure des votes, le nombre de lignes augmentent :
logos images
32 logo32.jpg
25 logo25.jpg
15 logo15.jpg
32 logo32.jpg
8 logo8.jpg
25 logo25.jpg
Bonne soirée,
André

OK. Donc tu veux obtenir un cumul des votes pour chaque logo.
Tu souhaites également les trier pour avoir les logos les plus
populaires en tête de liste
La requête est donc :
SELECT images, logos, COUNT(logos) AS total
FROM tablelogo
GROUP BY images, logos
ORDER BY total DESC
(quasi identique à ta requête initiale sauf pour le GROUP BY)
Bonne soirée
Christian
Avatar
Eric Degenetais
--94eb2c06d2c6396450054bb631d2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
bonjour,
si tu veux que le compte soit donné dans la même requête il faut que ce
soit une sous-requête qui fasse le compte.
Au passage (même s'il est probablement trop tard) pour moi c'est un pe tit
souci de modélisation: les votes devraient être des lignes d'une autre
table avec une clef vers ton image. De cette façon, tu pourrais faire une
requête simple donnant les deux informations (image ET compte) sur la base
d'une jointure, et ça éviterait de stocker l'image une fois par v ote (je ne
sais pas quelle est la taille de tes images, ni le nombre moyen de votes
par image, mais avec des images moyennes et beaucoup de votes tu peux avoir
un gonflement de volume non-négligeable...)
Cordialement
______________
Éric Dégenètais
Henix
http://www.henix.com
http://www.squashtest.org
Le 27 mars 2017 à 11:13, a écrit :
On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:
OK. Donc tu veux obtenir un cumul des votes pour chaque logo.
Tu souhaites également les trier pour avoir les logos les plus
populaires en tête de liste
La requête est donc :
SELECT images, logos, COUNT(logos) AS total
FROM tablelogo
GROUP BY images, logos
ORDER BY total DESC
(quasi identique à ta requête initiale sauf pour le GROUP BY)

C'est presque gagné,
je reçois bien les contenus du champ "images"'
mais comment récupérer la valeur de "total" du champ "logos",
c'est à dire le nombre de voix par ligne ?
Merci, @+
André

--94eb2c06d2c6396450054bb631d2
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir="ltr"><div>bonjour,<br>si tu veux que le compte soit donné dans la même requête il faut que ce soit une sous-requête qu i fasse le compte.<br>Au
passage (même s&#39;il est probablement trop tard) pour moi c&#39;est un petit
souci de modélisation: les votes devraient être des lignes d&#39 ;une autre
table avec une clef vers ton image. De cette façon, tu pourrais faire
une requête simple donnant les deux informations (image ET compte) sur
la base d&#39;une jointure, et ça éviterait de stocker l&#39;imag e une fois par
vote (je ne sais pas quelle est la taille de tes images, ni le nombre
moyen de votes par image, mais avec des images moyennes et beaucoup de
votes tu peux avoir un gonflement de volume non-négligeable...)<br><br ></div>Cordialement<br><div class="gmail_extra"><br clear="all"><div><d iv class="gmail_signature" data-smartmail="gmail_signature"><div dir= "ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><di v><div dir="ltr"><div><div dir="ltr"><div style="font-family:arial;fo nt-size:small">______________</div><div style="font-family:arial;font-siz e:small"><div dir="ltr">Éric Dégenètais<br><div>Henix<br>< /div><div><img src="https://docs.google.com/a/henix.fr/uc?id 4VkaUOkB hBIeUlWWXMxOVFHdDg&amp;export=download" height="29" width="96"><br></ div><div><img alt=""></div><div><a href="http://www.henix.com" target ="_blank">http://www.henix.com</a><br></div><div><a href="http://www.sq uashtest.org" target="_blank">http://www.squashtest.org</a></div><div><br ></div></div></div></div></div></div></div></div></div></div></div></div></ div></div></div></div>
<br><div class="gmail_quote">Le 27 mars 2017 à 11:13, <span dir=" ltr">&lt;<a href="mailto:" target="_blank">a </a>&gt;</span> a écrit :<br><blockquote cla ss="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;pa dding-left:1ex"><span class="">On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:<br>
&gt; OK. Donc tu veux obtenir un cumul des votes pour chaque logo.<br>
&gt; Tu souhaites également les trier pour avoir les logos les plus<br >
&gt; populaires en tête de liste<br>
&gt; La requête est donc :<br>
&gt; SELECT images, logos, COUNT(logos) AS total<br>
&gt; FROM tablelogo<br>
&gt; GROUP BY images, logos<br>
&gt; ORDER BY total DESC<br>
&gt; (quasi identique à ta requête initiale sauf pour le GROUP BY )<br>
<br>
</span>C&#39;est presque gagné,<br>
<br>
je reçois bien les contenus du champ &quot;images&quot;&#39;<br>
mais comment récupérer la valeur de &quot;total&quot; du champ &q uot;logos&quot;,<br>
c&#39;est à dire le nombre de voix par ligne ?<br>
<br>
Merci, @+<br>
<br>
André<br>
<br>
</div><br></div></div>
--94eb2c06d2c6396450054bb631d2--
Avatar
Christian Quentin
le total pour chaque logo devrait apparaître dans le champ "total", non ?
Christian
Le 27/03/2017 à 13:13, a écrit :
On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:
OK. Donc tu veux obtenir un cumul des votes pour chaque logo.
Tu souhaites également les trier pour avoir les logos les plus
populaires en tête de liste
La requête est donc :
SELECT images, logos, COUNT(logos) AS total
FROM tablelogo
GROUP BY images, logos
ORDER BY total DESC
(quasi identique à ta requête initiale sauf pour le GROUP BY)

C'est presque gagné,
je reçois bien les contenus du champ "images"'
mais comment récupérer la valeur de "total" du champ "logos",
c'est à dire le nombre de voix par ligne ?
Merci, @+
André
Avatar
Eric Degenetais
--001a11441630ad4c97054bc4c01d
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Le 27 mars 2017 9:59 PM, "Christian Quentin" <
a écrit :
le total pour chaque logo devrait apparaître dans le champ "total", no n ?
Christian
C'est une solution si on n'enregistre aucune autre donnée sur le vote que
le logo choisi. Par contre il faut faire attention à la méthode c hoisie
pour incrementer le champ pour être sûr de compter chaque vote en accès
concurrent.
Le 27/03/2017 à 13:13, a écrit :
On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:
OK. Donc tu veux obtenir un cumul des votes pour chaque logo.
Tu souhaites également les trier pour avoir les logos les plus
populaires en tête de liste
La requête est donc :
SELECT images, logos, COUNT(logos) AS total
FROM tablelogo
GROUP BY images, logos
ORDER BY total DESC
(quasi identique à ta requête initiale sauf pour le GROUP BY)

C'est presque gagné,
je reçois bien les contenus du champ "images"'
mais comment récupérer la valeur de "total" du champ "logos",
c'est à dire le nombre de voix par ligne ?
Merci, @+
André

--001a11441630ad4c97054bc4c01d
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir="auto"><div><br><div class="gmail_extra"><br><div class="gma il_quote">Le 27 mars 2017 9:59 PM, &quot;Christian Quentin&quot; &lt;< a href="mailto:">christian.quentin @architecte-du-web.com</a>&gt; a écrit :<br type="attribution"> <blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">le total pour chaque logo devrait apparaître dans le champ &quot;total&quot;, non ? <font color="#888888"><br>
Christian</font></div></div></div><div dir="auto">C&#39;est une solution si on n&#39;enregistre aucune autre donnée sur le vote qu e le logo choisi. Par contre il faut faire attention à la méthode choisie pour incrementer le champ pour être sûr de compter chaqu e vote en accès concurrent. </div><div dir="auto"></div><div di r="auto"><br></div><div dir="auto"><div class="gmail_extra"><div clas s="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;bo rder-left:1px #ccc solid;padding-left:1ex"><div class="elided-text"><br>
<br>
<br>
Le 27/03/2017 à 13:13, <a href="mailto:" target="_blank"></a> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1p x #ccc solid;padding-left:1ex">
On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1p x #ccc solid;padding-left:1ex">
OK. Donc tu veux obtenir un cumul des votes pour chaque logo.<br>
Tu souhaites également les trier pour avoir les logos les plus<br>
populaires en tête de liste<br>
La requête est donc :<br>
SELECT images, logos, COUNT(logos) AS total<br>
FROM tablelogo<br>
GROUP BY images, logos<br>
ORDER BY total DESC<br>
(quasi identique à ta requête initiale sauf pour le GROUP BY)<br>

C&#39;est presque gagné,<br>
<br>
je reçois bien les contenus du champ &quot;images&quot;&#39;<br>
mais comment récupérer la valeur de &quot;total&quot; du champ &q uot;logos&quot;,<br>
c&#39;est à dire le nombre de voix par ligne ?<br>
<br>
Merci, @+<br>
<br>
André<br>
<br>

<br>
</div></div><br></div></div></div>
--001a11441630ad4c97054bc4c01d--