Requete avec COUNT et GROUP BY [SQL] [Résolu] - SQL/NoSQL - Programmation
Marsh Posté le 07-04-2004 à 03:39:50
Oui, d'un autre coté, comment puis-je faire autrement que par cette jointure ?
Seule une imbrication de requêtes pourrait-elle me sortir de ce tracas ?
Marsh Posté le 07-04-2004 à 03:42:11
Jubijub a écrit : y doit y avoir moyen avec des select imbriqués...mais l ca dépasse mes compétences... |
Ah ben pile poil pendant que je postai.
J'ai essayé une requête imbriquée justement, mais sans succès.
Il doit y avoir moyen mais je n'ai pas trouvé pour le moment.
Y'a bien une solution pour résoudre le problème au niveau du script PHP qui serait derrière, mais c'est pas la solution la plus "merisement" propre, car ca serait de créer des infos redondantes en base.
Marsh Posté le 07-04-2004 à 03:43:52
Code :
|
c'est pas très beau mais ca fonctionne
(enfin de tête j'ai pas testé)
Marsh Posté le 07-04-2004 à 03:48:26
Oui c'est la requête imbriquée (mode pas propre) à laquelle j'ai pensé, mais malheureusement niveau syntaxe, MySQL aime pas:
Code :
|
Pourtant sur le papier d'après mes souvenirs, c'est censé marcher. Enfin jvois pas l'erreur
Marsh Posté le 07-04-2004 à 03:52:21
SELECT A.num_centre, count(B.num_centre)
FROM centres A LEFT OUTER JOIN centres_comment B
WHERE A.num_centre = B.num_centre
GROUP BY A.num_centre
essaye ca...l'idée de faire une jointure externe...la jointure à gauche permet ici de récupérer les centres qui n'ont pas de commentaires...mais la syntaxe est peut etre à chier...
Marsh Posté le 07-04-2004 à 03:56:12
Jubijub a écrit : SELECT A.num_centre, count(B.num_centre) |
#1064 - You have an error in your SQL syntax near 'WHERE A.num_centre = B.num_centre
GROUP BY A.num_centre LIMIT 0, 30' at line 4
J'avais effectivement vu des OUTER JOIN dans la doc mais ne maitrisant pas la chose, j'ai pas insisté.
Marsh Posté le 07-04-2004 à 03:59:16
Wai, jvais me plonger dans le OUTER JOIN et bidouiller un peu dedans. Je finirai par trouver, car c'est obligé, cette requête elle doit exister.
Marsh Posté le 07-04-2004 à 04:02:22
Code :
|
juste en rajoutant la jointure externe
par contre je sais plus si jointure externe et group by font bon menage ....
Marsh Posté le 07-04-2004 à 04:03:27
SELECT A.num_centre, count(B.num_centre)
FROM centres A LEFT OUTER JOIN centres_comment B
ON A.num_centre = B.num_centre
GROUP BY A.num_centre
faut un "on" apparement :
http://www.mysql.com/documentation [...] .html#JOIN
Marsh Posté le 07-04-2004 à 04:04:01
cram a écrit :
|
Nan il aime pas la syntaxe non plus.
Par contre le GROUP BY lui il est nécessaire il me semble dès lors qu'on veut faire un COUNT.
Marsh Posté le 07-04-2004 à 04:04:30
cram a écrit :
|
c pas SQL compliant ...pas tous les SGBDR supportent cette notation
Marsh Posté le 07-04-2004 à 04:05:33
Jubijub a écrit : SELECT A.num_centre, count(B.num_centre) |
Oh yeah Jubijub, t'es mon sauveur.
Ca fait exactement ce que je voulai.
Tu m'a pris de vitesse dans la doc.
Merci beaucoup
Marsh Posté le 07-04-2004 à 04:08:50
un truc a marquer sur le coin du bureau pour la prochaine fois ....
je le note
Marsh Posté le 07-04-2004 à 04:09:45
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Je tiens à préciser que :
- je ne connais absolument pas mySQL, je m'en suis jamais servi de ma vie
- je suis une quiche en SQL, justement à cause des jointures dont j'ai du mal à maitriser les syntaxes (mais je débute hein)
Bref, résoudre un pb sans rien y connaitre, avec une solution SQL2 compliant, portable et standard, c la classe
Je suis très fier de moi sur ce coup..c immodeste au possible, mais tant pis
Marsh Posté le 07-04-2004 à 04:13:39
Clair que la syntaxe est notée de mon coté.
En effet Jubijub, chapeau si en plus t'es pas une bête en SQL.
Ensuite pour MySQL, j'avoue que ca respecte assez bien la syntaxe SQL standard (après tout, c'est un peu pour être standard que c'est utilisé)
Marsh Posté le 07-04-2004 à 04:33:13
En effet, tant que t'es étudiant, on te forme aux standards (SQL, Algorithmique...). Ensuite la mise en pratique sur le terrain n'est plus qu'une question de traduction. Le tout est d'avoir la logique de raisonnement. Une fois la requête écrite, il n'est plus bien compliqué de l'adapter à MySQL, Oracle ou DB2...
Marsh Posté le 07-04-2004 à 01:45:10
Alors le soucis est le suivant.
J'ai 2 tables:
CENTRES CENTRES_COMMENT
---------- ------------------------------
num_centre num_comment
... #num_centre
libelle_centre ...
Je souhaite pour chaque enregistrement de CENTRES récupérer le nombre d'occurences contenues dans CENTRES_COMMENT. Même pour les centres pour lesquels il n'y a pas d'occurences.
La requête que j'ai faite est la suivante et ne me renvoie les centres que pour lesquels il y a des occurences dans la seconde table
Avez vous une idée pour comment résoudre mon soucis.
Merci d'avance
Message édité par cybervince le 07-04-2004 à 04:06:48
---------------
SaulGoodman.fr: Actus sur la série Better Call Saul