Baza danych - łączenie tabel

0

Witam wszystkich serdecznie. Stworzyłem bazę danych domowej wypożyczalni. Mam tabele takie jak gry, muzyka, książki, muzyka, wypożyczający, zamówienia. Borykam się z jednym problemem, z którym nie potrafię sobie poradzić ...
Problem polega na tym, że nie wychodzi mi łączenie tabel np. gry z zamówieniami. Chciałbym żeby np. przykładowa gra, która zostaje pożyczona przechodziła poprzez łączenie tabel do tabeli zamówienia ale nie wychodzi mi to wcale używając JOIN'a.
Próbowałem w następujący sposób i jedyne co mi się wyświetlało to puste kolumny ...

SELECT * from gry AS a 
INNER JOIN zamowienia AS b ON a.id_gry=b.id_wyp 

Natomiast tak wygląda moja kolumna "Zamówienia"

 CREATE TABLE zamowienia
(
  nr_zamowienia character varying(20) NOT NULL,
  id_wyp integer NOT NULL,
  id_muzyka character varying(20),
  id_gry character varying(20),
  id_ksiazki character(20),
  CONSTRAINT wypozyczenia_pkey PRIMARY KEY (id_wyp)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE zamowienia
  OWNER TO postgres;

Prosiłbym bardzo o pomoc i z góry dziękuje za zainteresowanie się tematem.
Pozdrawiam.

1

Pokaż jak wyglądają obie tabele i która kolumna jest FK do drugiej tabeli. Zakładam że jest to id_gry i czy ma referencję?

0

Tabela gry wygląda następująco ..

 CREATE TABLE gry
(
  id_gry integer NOT NULL,
  tytul character varying(20) NOT NULL,
  wydawca character varying(20) NOT NULL,
  CONSTRAINT gry_pkey PRIMARY KEY (id_gry)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE gry
  OWNER TO postgres;

Tabela zamówienia ..

CREATE TABLE zamowienia
(
  nr_zamowienia character varying(20) NOT NULL,
  id_wyp integer NOT NULL,
  id_muzyka character varying(20),
  id_gry character varying(20),
  id_ksiazki character(20),
  CONSTRAINT wypozyczenia_pkey PRIMARY KEY (id_wyp)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE zamowienia
  OWNER TO postgres;
 

W tabeli gry mam dodanych poprzez insert kilka pozycji i dajmy na to że mam grę o nazwie mario, która pozstaje wypożyczona - wypożyczenie wywołuje poprzez selecta i w tym momęcie chciałbym by własnie gra mario, która ma id_gry = 1 przechodziła do tabeli zamowienia z informacją o nr_zamowienia = 1 id_muzyka i id_ksiazki zostaje puste id_gry = 1 bo takie id ma mario i oczywiście id_wyp, czyli numer wypożyczającego, który był chętny wypożyczyć sobie mario i pograć. Oczywiście gra mario nie usuwa się z tabeli 'gry' a jest łączona z tabela 'zamowienia'.

0

Masz to na jakieś zaliczenie? Ja bym proponowała zastosować tabelę pośrednią do której trafiałby id wypożyczenia i id gry. Tam dopiero sprawdzać czy w tym czasie gra wypożyczona czy nie. Takie updaty żywej tabeli to taka trochę lipa bo psuje Ci się historyczność, a jak zastosujesz tabele pośrednią z jakimś statusem np wypożyczona :=1 i daty wypożyczenia i oddania wtedy masz pewność że nic Ci nie zginie + id klienta.

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