Zapytanie zwracające duplikaty.

Zapytanie zwracające duplikaty.
NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Witam,
Mam zapytanie: select konto from Konta_podmiotow where id in(56,56);
W odpowiedzi konto nr: 9
Jak zrobić aby w odpowiedz było 9,9 ?
Czyli, ile id tyle odpowiedz.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3892
0

Nie rozumiem wynik powinien być taki, zakładając że masz te 2 id w bazie:

konto
9
9

Aby to zwrócić w jednej linijce to trzeba pogrupować, np. uzywajac LISTAGG https://oracle-base.com/articles/12c/listagg-function-enhancements-12cr2

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
1

To powinno być jakoś tak:

Kopiuj
SELECT konto, count(*) FROM Konta_podmiotow GROUP BY konto

dawno w SQL nie robiłem więc głowy nie dam, ale powinno Ci to wypisać ile masz pozycji z danym kontem.

Bardzo zdawkowo napisałeś pytanie, więc jeżeli chodziło tobie o co innego to rozwiń swoje myśli.

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
1

@Sarrus:

Kopiuj
SELECT konto, count(*) FROM Konta_podmiotow GROUP BY konto

Dokładniej:

Kopiuj
SELECT konto, COUNT(*) 
FROM Konta_podmiotow 
GROUP BY konto
HAVING COUNT(*) > 1

No, bo w końcu szukamy duplikatów ;)

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

LISTAGG - trudna składnia mamy error.
SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT(
) > 1 -- Pusty wynik

  1. W warunku podaje id kont.
  2. Nie chce zliczonych duplikatów, chce mieć wypisane wszystkie konta podmiotów z duplikatami.
  3. W wyniku zapytania chce dostać wypisane konta podmiotów które są w warunku.
    SELECT konto
    FROM Konta_podmiotow
    WHERE id in(56,56); -- Obecny Wynik: 9 -- Jaki chce dostać Wynik: 9, 9.
grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
0

WHERE id in(5680,5680) - po co where .. in skoro szukasz dwóch identycznych id? To samo masz w pierwszym poście; trochę to bez sensu i wygląda na problem XY.

Kopiuj
SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT() > 1 -- Pusty wynik

Skoro odpytujesz jeden numer id to wynik nie może być inny niż pusty.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

Na postgreSQL szło by tak:

Kopiuj
SELECT  k.* FROM konta k JOIN (VALUES (5680), (5680)) x(id) on k.id=x.id
NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0
grzesiek51114 napisał(a):

WHERE id in(5680,5680) - po co where .. in skoro szukasz dwóch identycznych id? To samo masz w pierwszym poście; trochę to bez sensu i wygląda na problem XY.

Kopiuj
SELECT konto, count ()
FROM Konta_podmiotow
WHERE id in(5680,5680)
GROUP BY konto
HAVING COUNT() > 1 -- Pusty wynik

Skoro odpytujesz jeden numer id to wynik nie może być inny niż pusty.

Where in... tych id mam 100 i w odpowiedzi dostaje 60 kont bo reszta miała zdublowane id. Wyniki z zapytania chce skopiować do excela i brak jest pokrycia 1:1 w wierszach.

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Hej podłącze się do tematu żeby nie dublować :)
Mam tabelę z kolumnami id, name, phone, vendorID.
Chciałbym wyciągnąć wszystkie wiersze z powtarzającym się numerami tel. (phone) dla danego vendora (potrzebuję id powtarzających się recordów).
Znalazłem takie rozwiązanie ale coś nie działa:

Kopiuj
SELECT y.CustomerID,y.CustomerName,y.Country
 FROM Customers y
 INNER JOIN (
                        SELECT CustomerID, CustomerName,Country COUNT(*) AS CountOf
                        FROM Customers
                         WHERE vendorID=123
                        GROUP BY Country
                        HAVING COUNT(*)>1
                    ) dt
 WHERE vendorID=123
 ON y.Country=dt.Country;

Czy wie ktoś jak powinno wyglądać poprawne zapytanie? Dodam, że baza MySql.

kate87
  • Rejestracja: dni
  • Ostatnio: dni
0

Co znaczy coś nie działa? Konkretnie jakiś błąd, co jest wysypane w logu, ahh sformatuj kod i wpisz go w odpowiednie znaczniki żebyśmy oczu nie męczyli..

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

A jak to miało by działać? Przecież to zlepek różnych zapytań. ON jest po WHERE na samym końcu. To się nie może udać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.