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

Le
andre_debian
Bonsoir,

Depuis l'installation de MySQL dernire version,
Je sche 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 rcuprer 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 rcupre 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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian Quentin
Le #26429745
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é
Christian Quentin
Le #26430288
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
Eric Degenetais
Le #26430354
--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,
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
passage (même s'il est probablement trop tard) pour moi c'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'une jointure, et ça éviterait de stocker l'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...) &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--
Christian Quentin
Le #26430415
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é
Eric Degenetais
Le #26430469
--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
Christian <br>
<br>
Le 27/03/2017 à 13:13, On Sunday 26 March 2017 23:14:01 Christian Quentin wrote:<br>
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--
Publicité
Poster une réponse
Anonyme