probleme de selection selon critere - SQL/NoSQL - Programmation
Marsh Posté le 20-07-2006 à 13:53:50
a essayer, j'ai pas pu tester :
Code :
|
ya surement moyen de faire plus joli mais c'est ce que j'ai trouvé en preum's
Marsh Posté le 24-07-2006 à 09:29:09
jointure ouverte (si pas de ligne, ça rammène une ligne avec "null" )
Marsh Posté le 24-07-2006 à 09:32:36
moi je penserais plutôt à :
select t1.art, sum(1), sum(decode(t2.nom, null, 0, 1)) |
à vérifier aussi, mais ça devrait marcher, etun peu plus performant que la requête de moonboot
Marsh Posté le 24-07-2006 à 10:00:27
Salut,
ok, c'est comme un right outer join alors ?
Merci.
Marsh Posté le 24-07-2006 à 10:08:27
la syntaxe (+) à côté d'un champ, c'est la syntaxe Oracle. Elle indique que c'est du côté du champ qu'il faut ajouter les lignes vides si la jointure ne se fait pas.
La syntaxe *= ou =*, c'est la syntaxe SQL Server. Elle indique qu'il y a plus de lignes du côte de l'étoile, c'est donc l'inverse d'Oracle (juste pour faire chier )
Marsh Posté le 24-07-2006 à 10:10:06
Merci,
je vais me pencher sur le probleme, et je suis en SQL SRV donc decode il connait pas
Marsh Posté le 24-07-2006 à 10:11:56
utilise "case when" à la place un peu plus lourd... ou un if vu qu'on n'a que deux choix
Marsh Posté le 24-07-2006 à 10:13:16
Ca devrait donner un truc du style :
|
Marsh Posté le 24-07-2006 à 10:32:56
pas mal ton truc arjuna, connaissais pas cette astuce avec le sum(1), je vais tester chez moi, ca pourrait me servir !
Marsh Posté le 24-07-2006 à 10:43:15
moonboot a écrit : pas mal ton truc arjuna, connaissais pas cette astuce avec le sum(1), je vais tester chez moi, ca pourrait me servir ! |
j'espère que ça marche, je n'ai pas testé mais dans l'approche ça doit être ok. j'ai juste un doute avec le having, j'arrive jamais à le faire marcher du premier coup
Marsh Posté le 24-07-2006 à 10:44:26
sinon, à la place du SUM() on peut essayer avec un COUNT() sans mettre le IF à l'intérieur. Si c'est bien foutu, il devrait rejeter les NULL, mais je suis très loin d'être sûr de moi sur ce coup
Marsh Posté le 24-07-2006 à 15:58:05
Salut,
Y'a des chances en effet.
J'ai refais par moi meme la requete précédente , avec des JOIN, je suis plus familier avec.
J'arrive à un résultat très similaire à ce qu'a indiqué moonboot, c'est plutôt bon signe.
En combinant ce dernier poste avec mes précédents, je pense avoir réussi à faire mon truc.
Je vous remercie, c'est clairement grâce à votre aide
C'est la plus grosse requete que j'ai jamais fait pour l'instant (:D) et ca me facilite bien la vie.
Merci
Marsh Posté le 24-07-2006 à 16:00:38
tu verras quand tu feras des requêtes de 200 lignes, tu regretteras cette époque où tes problèmes étaient aussi simple que ça
Marsh Posté le 20-07-2006 à 12:40:17
Bonjour,
j'ai un petit soucis pour batir une requete, voila le topo :
art | nom
----------
XX | a
XX | b
XX | c
YY | t
YY | u
J'ai mon article XX qui est composé de a,b et c. Mon YY de t et u.
Ensuite j'ai la table de reception des composants suivantes :
nom | prix
----------
a | 50
c | 34
t | 12
u | 15
En fait je voudrais faire une requete qui me selectionne les articles dont j'ai eut une reception pour chacun des composants. Dans mon exemple la requete renvoie YY car tous ses composants ont un prix mais pas XX car il manque le prix de b.
Merci d'avance.
Message édité par $man le 20-07-2006 à 12:41:33