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.
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
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.
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 ;)
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.
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.
Na postgreSQL szło by tak:
SELECT k.* FROM konta k JOIN (VALUES (5680), (5680)) x(id) on k.id=x.id
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.
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.
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..
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ć.