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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu] Ptit souci avec un SELECT

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Ptit souci avec un SELECT

n°1871908
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 10:51:54  profilanswer
 

Bonjour voila un petit souci
j'ai dans mon code une requete toute bete avec une condition WHERE
 
ou j'ai ID / ID_VILLE / commentaire
 
j'ai fait un SELECT * (mais le champs important c'est ID car je fais instanciation de class via une collection d'iD récupérer par cette requete
 
je peux avoir des resultat du genre
 
1   005    blabla
2   028    blabla
3   003    blbala
4   003    blablabl
5   056    blabla
6   028    blabla
 
donc comme vous pouvez le voir j'ai des double de ID_VILLE et j'aimerai les virer du fait avoir un resultat du genre
 
 
1   005    blabla
2   028    blabla
3   003    blbala
5   056    blabla
 
Le distinct ne fonctionne pas vu que j'ai au moin deux champs  
Une solution ?
 
merci d'avance

Message cité 1 fois
Message édité par hyptnos le 10-04-2009 à 13:04:15
mood
Publicité
Posté le 10-04-2009 à 10:51:54  profilanswer
 

n°1871923
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 10-04-2009 à 11:03:05  profilanswer
 

select * from table where id in (select disctint id from tatable)
un peu barbare mais marchera
 
mais par contre il gardera le commentaire que tu premier séléctionné

n°1871928
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 11:09:52  profilanswer
 

Code :
  1. SELECT * FROM evenements WHERE evt_soiree_di='6' AND evt_codecom in (SELECT DISTINCT evt_codecom FROM evenements) AND evt_statut=0 ORDER BY evt_codecom ASC
 

sa change strictement rien :s

 

j'ai toujours des double de codecom (pas grave pour les commentaire)


Message édité par hyptnos le 10-04-2009 à 11:10:03
n°1871936
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 10-04-2009 à 11:27:00  profilanswer
 

quels sont les données que tu veut recuperer ?

Code :
  1. SELECT * FROM evenements WHERE  evt_codecom in (SELECT DISTINCT evt_codecom FROM evenements where evt_soiree_di='6' AND evt_statut=0 )  ORDER BY evt_codecom ASC

Message cité 1 fois
Message édité par infoman64 le 10-04-2009 à 11:27:11
n°1871937
kao98
...
Posté le 10-04-2009 à 11:33:02  profilanswer
 

Une solution pour éviter un IN, mais pas compatible avec tous les SGBD

Code :
  1. SELECT t1.id, t1.id_ville, t2.comment
  2. FROM (SELECT DISTINCT ville.id, ville.id_ville FROM ville) t1 INNER JOIN ville t2 ON t1.id = t2.id


Optionnellement, tu peux même ajouter, juste à la suite (ça dépend te ta base en fait)

Code :
  1. AND t1.id_ville = t2.id_ville


 
NB: je n'ai pas testé !!!


Message édité par kao98 le 10-04-2009 à 11:33:57

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1871939
macgawel
Posté le 10-04-2009 à 11:48:16  profilanswer
 

Tu veux garder quel "commentaire", quel ID ?
J'ai du mal à voir l'intérêt de la requête - au niveau logique fonctionnelle. Si tu pouvais l'expliquer ?
 
Parce que vu ce que tu fais, a priori ça veut dire que tu t'en fous de l'ID et du Commentaire. Donc, pas besoin de les inclure dans le SELECT.

Code :
  1. SELECT DISTINCT(ville.id_ville) FROM ville;

Et si tu as besoin de l'id et/ou du commentaire, il faudrait donner une règle pour le(s) choisir...

n°1871947
skeye
Posté le 10-04-2009 à 12:02:51  profilanswer
 

hyptnos a écrit :


Le distinct ne fonctionne pas vu que j'ai au moin deux champs

 

quel sgbd? ça ne pose aucun problème avec oracle.[:doc petrus]


