SQL - iteracja po kolekcji?

0

Hej,

nie umiem sobie poradzić ze stworzeniem zapytania do bazy danych. Mam kilka tabel- tabela Agenci, tabela Wiadomosci, tabela Rejon. Agent posiada Klucz obcy Rejon, Wiadomosc posiada klucz obcy Agent.
I chce teraz zrobić zapytanie które dla listy rejonów wyciągnie mi agentów (czyli będzie np. 10 rejonów, co da mi 30 agentów) a potem na podstawie tej nowej mniejszej listy agentów wyciągnie mi ich Wiadomość.
Jak coś takiego skonstruować? Nie wiem jak w SQL operować na kolekcji... :(

1

SQL nie ma czegoś takiego jak kolekcje tylko RELACJE. Lekcja na dziś: join

1

na przyszłość przy pytaniach dotyczących zapytań SQL nie opisujemy radosną polszczyzną co mamy i co chcemy tylko wypisujemy bezduszne fakty, czyli

  1. tabele i najważniejsze pola w nic (czyli PK, FK, to co chcemy wyciągnąć)
  2. przykładowe dane wejściowe
  3. DOKŁADNY wynik jaki chcemy osiągnąć z danych wejściowych

Specjalnie dla ciebie jak to ma wyglądać

Rejony

id nazwa
1 rejon 1
2 rejon 2

Wiadomości

id agent_id tresc
1 1 tresc 1
2 1 tresc 2
3 2 tresc 3
4 3 tresc 4

Agenci
id | rejon_id | nazwa
1 | 1 | agent 1
2 | 2 | agent 2
3 | 2 | agent 3

Wynik

rejon agent wiadomosc
rejon 1 agent 1 tresc 1
rejon 1 agent 1 tresc 2
rejon 2 agent 2 tresc 3
rejon 2 agent 3 tresc 4

i wtedy dostaniesz wynik:

SELECT
  r.nazwa, a.nazwa, w.tresc
FROM
  agenci a
JOIN rejon r on r.id = a.rejon_id
JOIN wiadomosci w on w.agent_id = a.id

jeśli chcesz też agentów bez wiadomości czy bez rejonów to zamień JOIN na LEFT JOIN

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