|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscription : avril 2009 Messages : 29 ![]() |
bonjour tout le monde
j'ai une table qui n'a qu'une seule colonne dont les elements sont: 5000 2500 -5000 6000 30000 -6000 3200 -20000 -10000 4000 je voudrais alors faire une requete qui me permetrait d'avoir: 1-seulement les nombres qui n'ont pas d'opposé. pour ce cas precis on a: 2500 3200 4000 2-pour le nombre 30000 par exemple, les nombres -20000 et -10000 qui se suivent donne une somme egale à -30000 qui est l'opposé du nombre 30000. Pour ces cas pareille, je veux pas que ma requete m'affiche le nombre 30000. je resterai à votre disposition pour plus de precisions Cordialement. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Non de la table ?
Nom de la colonne ? Cette table a t-elle une clef ? Laquelle ? DDL de la table Jeu d'essais sous forme INSERT. Merci A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#3 | ||||
![]() ![]() |
Déjà ça c'est bizarre !
Que représentent ces nombres ? Ils ne peuvent être reliés à rien ! Quel est l'intérêt de cette table ? Citation:
Code :
Citation:
(-10000) + (-17000) + (-3000) = -30000
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Ce n'est pas parce que dans l'outils que tu utilises pour visualiser ta table ces lignes semblent apparaitre toujours dans cet ordre que c'est acquis. Le seul moyen, c'est ORDER BY. |
|
|
|
00
|
|
|
#5 |
|
Inscription : avril 2009 Messages : 29 ![]() |
mon probleme est un pe specifique.
les donnees que je vous ai montrer sont les seules dans ma table ESSAI qui n'a qu'une seule colonne. et ces donnees sont: 5000 2500 -5000 6000 30000 -6000 3200 -20000 -10000 4000 et je voudrais alors savoir si c'est possible de realiser la requete que je veux à savoir: obtenir seulement les nombres qui n'ont pas d'opposé. |
|
|
00
|
|
|
#6 |
![]() ![]() |
Avez-vous testé la solution de Cinephil ?
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Concernant le point 2 est ce que -10000 et -20000 doivent aussi être exclu du résultat ?
Par ailleurs en ligne 2 et 3 : 2500 + (-5000) = -2500 donc potentiellement 2500 ne devrait pas apparaître dans le résultat... Il nous faudrait plus d'éléments pour comprendre la logique et nous donner le résultat exact souhaité. |
|
|
00
|
|
|
#8 |
|
Inscription : avril 2009 Messages : 29 ![]() |
la solution de Cinephil porte sur deux tables t1 et t2 ; alors moi je n'ai qu'une seule table.
Pour Skuatmad, je voudrais te dire que tu as parfaitement raison; 2500 ne devrait pa apparaitre dans le resultat de ma requete; je dois seulement avoir 3200 et 4000. Je precise encore: je n'ai qu'une seule table ESSAI et une seule colonne qui contient des nombres cités ci haut. |
|
|
00
|
|
|
#9 |
![]() ![]() |
Donc vous n'avez ni essayé ni même lu la requête.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#10 | ||||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
La solution de cinephil n'utilise pas 2 tables mais 2 fois la même table avec un alias.
Concernant la problématique des sommes je prends ça comme un "exercice de style" en SQL même si je n'ai rien compris au pourquoi de cette table et au besoin de la requête. Il FAUT donc que tu rajoutes une colonne ordre pour déterminer l'ordre des lignes, comme ci-dessous (vu le nombre de ligne ça n'est pas très dur de le faire à la main si nécessaire) : Code :
Comme pour la requête de cinephil je n'utilise que ta table essai mais je l'appelle de nombreuses fois d'où les alias. Il y a surement plus astucieux, j'y suis allé un peu au chausse pied, et ça nécessite de faire des tests avec d'autres valeurs mais voilà une piste en tout cas : Code :
[EDIT]Au fait pour pouvoir insérer supprimé des nouvelles lignes dans essai ma solution à base de ordre+1 -1 n'est vraiment pas suffisante donc plutôt cette requête : Code :
|
||||||
|
|
10
|
|
|
#11 |
|
Inscription : avril 2009 Messages : 29 ![]() |
Merci skuatamad pour ta solution qui marche parfaitement avec firebird. mais quand j'essaie d'executer cette meme requete avec le sybase, j'ai le message suivant " [sybase][ODBC Driver][SQL anywhere]syntax error near 'NOT' on line 1
j'arrive pas a m'en sortir. Alors si tu peux bien me donner encore un coup de main. cordialement |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Je ne connais pas du tout Sybase mais la requête n'utilise aucune syntaxe spécifique, peut être est ce un problème d'alias, essaie peut être en mettant AS avant chaque alias de sous-requête.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com