Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2917 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Soucis avec une requete SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Soucis avec une requete SQL

n°813954
nycius
Ich liebe dich !
Posté le 03-08-2004 à 17:42:31  profilanswer
 

Salut
 
j'ai un soucis sur une requete SQL
 
Je vous explique : j'ai une table qui contient 150 enregistrement
dans chaque table jai un ID avec une valeur correspondante
seulement quelques fois des enregistrement ont la meme valeur mais pas le meme ID
 
 
du genre :
 
1 Blop
2 Glop
3 Blop
 
je fais cette requete la qui me permet dafficher les 30 derniers enregistrements  
 

Code :
  1. SELECT id, date, nom, sujet_msg FROM TABLE WHERE v=1 ORDER BY date DESC LIMIT 0,30


 
seulement soucis : dans mon resultat jaimerai regroupé les resultats
parce que si un enregistrement avec le meme nom a été enregistré il ressort plusieurs fois dans mon resultat
 
comment je peux dire a ma requete quelle regroupe les Blop ou les Glop au lieu de me les lister

mood
Publicité
Posté le 03-08-2004 à 17:42:31  profilanswer
 

n°813956
la viper
Posté le 03-08-2004 à 17:43:39  profilanswer
 

GROUP BY  :)

n°813959
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-08-2004 à 17:44:24  profilanswer
 

si tu sélectionnes l'id, tu pourras pas faire de regroupement, vu que l'id est unique


---------------
J'ai un string dans l'array (Paris Hilton)
n°813968
nycius
Ich liebe dich !
Posté le 03-08-2004 à 17:48:17  profilanswer
 

en fait jaffiche le sujet du message

n°814073
Dawa
www.shootmeagain.com
Posté le 03-08-2004 à 19:22:45  profilanswer
 

mais tu veux grouper par quoi? par titre de topic?


---------------
SHOOT ME AGAIN WEBZINE
n°814457
nycius
Ich liebe dich !
Posté le 04-08-2004 à 09:26:00  profilanswer
 

oui voila

n°814476
Dawa
www.shootmeagain.com
Posté le 04-08-2004 à 09:46:09  profilanswer
 

faut pas sélectionner l'id dans ta requete alorz :o


---------------
SHOOT ME AGAIN WEBZINE
n°814509
nycius
Ich liebe dich !
Posté le 04-08-2004 à 10:05:14  profilanswer
 

Je suis obligé car sinon comment recuperer l'id ?

n°814510
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-08-2004 à 10:05:54  profilanswer
 

nycius a écrit :

Je suis obligé car sinon comment recuperer l'id ?


et pourquoi veux tu récupérer l'id ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°814512
nycius
Ich liebe dich !
Posté le 04-08-2004 à 10:07:51  profilanswer
 

pour ensuite le passer dans le lien pour quil aille chercher le basard

mood
Publicité
Posté le 04-08-2004 à 10:07:51  profilanswer
 

n°814516
Rainbow_Ef​reet
Posté le 04-08-2004 à 10:11:56  profilanswer
 

Dans ce cas l'ID sera celui du topic Blob(1) ou BLop(3) il y a un soucis dans ta conception non ?

n°814517
Dawa
www.shootmeagain.com
Posté le 04-08-2004 à 10:12:24  profilanswer
 

comment veux-tu qu'il distingue l'id si tu groupes plusieurs sujets d'id différentes? [:le kneu]


Message édité par Dawa le 04-08-2004 à 10:12:55

---------------
SHOOT ME AGAIN WEBZINE
n°814520
nycius
Ich liebe dich !
Posté le 04-08-2004 à 10:14:19  profilanswer
 

oui ya un enorme soucis de conception
je reprend une merde deja existante et je dois modifier les trucs sans tout casser , super
 
je vois pas comment faire cest vraiment penible

n°814521
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-08-2004 à 10:16:04  profilanswer
 

nycius a écrit :

pour ensuite le passer dans le lien pour quil aille chercher le basard

faut repenser ta manière de faire alors, parce que tu ne pourras rien regrouper si tu sélectionnes aussi l'id
 
edit: [:benou_grilled]


Message édité par Harkonnen le 04-08-2004 à 10:16:31

---------------
J'ai un string dans l'array (Paris Hilton)
n°814523
Dawa
www.shootmeagain.com
Posté le 04-08-2004 à 10:17:43  profilanswer
 

nycius a écrit :

oui ya un enorme soucis de conception
je reprend une merde deja existante et je dois modifier les trucs sans tout casser , super
je vois pas comment faire cest vraiment penible


 
 
