[SQL] une pitite requete ....

une pitite requete .... [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 26-02-2003 à 09:57:30    

voila, j'ai une table du type
 
n° | truc
---------
1  | A
2  | B
3  | B
2  | A
1  | C
 
 
et je veut recuperer le n° qui comme "truc" 'A' et 'B'.
 
bon ici, je dois recuperer comme n°, 2.

Reply

Marsh Posté le 26-02-2003 à 09:57:30   

Reply

Marsh Posté le 26-02-2003 à 10:12:36    

where est ton ami. RTFM  :whistle:

Reply

Marsh Posté le 26-02-2003 à 10:17:23    

Hermes le Messager a écrit :

where est ton ami. RTFM  :whistle:  


Bin écoute, t'as réussi à décrypter la question, chapeau [:prosterne] Passke moi j'ai rien compris [:joce]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-02-2003 à 10:35:12    

Taiche a écrit :


Bin écoute, t'as réussi à décrypter la question, chapeau [:prosterne] Passke moi j'ai rien compris [:joce]


select * from table where n°=2 :??:


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 26-02-2003 à 10:47:23    

Suri a écrit :


select * from table where n°=2 :??:


c'est l'inverse qu'il veut, mais c'est tout aussi simple  :(

Reply

Marsh Posté le 26-02-2003 à 11:22:03    

gloop a écrit :


c'est l'inverse qu'il veut, mais c'est tout aussi simple  :(  


 
 :??:  mais nan..
 

Citation :

bon ici, je dois recuperer comme n°, 2.


 
sinon c'est clair que c'est pas tres explicite..  :sweat:


---------------
yvele n'est plus.
Reply

Marsh Posté le 26-02-2003 à 11:24:49    

gloop a écrit :


c'est l'inverse qu'il veut, mais c'est tout aussi simple  :(  


 
 
fo tu m'expliques comment tu fais alors ...

Reply

Marsh Posté le 26-02-2003 à 11:27:16    

si j'ai bien compris, il veut récupérer les numéros qui possède les enregistrement A et B

Reply

Marsh Posté le 26-02-2003 à 11:30:22    

Mr yvele a écrit :


sinon c'est clair que c'est pas tres explicite..  :sweat:  


 
je suis désolé si c pas clair. je voudrais récupérer le n° pour lequel l'ensemble des attributs 'truc' est égale à un ensemble de valeur.
 
dans l'exemple, si l'ensemle est ('A', 'B';) je récupère logiquement d'après la table la valeur 2 (attribut n°)
 
bon j'espère que c un peu plus clair

Reply

Marsh Posté le 26-02-2003 à 11:30:39    

Urd-sama a écrit :

si j'ai bien compris, il veut récupérer les numéros qui possède les enregistrement A et B


 
oui, c ca !

Reply

Marsh Posté le 26-02-2003 à 11:30:39   

Reply

Marsh Posté le 26-02-2003 à 11:39:18    

where truc='A' AND truc='B'  :whistle:

Reply

Marsh Posté le 26-02-2003 à 11:56:52    

Hermes le Messager a écrit :

where truc='A' AND truc='B'  :whistle:  


 
 
mais bien sur ! :sarcastic:

Reply

Marsh Posté le 26-02-2003 à 11:57:12    

Hermes le Messager a écrit :

where truc='A' AND truc='B'  :whistle:  


 
 :jap:  :jap:  
Le plus dur c'est pas la requête, c'est de comprendre la question  :whistle:  :whistle:

Reply

Marsh Posté le 26-02-2003 à 12:00:55    

question posée à 9h47.
réponse donée à 11h39...
Moralité, les forums c'est bien, mais tu aurais sûrement eu ta solution plus vite si tu t'étais un minimum creusé la tête !!!!

Reply

Marsh Posté le 26-02-2003 à 12:09:16    

Hermes le Messager a écrit :

where truc='A' AND truc='B'  :whistle:  


 :non:  
truc='A' OR truc='B'
Bon sang de bois, tu vas l'embrouiller !
Allez, soyons aimable aujourd'hui, et découvrons ensemble ( ceci ne s'adresse plus à Hermes, mais à Kurt Haribo ):
where truc in ( 'A','B' ... )
 :ange:


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 26-02-2003 à 12:11:02    

walli a écrit :

question posée à 9h47.
réponse donée à 11h39...
Moralité, les forums c'est bien, mais tu aurais sûrement eu ta solution plus vite si tu t'étais un minimum creusé la tête !!!!
 


 
je sais que j'aurais pu chercher ! mais bon les trucs du genre truc ='a' et truc ='b', tu vois pas quelquechose qui cloche la dedans ?

Reply

Marsh Posté le 26-02-2003 à 12:11:48    

tomlameche a écrit :


 :non:  
truc='A' OR truc='B'
Bon sang de bois, tu vas l'embrouiller !
Allez, soyons aimable aujourd'hui, et découvrons ensemble ( ceci ne s'adresse plus à Hermes, mais à Kurt Haribo ):
where truc in ( 'A','B' ... )
 :ange:  


 
ESt ce que il y a quelq'un qui connaissent un minimum sql ?

Reply

Marsh Posté le 26-02-2003 à 12:11:55    

tomlameche a écrit :


 :non:  
truc='A' OR truc='B'
Bon sang de bois, tu vas l'embrouiller !
Allez, soyons aimable aujourd'hui, et découvrons ensemble ( ceci ne s'adresse plus à Hermes, mais à Kurt Haribo ):
where truc in ( 'A','B' ... )
 :ange:  


 
Non je pense que c'est bien AND, il veut que 'truc' ait comme valeur 'A' et comme autre valeur 'B' pour un même 'n°'

Reply

Marsh Posté le 26-02-2003 à 12:12:50    

arrakis99 a écrit :


 
Non je pense que c'est bien AND, il veut que 'truc' ait comme valeur 'A' et comme autre valeur 'B' pour un même 'n°'  


 
fo m'expliquer comment une instance d'un attribut peut posséder deux valeur ?

Reply

Marsh Posté le 26-02-2003 à 12:18:23    

Kurt Haribo a écrit :


 
ESt ce que il y a quelq'un qui connaissent un minimum sql ?


Aurai tu tendance à prendre les gens pour des nouilles ?


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 26-02-2003 à 12:19:08    

sinon tu peux faire une intersection avec un select qui prenne les n° avec un 'where truc = A' INTERSECT un autre select qui prenne les n° avec un 'where truc = B'
 
Tu n'aura comme résultat que les n° qui respectent les deux conditions.


Message édité par Arrakis99 le 26-02-2003 à 12:21:21
Reply

Marsh Posté le 26-02-2003 à 12:19:22    

Kurt Haribo a écrit :


fo m'expliquer comment une instance d'un attribut peut posséder deux valeur ?


'tain, c'est c'que dit tom, c'est un OR. Teste et pis vala. Ca fait 3 plombes que t'es sur une requête de base ; le jour où t'auras des join, tu vas en chier :sarcastic:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-02-2003 à 12:19:34    

tomlameche a écrit :


Aurai tu tendance à prendre les gens pour des nouilles ?


 
nan, mais si c'est pour répondre truc ='A' AND truc='B' ...

Reply

Marsh Posté le 26-02-2003 à 12:23:53    

Kurt Haribo a écrit :


nan, mais si c'est pour répondre truc ='A' AND truc='B' ...


 [:miracle] Nan mais attends, t'as vu le truc tout con que tu demandes ? Tu t'attendais à quoi, à une requête de 6 lignes ? Ce genre de question, il suffit d'un where et c'est basta. Commence par mater un tutorial SQL, tiens.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-02-2003 à 12:27:22    

arrakis99 a écrit :

sinon tu peux faire une intersection avec un select qui prenne les n° avec un 'where truc = A' INTERSECT un autre select qui prenne les n° avec un 'where truc = B'
 
Tu n'aura comme résultat que les n° qui respectent les deux conditions.


 
Merci, c'etait ca que je cherchai ! :jap:

Reply

Marsh Posté le 26-02-2003 à 12:28:57    

Taiche a écrit :


'tain, c'est c'que dit tom, c'est un OR. Teste et pis vala. Ca fait 3 plombes que t'es sur une requête de base ; le jour où t'auras des join, tu vas en chier :sarcastic:  


 
avec un OR comment veux tu que ca marche ? il va me sortir tous les n° pour lequel truc aurait comme valeur B ou A !
 
 

Reply

Marsh Posté le 26-02-2003 à 12:31:52    

Kurt Haribo a écrit :


avec un OR comment veux tu que ca marche ? il va me sortir tous les n° pour lequel truc aurait comme valeur B ou A !


Bin c'est pas c'que tu veux ? :??:  

Citation :

je voudrais récupérer le n° pour lequel l'ensemble des attributs 'truc' est égale à un ensemble de valeur.


Ch'ais pas hein, moi c'est c'que j'comprends...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-02-2003 à 12:43:15    

Taiche a écrit :


Bin c'est pas c'que tu veux ? :??:  

Citation :

je voudrais récupérer le n° pour lequel l'ensemble des attributs 'truc' est égale à un ensemble de valeur.


Ch'ais pas hein, moi c'est c'que j'comprends...


 
ben non, mais c pas grave avec INTERSECT ca devrai le faire !
 
désolé, de m'être énervé, je croyais que vous me foutiez de ma tronche avec truc='B' or/and truc='A'

Reply

Marsh Posté le 26-02-2003 à 12:53:30    

Kurt Haribo a écrit :


 
ben non, mais c pas grave avec INTERSECT ca devrai le faire !
 
désolé, de m'être énervé, je croyais que vous me foutiez de ma tronche avec truc='B' or/and truc='A'


tu t'attendais à quoi avec ta question de base ?
en plus faut comprendre ta question et tu vas gueuler sur ceux qui ont accepté de t'aider. faut pas non plus t'attendre à ce qu'on soit tous sympa avec toi apres ce genre de conneries  :pfff:

Reply

Marsh Posté le 26-02-2003 à 12:56:48    

oh arretez de vous chamailler  :o  
kurt a mal posé sa question mais vous pourriez éviter de se fouttre de sa tronche non plus

Reply

Marsh Posté le 26-02-2003 à 12:58:43    

gloop a écrit :


tu t'attendais à quoi avec ta question de base ?
en plus faut comprendre ta question et tu vas gueuler sur ceux qui ont accepté de t'aider. faut pas non plus t'attendre à ce qu'on soit tous sympa avec toi apres ce genre de conneries  :pfff:  


C'est bon, il s'est excusé :)
Kurt : j'vois toujours pas ce que tu veux faire mais est-ce que c'est pas un truc du genre "je recherche tous les numéros qui ont pour truc A puis parmi ces numéros je cherche ceux qui ont aussi pour truc B" ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-02-2003 à 13:04:40    

