[SQL] hoe kijken of er dubbelen voorkomen

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 17-12-2025
Hallo,

Ik moet van een query weten of er dubbele in zitten. Ik heb dat op dit moment als volgt opgelost:
(kan een typefout inzitten maar het is duidelijk wat er gebeurd)

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
declare @CntFull int
declare @CntDist int

select @CntFull = count(fk_someId) from tblDit where fk_BlaId = 1
select @CntDist = count(distinct fk_someId) from tblDit where fk_BlaId = 1

-- cntfull = 5
-- cntdist = 2
-- komen dus dubbele waardes voor

if (@CntFull > @CntDist) begin
print 'dubbele gevonden'
end


Is dit anders op te lossen omdat ik nu twee keer dezelfde query opvraag. Voor deze is het nog niet zo erg maar de werkelijke query is uitgebreider.

https://k1600gt.nl


Verwijderd

SQL:
1
SELECT COUNT(*) AS cnt, fk_Blaid FROM tblDit GROUP BY fk_Blaid HAVING cnt > 1


Krijg je alle id's die meer dan 1 voorkomen hebben :)

[ Voor 3% gewijzigd door Verwijderd op 28-09-2006 12:03 ]


  • shades
  • Registratie: September 2001
  • Laatst online: 17-12-2025
Verwijderd schreef op donderdag 28 september 2006 @ 12:03:
SQL:
1
SELECT COUNT(*) AS cnt, fk_Blaid FROM tblDit GROUP BY fk_Blaid HAVING cnt > 1


Krijg je alle id's die meer dan 1 voorkomen hebben :)
Great !
ik mis duidelijk ervaring en kennis met group by en having
HAVING cnt > 1 slikt sql2000 niet dus van cnt maar weer count(*) gemaakt (Column not found)

https://k1600gt.nl


Verwijderd

uhm, dit is ook niet helemaal correct natuurlijk he..

if exists (
SELECT 1
, fk_Blaid
FROM tblDit
GROUP BY fk_Blaid
HAVING cnt > 1
)
begin
raiserror (@duplicate_string, 0,1) with nowait
end

:)

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 12-02 21:39

TeeDee

CQB 241

Verwijderd schreef op donderdag 28 september 2006 @ 15:10:
uhm, dit is ook niet helemaal correct natuurlijk he..

if exists (
SELECT 1
, fk_Blaid
FROM tblDit
GROUP BY fk_Blaid
HAVING cnt > 1
)
begin
raiserror (@duplicate_string, 0,1) with nowait
end

:)
Que? Wat bedoel je hiermee als ik vragen mag?

Edit: Ik begrijp dat het hier om wat error reporting / exception gedoe gaat, maar waarom haal je dat aan in dit topic?

[ Voor 14% gewijzigd door TeeDee op 28-09-2006 15:19 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

nou... volgens de topicstarter:

"Ik moet van een query weten of er dubbele in zitten"

Opdracht is dus kijken of er dubbelen inzitten, daarvoor gebruik ik dan een exists. Beetje miereneuken natuurlijk ;)

  • xoniq
  • Registratie: April 2005
  • Laatst online: 06-02 15:53
Om het simpel te gebruiken gebruik ik vaak dit (ALS DIT OVER PHP GAAT):


PHP:
1
2
3
4
5
if(mysql_num_rows(mysql_query("SELECT id FROM tblDit WHERE fk_BlaId = '1'")) > 1){
  echo 'Dubbel!';
}else{
  echo 'Niet dubbel...';
}

[ Voor 3% gewijzigd door xoniq op 29-09-2006 22:40 ]


  • shades
  • Registratie: September 2001
  • Laatst online: 17-12-2025
Ik mis alleen het "fk_BlaId = 1" verhaal. Die maakt het result een stuk kleiner. zo klein dat ik er daadwerkelijk wat aan heb.. Naja. ik kan ff niet bij mn oplossing want mn hdd ligt nog op het werk. De oplossing van Boland was dus niet helemaal okay

https://k1600gt.nl


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17:24

pistole

Frutter

shades schreef op vrijdag 29 september 2006 @ 23:15:
Ik mis alleen het "fk_BlaId = 1" verhaal. Die maakt het result een stuk kleiner. zo klein dat ik er daadwerkelijk wat aan heb.. Naja. ik kan ff niet bij mn oplossing want mn hdd ligt nog op het werk. De oplossing van Boland was dus niet helemaal okay
Die oplossing van Boland is prima (hoewel ik er een distinct bij had gezet :p ); jij moet hem echter toepassen door de where clause toe te voegen.

Ik frut, dus ik epibreer


Verwijderd

nou ja...

zoiets als dit is wat ie zoekt:

if exists (
SELECT 1
, fk_Blaid
FROM tblDit
GROUP BY fk_Blaid
HAVING cnt > 1
)
begin
select fk_Blaid
from tblDit main
where exists (
select 1
from tblDit sub
where sub.fk_blaid = main.fk_blaid
group by fk_Blaid
HAVING cnt > 1)
end

Verwijderd

pistole schreef op vrijdag 29 september 2006 @ 23:25:
[...]

Die oplossing van Boland is prima (hoewel ik er een distinct bij had gezet :p ); jij moet hem echter toepassen door de where clause toe te voegen.
Distinct samen met een group by??? Wat heeft dat nou weer voor zin... Helemaal niets.

En inderdaad, je kunt die where-clause ook wel overnemen toch? Lijkt me niet zo ingewikkeld :).

@sqljunkie: Je mist in de queries de var cnt ;)

[ Voor 6% gewijzigd door Verwijderd op 01-10-2006 02:49 ]

Pagina: 1