bah c'est pas dur, si tu groupes c'est que t'as pas besoin de distinguer l'id donc si tu veux vraiment l'id tu dégroupes et t'affiches l'id :o


---------------
SHOOT ME AGAIN WEBZINE
n°814524
Rainbow_Ef​reet
Posté le 04-08-2004 à 10:19:02  profilanswer
 

Je ne connais pas le contexte mais s'il existe deux occurence dans ta table, bien qu'ayant le meme nom c'est qu'elles sont différentes ...Donc normalement les deux doivent être selctionnable. Si aucun doublons sur le nom ne devrait être present, une verification a l'insertion serait bénéfique, ainsi qu'une propriété unique sur le champ nom ?
qu'en penses tu ?

n°814542
nycius
Ich liebe dich !
Posté le 04-08-2004 à 10:40:28  profilanswer
 

Justement quelques fois le nom est egale mais seul l'id differe

n°814576
Rainbow_Ef​reet
Posté le 04-08-2004 à 11:17:39  profilanswer
 

si l'identifiant primaire differe il est dangereux de les assimiler selon le nom et de les gerer selon UN SEUL des identifiant du group ...
Dans le cas d'une gestion darticle le nom est le meme pour tout les articles X mais ils ont un identifiant différent et donc il faut utiliser une quantité par exemple, ne peut tu pas faire pareil ?

n°814621
nycius
Ich liebe dich !
Posté le 04-08-2004 à 11:44:54  profilanswer
 

cest a dire ?
 
en gros moi mon soucis est le suivant
jaffiche 30 informations
si qqun a inserer une info a 12h40 avec le titre "Info 10" et que qqun en insere une a 12h42 avec le meme titre
 
ca maficche :
12h42 - Info 10
12h40 - Info 10
 
alors que moi jaimerai quil me sorte seulement celui de 12h42 sinon ca fait pas mal de doublon et pas propre

n°814691
p lejarre
Posté le 04-08-2004 à 12:41:29  profilanswer
 

> j'ai un soucis sur une requete SQL
 
> SELECT id, date, nom, sujet_msg FROM TABLE WHERE v=1 ORDER BY date  
> DESC LIMIT 0,30  
 
>seulement soucis : dans mon resultat jaimerai regroupé les resultats
>parce que si un enregistrement avec le meme nom a été enregistré il >ressort plusieurs fois dans mon resultat
 
logique !!!! tu demande de lister selon la date au lieu du champ nom il faut plutot faire un classement par nom  
 
donc si le champ (blob glob ...) est le champ nom faut plutot faire ...>suite  
 
 
 
>comment je peux dire à ma requete qu'elle regroupe les Blop ou les >Glop au lieu de me les lister;
 
suite>
 
select id, .... from ... order by nom asc, date desc  
group by nom, date where ... limit 0,30
 
alors pour "pas tout casser" faire une table annexe qui reprends les infos de la table existante. vous y copiez les informations liées au nom, et ensuite vous cherchez les informations liées à l'id et la date dans la table principale.  
 
attention, à chaque requete dans votre table ajoutée faut vérifier qu'aucun lien n'est modifié.  
 
donc select nom, info1_nom, info2_nom from table_order_nom  
 
ensuite select id, date, info1_date, info2_date, .... from table  
where nom = <nom_table_order_nom>
 
attention faut alors que le nom qui sert pour la liaison ne puisse plus être modifié.


Message édité par p lejarre le 04-08-2004 à 12:45:17
n°814709
nycius
Ich liebe dich !
Posté le 04-08-2004 à 13:19:24  profilanswer
 

select id, .... from ... order by nom asc, date desc  
group by nom, date where ... limit 0,30  
 
jai essayer ca mais ca me met une erreur SQL

n°815639
xavro
Posté le 05-08-2004 à 11:10:34  profilanswer
 

si tu as "id,nom,date" dans le "select", il faut que les trois apparaissent dans le "group by"

n°817874
nycius
Ich liebe dich !
Posté le 09-08-2004 à 11:03:55  profilanswer
 

ca ne marche pas non plus ca me met une erreur SQL
le group by fait planter

n°817889
serty2
Posté le 09-08-2004 à 11:11:40  profilanswer
 

je comprends pas, si il ya  deux topics differents(vu ke deux ids differents) avec le meme nom, tu as besoin d'afficher les deux, sinon tu en occulte o moins un non ?
 
Si en revanche ce sont des doublons non necessaires pourquoi ne pas supprimer ces doublons ?

n°817905
Arjuna
Aircraft Ident.: F-MBSD
Posté le 09-08-2004 à 11:22:26  profilanswer
 