Taiche a écrit :


C'est bon, il s'est excusé :)
Kurt : j'vois toujours pas ce que tu veux faire mais est-ce que c'est pas un truc du genre "je recherche tous les numéros qui ont pour truc A puis parmi ces numéros je cherche ceux qui ont aussi pour truc B" ?


 
oui c ca ! et pis comme sql c loin pour moua, je savais plus si il existait une instruction particulière, j'avais pas envie de m'amuser avec des teta-jointure.

Reply

Marsh Posté le 26-02-2003 à 13:05:52    

gloop a écrit :


tu t'attendais à quoi avec ta question de base ?
en plus faut comprendre ta question et tu vas gueuler sur ceux qui ont accepté de t'aider. faut pas non plus t'attendre à ce qu'on soit tous sympa avec toi apres ce genre de conneries  :pfff:  


 
c bon, je me suis excusé !

Reply

Marsh Posté le 26-02-2003 à 13:19:27    

Kurt Haribo a écrit :


 
oui c ca ! et pis comme sql c loin pour moua, je savais plus si il existait une instruction particulière, j'avais pas envie de m'amuser avec des teta-jointure.


Je n'avais pas compris ta question.
tu as une autre solution à mon avis plus simple ( parceque je suis pas sûr du tout que INTERSECT fait partie du standard SQL, et donc ne doit pas être supporté par tous les SGBD ):
select distinct numero
from ma_table t1, ma_table t2
where t1.truc = 'A' and t2.truc = 'B' and
 t1.numero = t2.numero


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 26-02-2003 à 13:31:12    