Message édité par skeye le 10-04-2009 à 12:02:56

---------------
Can't buy what I want because it's free -
n°1871949
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 12:24:19  profilanswer
 

infoman64 a écrit :

quels sont les données que tu veut recuperer ?

Code :
  1. SELECT * FROM evenements WHERE  evt_codecom in (SELECT DISTINCT evt_codecom FROM evenements where evt_soiree_di='6' AND evt_statut=0 )  ORDER BY evt_codecom ASC



 
Idem je recupere la meme chose
je suis sous Mysql 5
 
ce que je souhaite c'est evt_id seulement (le reste je le recupère bien plus tard)
mais
pour 2 evt_id donné (et différent) je peux avoir des evt_codecom identique
or la un seul evt_id me suffirait
 
(je précise que je n'ai qu'une seule table pour les informations cité).

n°1871950
skeye
Posté le 10-04-2009 à 12:28:12  profilanswer
 

hyptnos a écrit :

 

pour 2 evt_id donné (et différent) je peux avoir des evt_codecom identique
or la un seul evt_id me suffirait

 

(je précise que je n'ai qu'une seule table pour les informations cité).

 

un truc de ce genre ferait l'affaire dans ce cas non?

 

select max(evt_id), evt_codecom
from evenements
group by evt_codecom

 

