• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Połączenie tabel w sqlite

Object Storage Arubacloud
0 głosów
1,775 wizyt
pytanie zadane 8 sierpnia 2017 w SQL, bazy danych przez Mdr92 Nowicjusz (150 p.)
Witam wszystkich,

Przepraszam, że tak od razu z grubej rury bez przywitania, ale mam mały problem z relacją między bazami (już wyjaśniam o co chodzi).

Piszę sobie aplikację bazodanową w języku Java za pomocą JDBC operując na bazie SQLite ze względu na łatwe przemieszczenie lokacyjne(nie ważne :) ). Mam pewien problem otóż, przykładowo mam stworzone 2 tabele:
Użytkownicy

id_user | login | password | name | surname |

Komputery
id_computer | model | sn | os | cpu | ram

Przykładowo w mojej aplikacji mam zamiar zrobić dodanie do bazy komputera za pomocą INSERT INTO i to jest ok. Natomiast chciałbym dodany komputer przypisać do danego użytkownika.
Przykładowo:
Mam sobie selektor, po którym leci pętla wyszukując nazwiska pracowników i do tego obok selektor z komputerem. Po wyborze dwóch selektorów naciskam "Dodaj" i dodaje mi komputer do danej osoby. I tu zaczyna się mój problem. Przerobiłem na szybko kurs i wiem, że trzeba zastosować FOREIGN KEY czyli powiązanie. Nie za bardzo wiem jak to zrobić. Domyślam się tylko, że pewnie powinienem stworzyć osobną kolumnę w tabeli komputery z id_user i przypisać id_user z tabeli UŻYTKOWNICY do tabeli KOMPUTERY. Za bardzo nie wiem jak takie zapytanie napisać, żeby mi to przypisało do użytkownika.
Bardzo proszę o pomoc :)

ps. Chciałbym uprzedzić - tak przerabiam aktualnie kurs z SQL i próbuję coś stworzyć, ale no nie wychodzi mi to w 100% i nie mogę nigdzie znaleźć takiego problemu jak ja mam :)

1 odpowiedź

+1 głos
odpowiedź 8 sierpnia 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
wybrane 8 sierpnia 2017 przez Mdr92
 
Najlepsza
Cześć!

users: id, name

devices: id, name

user_devices: user_id, device_id, PRIMARY KEY (user_id, device_id)

w dużym skrócie utwórz dodatkową tabelę, w której przechowasz przypisane użytkownikom urządzenia.

M.
1
komentarz 8 sierpnia 2017 przez maciej.tokarz Nałogowiec (27,280 p.)

Jeszcze polecę program rodzimego autora - jeśli nie znasz - SQLiteStudio i uzupełnię przykład o relacje o których nie wspomniałem - przykład pod MySQL, który będziesz musiał przerobić na składnię SQLite:

CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  user_name VARCHAR(20) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY ux_user_name (user_name)
);

CREATE TABLE devices (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY ux_name (name)
);

CREATE TABLE user_devices (
  user_id INT NOT NULL,
  device_id INT NOT NULL,
  PRIMARY KEY (user_id, device_id),
  CONSTRAINT fk_users_user_devices_user_id
    FOREIGN KEY (user_id)
    REFERENCES users (id)
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT fk_devices_user_devices_device_id
    FOREIGN KEY (device_id)
    REFERENCES devices (id)
    ON DELETE CASCADE
    ON UPDATE NO ACTION
);

M.

komentarz 8 sierpnia 2017 przez Mdr92 Nowicjusz (150 p.)
Super!

Bardzo  dziękuję :)

Biorę się do roboty!
komentarz 8 sierpnia 2017 przez Mdr92 Nowicjusz (150 p.)
edycja 8 sierpnia 2017 przez Mdr92

Ok,

Utworzyłem od nowa 3 tabele według kodu powyżej, dodałem komputer i użytkownika. Natomiast teraz nie za bardzo wiem jak mógłbym na tym operować? np. Pobrać laptopa użytkownika? Zapewne poleceniem Join?

Udało mi się skleić coś takiego:

SELECT d.* FROM devices d
INNER JOIN user_devices ud
ON d.id = ud.device_id
AND ud.user_id = 2;

 

Natomiast nie wiem czy jest to dobrze zapisane

1
komentarz 8 sierpnia 2017 przez maciej.tokarz Nałogowiec (27,280 p.)
1
komentarz 8 sierpnia 2017 przez Mdr92 Nowicjusz (150 p.)
Super!

O to dokładnie mi chodziło :) Bardzo dziękuję i wracam dalej do nauki SQL, bo jednak mam duuuże braki :)

Pozdrawiam i jeszcze raz dziękuję,
Michał

Podobne pytania

0 głosów
0 odpowiedzi 68 wizyt
0 głosów
0 odpowiedzi 202 wizyt
pytanie zadane 21 czerwca 2018 w SQL, bazy danych przez manjaro Nałogowiec (37,390 p.)
0 głosów
1 odpowiedź 192 wizyt
pytanie zadane 4 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...