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

Jak napisać relację

VPS Starter Arubacloud
0 głosów
662 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 (599,730 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 (599,730 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,340 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 (599,730 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ź 281 wizyt
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 15 maja 2018 w PHP przez Alterwar Dyskutant (7,650 p.)
0 głosów
2 odpowiedzi 173 wizyt
pytanie zadane 3 lutego 2021 w SQL, bazy danych przez jakubjordanek Obywatel (1,320 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...