(mais je comprends pas à quoi te sert l'evt_id, dans ce cas, et pourquoi tu fais pas tout simplement un select distinct evt_codecom from evenements)

 

Message cité 1 fois
Message édité par skeye le 10-04-2009 à 12:29:57

---------------
Can't buy what I want because it's free -
n°1871953
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 12:32:50  profilanswer
 

skeye a écrit :

 

un truc de ce genre ferait l'affaire dans ce cas non?

 

select max(evt_id), evt_codecom
from evenements
group by evt_codecom

  



Heu sa va pas empecher les doublon si ?
sinon il me fout une erreur avec ce que tu me dis d'essayer

Citation :


Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

 
Citation :


(mais je comprends pas à quoi te sert l'evt_id, dans ce cas, et pourquoi tu fais pas tout simplement un select distinct evt_codecom from evenements)

 

car ma méthode PHP de la classe qui va bien récupère les ID et non pas les code COM

Message cité 1 fois
Message édité par hyptnos le 10-04-2009 à 12:34:00
mood
Publicité
Posté le 10-04-2009 à 12:32:50  profilanswer
 

n°1871958
skeye
Posté le 10-04-2009 à 12:41:23  profilanswer
 

hyptnos a écrit :


Heu sa va pas empecher les doublon si ?
sinon il me fout une erreur avec ce que tu me dis d'essayer

Citation :


Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

 


 

Si si ça doit empêcher les doublons...
euh montre ce que tu as exécuté, parce-que je t'en avais mis une, de clause group by.[:joce]

hyptnos a écrit :


car ma méthode PHP de la classe qui va bien récupère les ID et non pas les code COM


ok, mais comment tu choisis entre 2 evt_id qui ont le même code com? Ma requête plus haut prend arbitrairement celui dont l'id est le plus grand, mais tu dois bien avoir un critère quelconque??

Message cité 1 fois
Message édité par skeye le 10-04-2009 à 12:42:10

---------------
Can't buy what I want because it's free -
n°1871959
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 12:48:04  profilanswer
 

skeye a écrit :


 
Si si ça doit empêcher les doublons...
euh montre ce que tu as exécuté, parce-que je t'en avais mis une, de clause group by.[:joce]


 

skeye a écrit :


ok, mais comment tu choisis entre 2 evt_id qui ont le même code com? Ma requête plus haut prend arbitrairement celui dont l'id est le plus grand, mais tu dois bien avoir un critère quelconque??


 
Non en fait petit souci d'analyse au moment du developpement ^^ et j'ai pas envie de me retaper tous le dev de la page ^^
en fait c'est le codecom pour le bien de l'application qui m'importe mais dans mon cas le code com est récupérer ensuite grace a l'id de l'evenement  
c'est en gros une déviation au probleme pour gagner du temps
actuelement tout fonctionne sauf que j'ai des doublons ^^
autant pour mois j'ai zapper le group by
je teste et je redis

n°1871960
macgawel
Posté le 10-04-2009 à 12:53:08  profilanswer
 

hyptnos a écrit :

Non en fait petit souci d'analyse au moment du developpement ^^ et j'ai pas envie de me retaper tous le dev de la page ^^

Le problème, c'est que le peu de temps que tu vas gagner maintenant, tu vas le reperdre derrière - par exemple en essayant de bidouiller des requêtes  :D

n°1871961
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 12:53:54  profilanswer
 

MERCI sa fonctionne
 
bon par contre y t'il moyen d'inclure un SELECT COUNT sur le meme genre de requete car evidement le select count(max(evt_id))...... sa fonctionne pas

n°1871962
skeye
Posté le 10-04-2009 à 12:56:13  profilanswer
 

hyptnos a écrit :

bon par contre y t'il moyen d'inclure un SELECT COUNT sur le meme genre de requete car evidement le select count(max(evt_id))...... sa fonctionne pas


 
select  evt_codecom, max(evt_id), count(evt_id)
from evenements
group by evt_codecom


---------------
Can't buy what I want because it's free -
n°1871968
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 13:03:55  profilanswer
 

oui mais non lol j'ai besoin du count avant l'exécution de la requete
mais c'est pas grave j'ai contourné le probleme encore une fois  
c'est barbare mais sa fonctionne.
 
Sa m'apprendrai a baclé l'analyse :s
 
en tout cas merci pour les conseils / solution
 
A bientot

n°1871971
skeye
Posté le 10-04-2009 à 13:10:58  profilanswer
 

hyptnos a écrit :

oui mais non lol j'ai besoin du count avant l'exécution de la requete


hein?[:pingouino]
Tu veux compter des choses dans la base AVANT de faire une requête?[:el g]


---------------
Can't buy what I want because it's free -
n°1871974
hyptnos
GT : Gui iom
Posté le 10-04-2009 à 13:15:07  profilanswer
 

skeye a écrit :


hein?[:pingouino]
Tu veux compter des choses dans la base AVANT de faire une requête?[:el g]


 
Oui comment je peux expliqué simplement ^^  
alors en fait c'est un listing que j'affiche a l'écran donc dans un beau tableau bourrer de CSS
et avant le tableau j'ai un TBODY qui dis le nombre de ligne (avant)
ensuite j'ai le resultat de la requete qui est en fait a chaque ligne une instenciation d'une classe
la requete permet la recolte d'id pour effectuer une collection d'objet en fait
et au fure et a mesure de la requete j'incrémente un compteur qui me donne encore une fois le nombre de ligne
 
de ce fait j'ai l'info en haut et en bas (pourquoI?) et bien je peux avoir 800 ligne dans mon tableau (qui est triable et filtrable en passant) donc il m'a ete demander d'avoir le nombre d'information avant et apres
donc ce que je faisait avant etait un simple select count puis affichage pour mon select tel que demander
 
Mais j'ai resolu le soucis


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu] Ptit souci avec un SELECT

 

Sujets relatifs
[Resolu]Firefox Fonction Javascript replace fonctionne pasproblèmes de background et de div [résolu]
[RESOLU][ORACLE] "Personnalisation" d'un ORDERplacer un uint>255 dans un buffer [résolu]
[Résolu] Ajax, XMLhttpRequest, interrogation multiples et simultannéesplacement de texte[résolu]
Problème d'occurence variable [RESOLU][Résolu] Edit mono-ligne avec retour à la ligne ?
[Résolu] Comparatif IBM Rational Application Developer / EclipseRémunérer son site web
Plus de sujets relatifs à : [résolu] Ptit souci avec un SELECT


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