[RESOLU] Probleme de d'extraction avec SELECT

Probleme de d'extraction avec SELECT [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 27-09-2006 à 11:28:52    

bonjour,
 
j'ai deux champs dans un table, qui contiennent des ID users, du genre
 
X | Y
----------
1 | 650
650 | 1
1 | 113
113 | 1
112 | 1
 
quelle requete je peux utiliser pour ne récupérer comme valeur que 650, 113, 112 , sans doublon, et sans le 1 (mon id user à moi) ??
 
J'avour que je rame, là...


Message édité par imcdb le 28-09-2006 à 08:06:44

---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Marsh Posté le 27-09-2006 à 11:28:52   

Reply

Marsh Posté le 27-09-2006 à 11:31:02    

si il y a toujours un des deux qui vaut 1 , tu peux faire :
SELECT DISTINCT X*Y as idUser FROM table

Message cité 2 fois
Message édité par flo850 le 27-09-2006 à 11:31:07
Reply

Marsh Posté le 27-09-2006 à 11:35:52    

je pense que sa table, c'est une table de "lien" entre deux entités. donc on va avoir tous les couples possibles, ça me semble pas trop évident ton système, ou incomplet en tout cas.
 
à la limite, ça ça devrait marcher :
(avec ou sans distinct)

Code :
  1. select x*y / $val as iduser
  2. from table
  3. where (x = $val or y = $val)


 
sinon, en solution plus propre :
 

Code :
  1. select x
  2. from table
  3. where y = $val
  4. union all
  5. select y
  6. from table
  7. where x = $val


 
virer le "all" si on veut des valeurs distinctes.
 
le union est en général assez lent. cependant, dans ce cas précis (vu qu'on a un distinct dans la première de départ ou alors qu'on peut mettre all dans la seconde), cela devrait être plus rapide avec le union, et surtout plus clair. à vérifier.

Reply

Marsh Posté le 27-09-2006 à 11:40:33    

flo850 a écrit :

si il y a toujours un des deux qui vaut 1 , tu peux faire :
SELECT DISTINCT X*Y as idUser FROM table


ton idUser correspond à quoi ?


---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Marsh Posté le 27-09-2006 à 11:44:34    

flo850 a écrit :

si il y a toujours un des deux qui vaut 1 , tu peux faire :
SELECT DISTINCT X*Y as idUser FROM table


ca marche !!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
 
 :bounce:  :bounce:  :bounce:  
merci a toi... je mets en resolu


---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Marsh Posté le 27-09-2006 à 23:25:23    

ben non, en fait ca marche pas.
en fait j'ai l'id joueur 1 mais je voudrais, si j'etais le joueur 650, récupérer les valeurs 1,112, et 113 (uniques)
 
comment faire dans ce cas-là ??


---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Marsh Posté le 28-09-2006 à 01:21:22    

Code :
  1. SELECT DISTINCT X*Y/(monid) as idUser FROM table where X=(monid) or Y=(monid)


Ca me semblait couler tellement de source que je n'ai pas osé rajouter ce détail tout à l'heure quand flo avait posté sa réponse.

Reply

Marsh Posté le 28-09-2006 à 08:01:34    

en effet, c'est mieux (maintenant que j'ai compris le pendant de cette méthode, je trouve ça classieux)
par contre il me sort un résultat INT, de la forme
monid.0000 Ex: si mon id vaut 1 il me sort 1.0000
 
comment obtenir juste un INT comme résultat de la requête ?
 
EDIT : j'ai trouvé : faut faire
 
SELECT DISTINCT round(X*Y/ monid)) as idUser FROM table where X=monid or Y=monid
 
et la marche dans tous les cas de figure...
 
Merci à tous de votre aide


Message édité par imcdb le 28-09-2006 à 08:06:23

---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Marsh Posté le 28-09-2006 à 10:07:08    

c'est ce que j'ai dit depuis le début m'enfin bon.. :spamafote:
 
(sâchant que ma deuxième solution était moins bidouille et ne posait aucun problème)

Message cité 1 fois
Message édité par MagicBuzz le 28-09-2006 à 10:07:31
Reply

Marsh Posté le 28-09-2006 à 10:17:43    

lol, à une heure du matin, je n'ai pas pris la peine de relire les autres réponse. (ok, grilled de heu ... 12heures : record à battre. :lol:)

Reply

Marsh Posté le 28-09-2006 à 10:17:43   

Reply

Marsh Posté le 30-09-2006 à 22:55:46    

MagicBuzz a écrit :

c'est ce que j'ai dit depuis le début m'enfin bon.. :spamafote:
 
(sâchant que ma deuxième solution était moins bidouille et ne posait aucun problème)


ben oui. mais m'a fallu du tps pour comprendre que c'était la meme chose...


---------------
Réagissez et commentez mes dessins sur snut.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed