Page 1 sur 1

nouveau casse tête signé toto 37

Posté : 14 juin 2006, 15:22
par toto37
qui serai capable de me transformer ceci en une seule requete avec des alias?
jy suis presque arrivais mais j'ai tj des erreur a causes des alias:

Code : Tout sélectionner

SELECT COUNT (t_id) FROM transactions INNER JOIN certif ON certif.c_id = transactions.t_cid WHERE transactions.t_typeabo = 2 and certif.c_picto like '%'+'1254'+'%' and transactions. t_date>@tim -86400 SELECT COUNT (t_id) FROM transactions INNER JOIN certif ON certif.c_id = transactions.t_cid WHERE transactions.t_typeabo = 2 and certif.c_picto like '%'+'1253'+'%' and transactions. t_date>@tim -86400 SELECT COUNT (t_id) FROM transactions INNER JOIN certif ON certif.c_id = transactions.t_cid WHERE transactions.t_typeabo = 2 and (( certif.c_picto not like '%'+'1253'+'%' and certif.c_picto not like '%'+'1254'+'%') or c_picto is null ) and transactions. t_date>@tim -86400
qui s'y colle?

Re: nouveau casse tête signé toto 37

Posté : 14 juin 2006, 15:29
par ouckileou
qui s'y colle?
Personne tant que t'auras pas choisi un titre plus en rapport avec ton problème ;)

Et même si c'est dit gentiment, je serais toi j'étofferais un peu mon message en expliquant mieux ce que j'attends car je ne suis pas sûr que le côté "challenge" avec du SQL à déchiffrer intéresse tout le monde :lol:

Posté : 14 juin 2006, 15:43
par sadeq
bien vu, on n'est pas là pour porter un challenge quelconque mais seulement pour comprendre et répondre dans la mesure du possible.

Mais à première vue, tes 2 premières requêtes peuvent être assemblées par un OR entre les Like, comme le fait la 3° qui à son tour est exactement le contraire des 2.
Ce qui veut dire que l'assemblage des 3 requetes remet en cause le rôle du like

Ce qui veut dire que l'assemblage des 2 premières avec la 3° en une seule par un ET produit une condition Like fausse:
(A = 1 ou A = 2 ) ET (A != 1 et B != 2) = Faux

et l'assemblage des 2 premières avec la 3° en une seule par un OU produit une condition Like vraie:
(A = 1 ou A = 2 ) OU (A != 1 et B != 2) = Vrai

Posté : 14 juin 2006, 18:12
par Augure
J'ai un doute sur la possibilité de fusionner les requêtes 1 et 2 :

en effet si certif.c_picto='12531254' alors cette ligne devrait compter une fois pour la requête 1 et une fois pour la requête 2.

Comme le but est de ne parcourir qu'une fois les données on ne pourra pas compter cette ligne deux fois.

Posté : 15 juin 2006, 00:02
par ouckileou
Pourquoi il est marqué résolu ce topic ?

Tu fais quoi du coup toto37 ? tu suis les remarques ou tu t'en tapes ?

Non parceque je vois que t'es bien actif dans d'autres sujets donc pourquoi pas dans celui-là... :roll: