Kolumna a tabela, MySql

0

Witam w sprawach baz dany jestem całkowicie nowy. Otóż mam problem, którego nie jestem w stanie rozwiązać.
Posiadam dwie tabele city(city_id, city,country_id) oraz country(country_id, country) i mam wypisać kraje, które mają więcej niż 6 miast w tabeli.
Chciałem stworzyć tabele w taki sposób:
SELECT country, COUNT(city) as ILOSC FROM city INNER JOIN country ON city.country_id=country.country_id GROUP BY country
Ale gdy następnie ten wiersz:
SELECT country from (SELECT country, COUNT(city) as ILOSC from city INNER JOIN country ON city.country_id=country.country_id GROUP BY country) WHERE ILOSC>6

to wyrzuca mi błąd, który rozumiem w ten sposób, że tak naprawdę country o ktore proszę w seletcie jest tabelą.
Proszę o pomoc, pozdrawiam

0

Nie "nazwałeś" źródła danych. Nie nadałeś aliasy temu wyrażeniu w nawiasie. Dodaj po nawiasie zamykającym "as x" i po problemie.

0

Użyj having:

SELECT country FROM city INNER JOIN country ON city.country_id=country.country_id GROUP BY country
HAVING COUNT(city) >3
0

OK wszystko jasne to dołożę jeszcze jedno pytanie. Mam 3 tabele staff(staff_id), payment(staff_id, customer_id, payment_id), customer(customer_id) i mam wypisać osoby, które zostały obsłużone przez 2 roznych pracowników.( nie mogę używać grupowania). Próbowałem z takim czymś co wydaje mi się w miare sensowne ale niestety nie działa:
SELECT customer_id FROM customer INNER JOIN (SELECT DISTINCT customer_id FROM payment WHERE staff_id=2) AS tab ON tab.customer_id=payment.customer_id WHERE staff_id=1

0

Kto wymyśla takie zadania?

No to żeby nie psuć tym razem zabawy, opisze jakbym zrobił bez pisania SQL: z tabeli customer w klauzuli w warunku where użyłbym in https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#function_in tylko zamiast wypisywać wartości użyłbym podzapytania, które będzie złączeniem tabeli payment samej ze sobą, gdzie warunek złączenia to takie same pola customer_id i różne od siebie stuff_id

0

Bez grupowania, to może coś takiego?

SELECT DISTINCT p1.customer_id
FROM payment p1
JOIN payment p2 
ON p1.customer_id = p2.customer_id 
AND p1.staff_id <> p2.staff_id

1 użytkowników online, w tym zalogowanych: 0, gości: 1