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

Jak napisać relację

Object Storage Arubacloud
0 głosów
677 wizyt
pytanie zadane 19 września 2018 w SQL, bazy danych przez molik Użytkownik (950 p.)
Cześć!

Mam problem z napisaniem relacji.. może my mi pomożecie. Mam takie tabele:

joke [id, joketext, jokedate, authorid],

author [id, name, email]

category [id, name]

jokecategory [jokeid, categoryid]

oczywiście wszystkie pola są uzupełnione, a chciałbym wypisać w tabeli:

joke.id, joke.joketext, jokedate, author.name, jokecategory.name jak to zrobić?

3 odpowiedzi

0 głosów
odpowiedź 19 września 2018 przez niezalogowany
Zamiast tabeli jokecategory do tabeli joke dodaj categoryID
komentarz 19 września 2018 przez Comandeer Guru (600,690 p.)
A co jak kawał może być w wielu kategoriach równocześnie? :P
0 głosów
odpowiedź 19 września 2018 przez Comandeer Guru (600,690 p.)

Pytanie brzmi, czy żart może mieć kilka kategorii równocześnie? Jeśli nie, to najłatwiej zrobić tak, jak mówi 12david12 – po prostu przenieść kategorię jako pole do tabeli joke. Wówczas całość rozbija się o prostego JOIN-a z warunkiem joke.category = jokecategory.id.

W przypadku, gdy żart może mieć kilka kategorii, trzeba robić JOIN-a na 3 tabelach i grupować po żarcie (GROUP BY joke.id). Przyda się też prawdopodobnie funkcja GROUP_CONCAT.

komentarz 19 września 2018 przez Patrycjerz Mędrzec (192,320 p.)
Może nie na temat, ale cóż... Jeśli mamy słowa po angielsku pisane dużymi literami (np. JOIN), to przy ich odmianie musimy stosować dywiz?
komentarz 19 września 2018 przez Comandeer Guru (600,690 p.)
W sumie to nie wiem, prawdopodobnie nie. Dałem z automatu, po latach pisania HTML-a itd.
0 głosów
odpowiedź 20 września 2018 przez Catalonya1992 Mądrala (5,440 p.)
Podstawa to poprawne napisanie joinów.
select j.id, j.joketext, j.jokedate, a.name, c.name
from joke j
left join author a on j.atuhorid = a.id
left join jokecategory jc on j.id = jc.jokeid
left join category c on jc.categoryid = c.id

Dalej można się bawić w grupowanie, jeśli oczywiście jest potrzebne. Nie tworzyłem obiektów, więc mogłem zrobić literówkę :) Jeśli chodzi o tworzenie relacji to zerknij tutaj:
https://www.youtube.com/watch?v=qlEBJE8UN-Q

Podobne pytania

0 głosów
1 odpowiedź 282 wizyt
0 głosów
1 odpowiedź 287 wizyt
pytanie zadane 15 maja 2018 w PHP przez Alterwar Dyskutant (7,650 p.)
0 głosów
2 odpowiedzi 175 wizyt
pytanie zadane 3 lutego 2021 w SQL, bazy danych przez jakubjordanek Obywatel (1,320 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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!

...