Portál AbcLinuxu, 11. května 2025 05:06

Dotaz: sql duplicity

28.3.2018 11:38 frufru
sql duplicity
Přečteno: 832×
Odpovědět | Admin
Zdravim,

mam nasledujucu tabulku:
nazov firmy cislo faktury variabilny symbol     
prva	    1	          10
prva	    2	          20
prva	    3	          20
druha	    4	          40
druha	    5	          50
druha	    6	          40
prva	    7	          70
prva	    8	          70
prva	    9	          90
Zistit duplicity v jednom stlpci - napr. vo variabilnom symbole viem, ale potreboval by som zlozitejsi dotaz, ktoreho vysledkom by bolo:
nazov firmy cislo faktury variabilny symbol     
prva	    2	          20
prva	    3	          20
druha	    4	          40
druha	    6	          40
prva	    7	          70
prva	    8	          70
je nieco take vobec v sql mozne? ak ano mozte ma nakopnut spravnym smerom pls? za akukolvek pomoc vopred velka vdaka.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.3.2018 13:11 EtDirloth | skóre: 11
Rozbalit Rozbalit vše Re: sql duplicity
Odpovědět | | Sbalit | Link | Blokovat | Admin
CREATE TABLE faktury (firma text, cislo int UNIQUE, variabilny int);

INSERT INTO faktury VALUES
 ('prva',  1, 10),
 ('prva',  2, 20),
 ('prva',  3, 20),
 ('druha', 4, 40),
 ('druha', 5, 50),
 ('druha', 6, 40),
 ('prva',  7, 70),
 ('prva',  8, 70),
 ('prva',  9, 90)
;

SELECT f.*
  FROM faktury AS f
  WHERE EXISTS (
          SELECT 1
            FROM faktury AS x
            WHERE f.firma = x.firma
              AND f.variabilny = x.variabilny
              AND f.cislo != x.cislo
        )
  ORDER BY variabilny, firma, cislo
;
31.3.2018 07:34 Vlasta Dohnal
Rozbalit Rozbalit vše Re: sql duplicity
select * from faktury where cislo in (select cislo from faktury group by variabilny having count(*)>1)
31.3.2018 14:31 EtDirloth | skóre: 11
Rozbalit Rozbalit vše Re: sql duplicity
Ta tvoja subquery je zla - ak "cislo" nie je v GROUP BY klauzule, muselo by byt pouzite vo volani nejakej agregacnej funkcie.

Sice v SQLite by sa ti ten dotaz spustil, ale SQLite v tomto funguje vzhladom na standard chybne - nevyhodi chybu, vrati hodnotu nejakeho lubovolneho riadku, ktory spadne do GROUP BY. Ked sa nad tym zamyslis, tak do spolocneho GROUP BY mozu spadnut viacere faktury, ale subquery ti vrati cislo iba jedinej z nich.
3.4.2018 13:34 gnat
Rozbalit Rozbalit vše Re: sql duplicity
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je třeba zjistit duplicity podle "nazov firmy" a "variabily symbol" tak na Oracle třeba takto:

SELECT * FROM faktury AS f WHERE (SELECT COUNT(1) FROM faktury x WHERE x."nazov firmy" = f."nazov firmy" AND x."variabily symbol" = f."variabilny symbol") > 1

5.4.2018 09:42 fru fru
Rozbalit Rozbalit vše Re: sql duplicity
Super, dakujem, velmi mi to pomohlo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.