Problem z wyświetlaniem kilu tabel jednocześnie[sql]

Problem z wyświetlaniem kilu tabel jednocześnie[sql]
cPlusPlus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
0

Witam. Mam pewien problem. Otóż utworzyłem dwie tablice, "panstwa" oraz "miasta". Oto ich deklaracja i wypełnienie:

Kopiuj
create table panstwa(panstwo varchar(50))
insert into panstwa(panstwo)values('afganistan')
insert into panstwa(panstwo)values('albania')
insert into panstwa(panstwo)values('algieria')

create table miasta(miasto varchar(50))
insert into miasta(miasto)values('gaborne')
insert into miasta(miasto)values('francistown')
insert into miasta(miasto)values('molepolole')

Po wyświetleniu ich w ten sposób:

Kopiuj
select * from panstwa
select * from miasta

wyglądają tak:

panstwo
1
2
3
miasto
----------------
1
2
3
jednak po wyświetleniu w ten sposób:
Kopiuj
select * from panstwa, miasta

otrzymuję mniej więcej taki efekt:

panstwo miasto
1 afganistan
2 albania
3 algieria
4 afganistan
5 albania
6 algieria
7 afganistan
8 albania
9 algieria
Co zrobiłem źle i jak mógłbym to naprawić, żeby wyglądało np. tak:
panstwo miasto
---------------- ----------------
1 afganistan
2 albania
3 algieria
Od razu mówię, że potrzebne mi jest tylko do tego, żeby móc szybko sprawdzać dane w bazie, nie musząc przewijać nie wiadomo ile w dół, żeby obejrzeć osobno każdą tabelkę(bo w sumie mam ich 6).
Proszę o pomoc.
bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
CREATE TABLE panstwa
(
  panstwo VARCHAR(50),
  id int
)
CREATE TABLE miasta
(
  miasto VARCHAR(50),
  id int
)
SELECT panstwa.panstwo, miasta.miasto FROM miasta, panstwa WHERE miasta.id = panstwa.id
cPlusPlus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
0

Dzięki @bogdans, działa.

@Edit
Działa, ale tylko dla identycznej ilości rekordów w tabelach, a ja potrzebuję ich różną ilość.

CI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 184
0

No to stwórz sobie dwie tabele ( jeden do wiele ) ( Państwa miasta ) i potem:

Kopiuj
select p.id_panstwa, p.panstwo, m.miasto from panstwa p JOIN miasta as m USING(id_panstwa)

To tak najprościej.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Można też tak

Kopiuj
CREATE TABLE panstwa
(
  panstwo VARCHAR(50),
  id INT
)
CREATE TABLE miasta
(
  miasto VARCHAR(50),
  id_panstwa INT
)
SELECT panstwa.panstwo, miasta.miasto FROM miasta, panstwa WHERE miasta.id_panstwa = panstwa.id

Musisz wtedy zapewnić właściwą wartość pola id_panstwa podczas dopisywania do tabeli miasta.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.