![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabele drużyny:
Id_druzyny -> nazwa i Tabele terminarz: Id->id_drużyny_home > id_drużyny_away Czy da radę wyświetlić jednym zapytaniem zawartość terminarza podmieniajac id_drużyny_away i id_drużyny_home na nazwę z tabeli druzyna? Home i away jest w relacji z id_drużyny. Czy zrobić to w dwoch zapytaniach? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jedno zapytanie i to sie robi przy pomocy JOIN. W tym wypadku najlepiej LEFT JOIN
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W tym wypadku dwa LEFT JOIN. Jeden na druzyne home a drugi na away
i w select w podaj aliasy na name z kazdego jOINa bo ci sie wprzeciwnym wypadku nadpisza |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Coś takiego?
.. czyli wywołując mogę aliasem (jak niżej) a nie $wiersz['nazwa'] dwa razy?
Ten post edytował djtomaszq 27.07.2016, 09:09:25 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, dokładnie. Choc ja osobiscie bym uzyl LEFT JOIN zamiast JOIN. Zawsze to bezpieczniej jak z jakiegos powodu zniknie ci rekord z tabeli druzyna
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Hmm czyli jeśli zrobie LEFT JOIN to jak mi z tabeli druzyny zniknie w np. 2 id nazwa="Legia" to w kodzie w tym miejscu pokaże mi się napis "NULL" ? a jeśli ta sama sytuacja będzie w samym JOIN to wyskoczy błąd ?
.. i czy jeśli dodam tabele "kolejka" -> id/kolejka/id_pauza/data gdzie "id_pauza' to będzie id druzyny z tabeli druzyny to tak samo muszę zrobić alias pausa, JOINA i wywoływać $wiersz['pauza'] ? Ten post edytował djtomaszq 27.07.2016, 10:42:26 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Hmm czyli jeśli zrobie LEFT JOIN to jak mi z tabeli druzyny zniknie w np. 2 id nazwa="Legia" to w kodzie w tym miejscu pokaże mi się napis "NULL" ? a jeśli ta sama sytuacja będzie w samym JOIN to wyskoczy błąd ? Tak, z LEFT JOIN dostaniesz NULL. Z samym JOIN nie bedziesz mial bledu zapytania, ale tez nie pobierze ci rekordu z tabeli terminarz jesli nie bedzie istnialo zlaczenie.Co do pauza to tak jak napisales |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Coś zrobiłem źle..
ani tak. "SELECT kolejka.*, terminarz.*, alias1.nazwa as home, alias2.nazwa as away alias3.nazwa as pauza FROM kolejka, terminarz LEFT JOIN druzyna alias1 ON alias1.id = terminarz.id_druzyny_home LEFT JOIN druzyna alias2 ON alias2.id = terminarz.id_druzyny_away LEFT JOIN druzyna alias3 ON alias3.id = kolejka.id_pauza" błąd taki
ale kolumna istnieje i zadeklarowałem ją.. Ten post edytował djtomaszq 27.07.2016, 11:04:55 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale z czym sie laczy kolejka i co to w ogole jest? Jestem laikiem sportowym (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Tabela "kolejka" zawiera id tej kolejki, nazwe kolejki itd. a id_pauze to jest druzyna która puzuje i ma relacje w tabeli drużyny z id i chciałem żeby zamiast id_pauze pokazywało jej odpowiednik nazwy z tabeli druzyny kolumny "nazwa"
a ta tabela ogolnie zawiera wiersze po 1 kolejce meczy, po 2 kolejce meczy itd id - kolejka - sezon - id_pauze - data 1 - 1 - 1 - 6 - 12/12/2016 2 - 2 - 1 - 9 - 19/12/2016 3 - 3 - 1 - 3 - 26/12/2016 4 - 4 - 1 - 10 - 02/01/2017 Ten post edytował djtomaszq 27.07.2016, 11:30:04 |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale jak sie ma kolejka do teminarza? Bo teraz to nie ma sensu dla mnie
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
W terminarzu jest kolumna id_kolejki i relacja z id w tabeli kolejka
To pokazuje w jakiej kolejce grają druzyny z tego wiersza tabeli |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A, teraz to ma sens
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 192 Pomógł: 0 Dołączył: 5.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Czyli mój błąd polegał na tym, że nie zrobiłem przypisania 4 linijki... (?)
HM a dlaczego mi nie działało jak robiłem to w WHERE kolejka.id = terminarz.id_kolejki Twóją 4 linijkę z powyższego postu ? Czy jak się JOIN używa to tylko tego trzeba? .. i czy jest w mysql coś takiego co z powyższego zapytania wyświetli mi tylko raz jeden rekord który się powtarza? np. w tabeli terminarz nazwa każdej kolejki pokazuje się 6 razy tak samo data no bo jest tak przypisana w bazie a chce żeby tylko wyświetliła się raz na górze potem wszytkie 6 wierszy z różnymi druzynami które grają miedzy sobą i po 6 wierszach nastepny numer kolejki i kolejne 6 wierszy itd. czy to już muszę kombinować w php z pętlami i warunkami ? .. bo ogólnie wyświetlam wszystko tak:
|
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Czyli mój błąd polegał na tym, że nie zrobiłem przypisania 4 linijki... (?) takCytat HM a dlaczego mi nie działało jak robiłem to w WHERE kolejka.id = terminarz.id_kolejki Twóją 4 linijkę z powyższego postu ? Czy jak się JOIN używa to tylko tego trzeba? Poniewaz gdy masz kilka tabel w FROM to wszystkie tabele we FROM musza byc w nawiasie. W przeciwnym wypadku tylko ostatnia jest widziana w sekcjach JOINCytat i czy jest w mysql coś takiego co z powyższego zapytania wyświetli mi tylko raz jeden rekord który się powtarza? Obrobka w phphttp://nospor.pl/grupowanie-wynikow.html |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:10 |