Bête requete ... - SQL/NoSQL - Programmation
Marsh Posté le 22-02-2009 à 13:07:43
Avec quelle base de données ?
Ca ne passe pas car count(*) ne fait pas parti des colonnes du résultat, et que Having est un traitement qui se base sur ces colonnes.
A la place, essayer :
Select distinct A, B, C, D from latable T1, latable T2 |
Marsh Posté le 23-02-2009 à 13:57:46
Essaie ça aussi
=>
select * from T1
where D in
(select D
from T1
group by D
having count(*) > 1);
Marsh Posté le 23-02-2009 à 18:47:03
olivthill a écrit : Avec quelle base de données ? |
vttman2 a écrit : Essaie ça aussi |
Tu as lu olivthill?
Marsh Posté le 24-02-2009 à 00:17:26
Ce n'est pas grave. Tout le monde a le droit de proposer des réponses même si elles ne marchent pas (d'ailleurs je me suis moi-même trompé en mettant un test sur B alors que ce champ n'est pas dans la clé).
Uncle_Scrooge fera l'arbitrage (s'il revient un jour ici).
Marsh Posté le 24-02-2009 à 15:44:19
Ton SQL est à mon avis valable (il ne tombe pas en erreur...)
Je me demande s'il ne voulait pas un truc tout simple comme:
select D, count(*)
from T1
group by D having count(*) > 1;
Marsh Posté le 25-02-2009 à 14:50:50
le count(*) n'a pas besoin d'être dans le select pour être utilisé dans le having... ou alors changez de SGBD parce que franchement...
par contre, pas de select * sans un group by sur toutes les colonnes de la table (sauf sous mysql qui a un comportement assez imprévisible dans ce cas, mais qui ne rejette pas la requête)
Marsh Posté le 28-02-2009 à 18:09:59
smilaou a écrit : Ton SQL est à mon avis valable (il ne tombe pas en erreur...) |
Il faut que je récupère toutes les données de T1 et ça passe avec la proposition d'olivthill
Marsh Posté le 21-03-2009 à 10:53:02
Uncle_Scrooge a écrit : |
pour une optimisation des performances :
select T1.*
from T1 inner join
(
select A, C
from T1
group by D having count(*) > 1;
) as T2 on ( T1.A = T2.A and T1.C = T2.C )
Marsh Posté le 22-02-2009 à 11:04:45
Bonjour,
Je me prend la tête sur une stupide requête SQL.
Nous avons une table ayant cette structure
A B C D
a a 3 1111
b b 3 1111
c b 4 1111
z x 3 2222
avec A et C comme clè.
Nous voulons selectionner les lignes ou pour un D donné, nous avons plusieurs clé différentes.
(par exemple, les lignes pour D = 1111)
je pense à :
select *
from T1
group by D
having count(*) > 1;
mais passe pas ...
erreur sur le group by
Message édité par Uncle_Scrooge le 22-02-2009 à 11:05:23