tomlameche a écrit :


Je n'avais pas compris ta question.
tu as une autre solution à mon avis plus simple ( parceque je suis pas sûr du tout que INTERSECT fait partie du standard SQL, et donc ne doit pas être supporté par tous les SGBD ):
select distinct numero
from ma_table t1, ma_table t2
where t1.truc = 'A' and t2.truc = 'B' and
 t1.numero = t2.numero


 
justement INTERSECT ne fait pas parti du standart SQL, mais c pas grave ca devrait marché
 
et j'avais pensé a faire une teta-jointure, mais ca devient lourd si tu as a comparer 30 'trucs'

Reply

Marsh Posté le 26-02-2003 à 14:37:25    

tomlameche a écrit :


select distinct numero
from ma_table t1, ma_table t2
where t1.truc = 'A' and t2.truc = 'B' and
 t1.numero = t2.numero


Préfère un GROUP BY au SELECT DISTINCT en SQL :

   SELECT numero
      FROM ma_table t1,
           ma_table t2
     WHERE t1.truc = 'A' AND
           t2.truc = 'B' AND
           t1.numero = t2.numero
  GROUP BY numero


Message édité par BifaceMcLeOD le 26-02-2003 à 14:38:05
Reply

Marsh Posté le 26-02-2003 à 15:03:36    

