• 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
204 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 (7,550 p.)
Zamiast tabeli jokecategory do tabeli joke dodaj categoryID
komentarz 19 września 2018 przez Comandeer Mentor (454,620 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 (454,620 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 (182,630 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 (454,620 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 Gaduła (4,960 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ź 79 wizyt
0 głosów
1 odpowiedź 71 wizyt
pytanie zadane 28 stycznia w SQL, bazy danych przez Drax Użytkownik (630 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

63,334 zapytań

109,595 odpowiedzi

228,945 komentarzy

44,062 pasjonatów

Przeglądających: 257
Pasjonatów: 20 Gości: 237

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.

...