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

Relacyjna baza danych

0 głosów
100 wizyt
pytanie zadane 26 sierpnia 2018 w SQL, bazy danych przez Darek_ppp Początkujący (280 p.)

Stworzyłem bazy danych:

osoby(id, imię, nazwisko)

budowy(id, adres, kierownik, pracownik)

Relacje to:

budowy.kierownik=osoby.id

budowy.pracownik=osoby.id

SELECT osoby.nazwisko, osoby.nazwisko FROM osoby, budowy WHERE budowy.id=1 AND budowy.kierownik=osoby.id AND budowy.pracownik=osoby.id

Tylko jak rozróżnić, że pierwsze nazwisko ma być kierownika, a drugie pracownika?

1 odpowiedź

0 głosów
odpowiedź 26 sierpnia 2018 przez damian9901 Bywalec (2,160 p.)

Poleciłbym lekkie zmodernizowanie twojej bazy na coś takiego:

osoby
-------
idOsoby,
imię,
nazwisko,

budowy
---------
idBudowy,
adres,
idOsoby ( Foreign Key - klucz obcy ),
stopień ( bądź coś podobnego, gdzie umieścisz tekst typu kierownik/pracownik)

 

komentarz 26 sierpnia 2018 przez Darek_ppp Początkujący (280 p.)

Ok. Tak też można.

Ale jak bym miał wyścig żużlowy to bym chciał w jednym rekordzie mieć: nr biegu i 4 zawodników...?

Zuzlowcy
------------
Id
Nazwisko


Wyscigi
------------
Id
Nr_biegu
Zawodnik1
Zawodnik2
Zawodnik3
Zawodnik4

Relacje:

Zawodnik1=Zuzlowcy.Id
Zawodnik2=Zuzlowcy.Id
Zawodnik3=Zuzlowcy.Id
Zawodnik4=Zuzlowcy.Id

 

komentarz 26 sierpnia 2018 przez damian9901 Bywalec (2,160 p.)
Zakładając, że zawsze ta liczba zawodników wynosząca 4, się nie zmieni i nie będzie ich więcej, to tak. W przypadku, gdy ta liczba będzie się zmieniała, warto tutaj zastosować to, o czym wspomniałem wyżej. Minusem tego będzie większa liczba rekordów w bazie.
komentarz 26 sierpnia 2018 przez Darek_ppp Początkujący (280 p.)

Ale jak to zakodować? Chcę wyciągnąć nazwisko np 1 i 3 zawodnika z biegu 3?

SELECT Zuzlowcy.Nazwisko, Zuzlowcy.Nazwisko FROM Zuzlowcy, Wyscigi WHERE Wyscigi.Zawodnik1=Zuzlowcy.Id AND Wyscigi.Zawodnik2=Zuzlowcy.Id AND Wyscigi.Zawodnik3=Zuzlowcy.Id AND Wyscigi.Zawodnik4=Zuzlowcy.Id AND Wyścigi.Nr_Biegu=3

Problemem są komendy pomiędzy SELECT a FROM - jak rozróżnić o którego żużlowca chodzi?

komentarz 27 sierpnia 2018 przez Darek_ppp Początkujący (280 p.)
SELECT z1.Nazwisko, z3.Nazwisko FROM Zuzlowcy=z1, Zuzlowcy=z2, Zuzlowcy=z3, Zuzlowcy=z4 Wyscigi WHERE Wyscigi.Zawodnik1=z1.Id AND Wyscigi.Zawodnik2=z2.Id AND Wyscigi.Zawodnik3=z3.Id AND Wyscigi.Zawodnik4=z4.Id AND Wyścigi.Nr_Biegu=3

Znalazłem . Rozwiązaniem są aliasy.

Podobne pytania

0 głosów
0 odpowiedzi 67 wizyt
pytanie zadane 20 grudnia 2018 w SQL, bazy danych przez lewy Obywatel (1,260 p.)
0 głosów
2 odpowiedzi 154 wizyt
0 głosów
1 odpowiedź 97 wizyt
pytanie zadane 2 czerwca 2016 w SQL, bazy danych przez hiper007 Stary wyjadacz (10,860 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

64,924 zapytań

111,391 odpowiedzi

234,424 komentarzy

46,754 pasjonatów

Przeglądających: 251
Pasjonatów: 13 Gości: 238

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.

...