BifaceMcLeOD a écrit :


Préfère un GROUP BY au SELECT DISTINCT en SQL :

   SELECT numero
      FROM ma_table t1,
           ma_table t2
     WHERE t1.truc = 'A' AND
           t2.truc = 'B' AND
           t1.numero = t2.numero
  GROUP BY numero




Je voudrai pas rentrer dans un débat de type Troll, mais pourquoi donc ?

Citation :

explain plan for select distinct machin from truc;
SELECT STATEMENT Optimizer=CHOOSE (Cost=96 Card=3166 Bytes=22225)
( etc ... )


à comparer à :

Citation :

explain plan for select machin from truc group by machin;
SELECT STATEMENT Optimizer=CHOOSE (Cost=111 Card=3166 Bytes=44450)


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 26-02-2003 à 15:32:05    

Bon ben ça dépend des SGBD alors. Certains optimisent mieux le GROUP BY, d'autres mieux le DISTINCT.
Mais il me semblait que pour des gros volumes de données, le DISTINCT, impliquant un tri, était plus coûteux en temps. Me trompé-je ?


Message édité par BifaceMcLeOD le 26-02-2003 à 15:32:36
Reply

Marsh Posté le 26-02-2003 à 15:37:59    

BifaceMcLeOD a écrit :

Bon ben ça dépend des SGBD alors. Certains optimisent mieux le GROUP BY, d'autres mieux le DISTINCT.
Mais il me semblait que pour des gros volumes de données, le DISTINCT, impliquant un tri, était plus coûteux en temps. Me trompé-je ?


Ben je sais pas en fait ( je rappelle que je ne suis pas vraiment informaticien et mes connaissances el la matière ne sont pas énormes ! ), mais a priori, pour faire un GROUP BY, faut bien faire un tri aussi de toute façon, ce qui va différer c'est la méthode.
Je suppose qu'en fait, ça va dépendre du nombre de valeur effectivement distincte que tu as.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 26-02-2003 à 15:55:54    

Oui, mais pour autant que je sache, le GROUP BY va faire un tri pendant la construction de l'ensemble résultat, et non pas une fois que l'ensemble résultat est entièrement construit. C'est pour cela qu'il est censé être plus efficace en général.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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