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

Jak napisać relację

0 głosów
217 wizyt
pytanie zadane 19 września 2018 w SQL, bazy danych przez molik Użytkownik (520 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 12david12 Dyskutant (9,980 p.)
Zamiast tabeli jokecategory do tabeli joke dodaj categoryID
komentarz 19 września 2018 przez Comandeer Mentor (460,880 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 Mentor (460,880 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 (186,890 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 Mentor (460,880 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,000 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ź 85 wizyt
0 głosów
1 odpowiedź 97 wizyt
pytanie zadane 28 stycznia w SQL, bazy danych przez Drax Użytkownik (630 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

66,364 zapytań

113,102 odpowiedzi

239,387 komentarzy

46,621 pasjonatów

Przeglądających: 271
Pasjonatów: 12 Gości: 259

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...