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.
- Rejestracja:ponad 22 lata
- Ostatnio:około 4 godziny
- Postów:3866
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

- Rejestracja:prawie 14 lat
- Ostatnio:7 dni
- Postów:2512
To powinno być jakoś tak:
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.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
SELECT konto, count(*) FROM Konta_podmiotow GROUP BY konto
Dokładniej:
SELECT konto, COUNT(*)
FROM Konta_podmiotow
GROUP BY konto
HAVING COUNT(*) > 1
No, bo w końcu szukamy duplikatów ;)

- Rejestracja:ponad 6 lat
- Ostatnio:prawie 6 lat
- Postów:7
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
- W warunku podaje id kont.
- Nie chce zliczonych duplikatów, chce mieć wypisane wszystkie konta podmiotów z duplikatami.
- 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.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
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.
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.

- Rejestracja:prawie 17 lat
- Ostatnio:3 dni
- Postów:2792
Na postgreSQL szło by tak:
SELECT k.* FROM konta k JOIN (VALUES (5680), (5680)) x(id) on k.id=x.id
- Rejestracja:ponad 6 lat
- Ostatnio:prawie 6 lat
- Postów:7
grzesiek51114 napisał(a):
WHERE id in(5680,5680)
- po cowhere .. in
skoro szukasz dwóch identycznych id? To samo masz w pierwszym poście; trochę to bez sensu i wygląda na problem XY.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.
- Rejestracja:ponad 7 lat
- Ostatnio:około 4 lata
- Postów:35
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:
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.