Ptit souci avec un SELECT [résolu] - SQL/NoSQL - Programmation
Marsh Posté le 10-04-2009 à 11:03:05
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é
Marsh Posté le 10-04-2009 à 11:09:52
Code :
|
sa change strictement rien :s
j'ai toujours des double de codecom (pas grave pour les commentaire)
Marsh Posté le 10-04-2009 à 11:27:00
quels sont les données que tu veut recuperer ?
Code :
|
Marsh Posté le 10-04-2009 à 11:33:02
Une solution pour éviter un IN, mais pas compatible avec tous les SGBD
Code :
|
Optionnellement, tu peux même ajouter, juste à la suite (ça dépend te ta base en fait)
Code :
|
NB: je n'ai pas testé !!!
Marsh Posté le 10-04-2009 à 11:48:16
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 :
|
Et si tu as besoin de l'id et/ou du commentaire, il faudrait donner une règle pour le(s) choisir...
Marsh Posté le 10-04-2009 à 12:02:51
hyptnos a écrit :
|
quel sgbd? ça ne pose aucun problème avec oracle.
Marsh Posté le 10-04-2009 à 12:24:19
infoman64 a écrit : quels sont les données que tu veut recuperer ?
|
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é).
Marsh Posté le 10-04-2009 à 12:28:12
hyptnos a écrit : pour 2 evt_id donné (et différent) je peux avoir des evt_codecom identique (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)
Marsh Posté le 10-04-2009 à 12:32:50
skeye a écrit : un truc de ce genre ferait l'affaire dans ce cas non? select max(evt_id), 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 :
|
Citation :
|
car ma méthode PHP de la classe qui va bien récupère les ID et non pas les code COM
Marsh Posté le 10-04-2009 à 12:41:23
hyptnos 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.
hyptnos 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??
Marsh Posté le 10-04-2009 à 12:48:04
skeye a écrit : |
skeye 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 ^^
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
Marsh Posté le 10-04-2009 à 12:53:08
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
Marsh Posté le 10-04-2009 à 12:53:54
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
Marsh Posté le 10-04-2009 à 12:56:13
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
Marsh Posté le 10-04-2009 à 13:03:55
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
Marsh Posté le 10-04-2009 à 13:10:58
hyptnos a écrit : oui mais non lol j'ai besoin du count avant l'exécution de la requete |
hein?
Tu veux compter des choses dans la base AVANT de faire une requête?
Marsh Posté le 10-04-2009 à 13:15:07
skeye a écrit : |
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
Marsh Posté le 10-04-2009 à 10:51:54
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 édité par hyptnos le 10-04-2009 à 13:04:15