Problem z ułożeniem zapytania

0

Witam,
Mam problem z ułożeniem zapytania, które dostarczy odpowiedzi na: podaj numery i współrzędne punktów należących do działki o numerze '3';
W bazie mam 3 tabele: DZIALKI (Kolumny: dzialki, dzialka_id), POSREDNIA (Kolumny: nr_punktu, id_dzialki), PUNKTY (nr_punktu,x,y).

Potrafię do momentu znalezienia numerów punktów z POSREDNIA:
select nr_punktu from posrednia where id_dzialki=(select dzialka_id from dzialki where numer='3');
Ale kiedy próbuję:
select nr_punktu,x,y from punkty where nr_punktu=(select nr_punktu from posrednia where id_dzialki=(select dzialka_id from dzialki where numer='3'));
Pojawia się: ERROR 1242 (21000): Subquery returns more than 1 row

0
select po.nr_punktu,x,y from posrednia po
join punkty pu on pu.nr_punktu = po.nr_punktu
where po.id_dzialki = '3'
 

W ogóle po co tabela pośrednia? Czy jeden punkt może należeć do więcej niż jednej działki?

0
select P.nr_punktu,P.x,P.y from PUNKTY P, POSREDNIA S, DZIALKI D where D.numer=3 and S.id_dzialki=D.dzialka_id and P.nr_punktu=S.nr_punktu;
0

Jeden punkt może należeć do więcej niż 1 działki, bo to są punkty graniczne

0
AJ1001 napisał(a):

Jeden punkt może należeć do więcej niż 1 działki, bo to są punkty graniczne
To co podałem poda ci wszystkie należące do podanej działki, bez uwzględnienia czy punkt należy do jeszcze jednej działki czy nawet do jeszcze kilku.

0

Wielkie dzięki.
Mam jeszcze jedno pytanko: jak wybrać id_dzialki z POSREDNIA, gdzie liczba punktów granicznych jest największa?
Próbowałem tak:
select id_dzialki from posrednia group by id_dzialki having count(*)=(select max(count(*)) from posrednia group by id_dzialki);
No, ale też nie działa; Invalid use of group function

0
select id_dzialki from posrednia group by id_dzialki order by count(nr_punktu) desc limit 1;
0

Też tak myślałem, ale w przypadku dwóch działek o takiej samej (największej liczbie punktów) dostanę id tylko jednej działki

0
select id_dzialki,count(nr_punktu) mx from posrednia group by id_dzialki having mx=(select count(nr_punktu) cnt from posrednia group by id_dzialki order by cnt desc limit 1)

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