select max(id), max(date), max(nom), sujet_msg
from latable
group by sujet_msg
order by max(date)
limit 0, 30
 
Par contre, autant tu n'auras qu'une ligne pour chaque titre de sujet, autant l'auteur associé risque d'être erroné (en effet, il va cherche le plus grand dans l'ordre alphabétique, pas forcément celui correspondant à l'ID retourné) en effet, le max(nom) vient foutre le bordel, et si tu le vires, tu auras tous les doublons saisis par des utilisateurs différents.
 
Dans l'idéal, il faudrait faire une sous-requête, mais MySQL ne supporte ça que dans les versions très récentes (et pas présente chez les principaux hébergeurs) :
 
select t1.id, t1.date, t1.nom, t1.sujet msg
from latable t1
where t1.id in (select max(id) from latable group by sujet_msg)
order by id desc
limit 0, 30
 
Si tu ne peux pas faire la sous-requête, alors t'as pas d'autre choix que d'éxécuter cette sous-requête seule en premier (avec un limit 0, 30 ainsi que le order), puis boucler dessus pour retrouver les autres infos des id d'articles retournés.

n°817917
nycius
Ich liebe dich !
Posté le 09-08-2004 à 11:32:53  profilanswer
 

serty2 a écrit :

je comprends pas, si il ya  deux topics differents(vu ke deux ids differents) avec le meme nom, tu as besoin d'afficher les deux, sinon tu en occulte o moins un non ?
 
Si en revanche ce sont des doublons non necessaires pourquoi ne pas supprimer ces doublons ?


 
en fait quand je clic sur le 1er jai une liste avec tout ceux en rapport avec l'id
 
en fait ca donnera ca :
- 1 ->> blop (10h15)
  -101 --> gajshq (10h19)
  -102 --> dijdfg (10h40)
- 2 ->> glop (09h05)
  -201 --> jh (10h22)
 
en fait jaimerai que ca maffiche ca :
- 1 ->> blop (10h40)      
- 2 ->> glop (10h22)
 

n°817944
nycius
Ich liebe dich !
Posté le 09-08-2004 à 11:57:21  profilanswer
 

voila ce que jaurai besoin de faire et qui marcherait si la requete passait
qqun sait si c possible de faire ca ? :
select id, .... from ... group by substr("id", 0, 2) limit 0,30  
 
en gros lui dire qui group selon l'id cropé de ses 2 derniers chiffres

n°817982
serty2
Posté le 09-08-2004 à 13:26:05  profilanswer
 

il me semble que le group by ne fonctionne qu'avec des fonctions de groupes, c'est a dire si tu select le MAX, MIN ou SUM(...etc), sinon la clause group by n'a aucun effet (je peux aussi me tromper mais il me semble que c'est comme ca)

n°818000
Arjuna
Aircraft Ident.: F-MBSD
Posté le 09-08-2004 à 13:45:53  profilanswer
 

serty2 a écrit :

il me semble que le group by ne fonctionne qu'avec des fonctions de groupes, c'est a dire si tu select le MAX, MIN ou SUM(...etc), sinon la clause group by n'a aucun effet (je peux aussi me tromper mais il me semble que c'est comme ca)


En effet, sinon elle se comporte comme un order by (sâchant qu'en plus elle ne peut utiliser que des champs retournés, alors que le order by peut utiliser n'importe quel champ de n'importe quelle table participant à la requête)

n°818111
serty2
Posté le 09-08-2004 à 14:58:48  profilanswer
 

Arjuna a écrit :

En effet, sinon elle se comporte comme un order by (sâchant qu'en plus elle ne peut utiliser que des champs retournés, alors que le order by peut utiliser n'importe quel champ de n'importe quelle table participant à la requête)


 
Merci pour cet eclaircissement :p

n°818131
nycius
Ich liebe dich !
Posté le 09-08-2004 à 15:12:16  profilanswer
 

zut :(

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Soucis avec une requete SQL

 

Sujets relatifs
Requête d'analyse croisée en Access: "générer" des dates[PHP] Cherche forum simple compatible MS SQL Server
Transformer une requete SQL à 1 seule colonne en un tableau.[ACCESS]Requete COUNT et valeur null
[PHP/SQL] - delete [résolu][Java][PHP][SQL] Debutant: Par quoi commencer??
[VBA Excel] Petit soucis de déclaration dans une requetteafficher le résultat d'une requête
Processus sql Sever sous vb.net 
Plus de sujets relatifs à : Soucis avec une requete SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR