begin process at 2012 05 27 05:21:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Autre

 > 

Débutant(s)

 > 

select avancé ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

select avancé ...

vendredi 18 mars 2011 à 18:22:14 | select avancé ...

kalif

Bonjour a tous,

Voila je ne travaille pas souvent sous SQL mais voila que je dois créer une commande qui est censée fonctionner sous PHP/MYSQL...

Voici ma table
ID/NOM/PRENOM/TEL

1/WALTER/DANIEL/012345
2/GERDI/PHILIPPE/1235674
3/STON/MICHEL/5550202
4/ALPI/ALBERT/5550202
5/STENS/FRANC/5550202
6/DUFRAN/PAUL/65442


Je voudrais sélectionner toute les personnes, mais exclure les personne qui ont plus de deux fois le même numéro de téléphone. Dans l'exemple ci dessus, il devrait me renvoyer tout sauf la ligne 5....

Merci de votre aide
vendredi 18 mars 2011 à 19:33:21 | Re : select avancé ...

nhervagault

Administrateur CodeS-SourceS
Salut,

Code :
select   *
from client
where Client.ID
not in
(
select  max(id) as ID from client
group by client.tel
having COUNT(tel) >=2
)



En sql server j'ai ca?
Plusieurs problemes avec la requete, il y a peut etre mieux.

Premier probleme
le resultat de la sous requete est (ou peut etre indeterministe), il faut positionner un order by pour le corriger dans la sous requete.

Car sql server travaille sur des ensembles.

Utilises des indexes pour ameliorer les performances, au passage.
Evites le * dans le select;-)

La traduction en mysql ne doit pas poser de problemes.
vendredi 18 mars 2011 à 21:05:31 | Re : select avancé ...

kalif

Salut, je viens de faire un test ca fonctionne bien mais malheureusement je ne comprend pas les commandes que tu as utiliser... Peux tu expliquer en quelques mots?

vendredi 18 mars 2011 à 21:19:27 | Re : select avancé ...

nhervagault

Administrateur CodeS-SourceS


Code :
select  max(id) as ID from client
group by client.tel
having COUNT(tel) >=2



recharche les clients dont le nombre de numeros de tel est > 2

donc on groupe par les numeros de telephones
et le having est l'equivalement du where sur un regroupement

max(id) --> permet d'avoir le resultat de l'agregation par le tel.

Code :
select   *
from client


selectionne tous les clients

dernieres operations on enleve le resultat de la sous requete (cf supra)
avec l'operation not in


samedi 19 mars 2011 à 10:13:29 | Re : select avancé ...

kalif

merci bcp, je viens de remarquer que dans mon exemple il enlève la ligne 5, or j'aimerai qu'il supprime plutot la ligne 3 (donc en quelque sorte, par ordre d'insertion... le plus ancien doit etre supprimer)

Peux tu m'aiguiller ?
samedi 19 mars 2011 à 11:36:08 | Re : select avancé ...

nhervagault

Administrateur CodeS-SourceS
regardes du coté des orber by dans la seconde requete
c'est ce que j'ai dit dans mon precedent post ;-)
samedi 19 mars 2011 à 15:54:52 | Re : select avancé ...

kalif

heuuu je ne te suis pas trop la ?
samedi 19 mars 2011 à 21:18:12 | Re : select avancé ...

nhervagault

Administrateur CodeS-SourceS
Code :
select   *
from client
where Client.ID
not in
(
select  max(id) as ID from client
group by client.tel
having COUNT(tel) >=2
order by client.tel desc
)


dimanche 20 mars 2011 à 09:55:08 | Re : select avancé ...

kalif

Ca ne fonctionne pas, es ce que ca ne serait pas le "max(id)" qui pose problème ?
dimanche 20 mars 2011 à 10:11:11 | Re : select avancé ...

nhervagault

Administrateur CodeS-SourceS
C'est peut etre un principe par construction des bases relationnelles.
J'ai le meme comportement sous sql server


Avec ce message :

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

1 2

Cette discussion est classée dans : select, avancé


Répondre à ce message

Sujets en rapport avec ce message

Help pour une requete !!! [ par Rouk ] Bonjour,Je developpe une application en vb.net qui a une connection a un serveur SQL.Dans mon application, je remplis un datagrid par une requete, voi Selection de tables [ par Rouk ] Bonjour,je debeloppe en vb.net un datagrid alimente par une base sqlje voudrai faire une selection des tables que j'affiche dans le datagrid.SELECT enlever les accents lors d'un select [ par momotaro ] momotaroBonjour,Je voudrais savoir s'il y a un moyen quand on récupère des données avec un select, d'enlever les accents sur les caractères avant d'ob SELECT sur un serveur SQL distant [ par Datadis ] Bonjour tout le monde,Quelqu'un peut-il m'aider à faire un SELECT sur un serveur SQL distant.Par exemple, j'ai une procédure stockée qui s'exécute sur Faire plusieurs if dans un procedure stockee [ par chris81 ] bonjour,comment puis je faire pour verifier plusiseurs if dans la meme procedure stockee c'est a direif not exist(SELECT Id FROM...) et if not exists( Select sans doublon avec date la plus recente [ par ironnyc ] Bonjour a tous!je cherche a faire une requete Select avec une base MySql sur la table suivante: #Table "historique"+-----+-------------+------------+| Problème de select avec un like [ par vincentstryckmans ] Salut, En Delphi  7, j'utilise les composants InterbaseExpress pour communiquer avec Interbase. Une de mes requêtes est du type : select id, num_rel Select * from uneProcedureStockee [ par lutin2004 ] Bonjour, je voudrais faire une requête du style Select * from uneProcedureStockee where critere = "ccccc" Qui s'apparenterait en fait à un tri des rés TVA sur ma requete [ par spoque ] bonjour à tous,comment faire pour rajouter la TVA (7,6%) sur cette requete?Merci d'avance(select sum(compte) from (SELECT (COUNT (ID)*10) as compte FR select replace [ par yan_j ] bonjour,je cherche a savoir comment faire pour lorsque je passe une requete select sur une table qu'il me retourne 0 lorsque la valeur et M et 1 lorsq


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,009 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales