![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Dość prosty problem.
Dwie tabele: Pierwsza tabela trening, data + numer treningu w danym dniu. Druga tabela to obecność, data + numer treningu (i kolejne obecności osó ![]() Teraz jak fajnie sprawdzić ile mam takich treningów dla których obecność nie została sprawdzona. Koncepcyjnie to wygląda tak, że jak mamy datę i dany numer treningu, i nie ma ani jednego (nie interesuje nas ile ich jest) analogicznego wiersza w tabeli obecności to mamy jeden brak. Próbuje z JOINami ale na razie wychodzą mi straszne potworki. W samym PHP było by to banalne do zrobienia ale dość często to będzie wykonywane dlatego chciałbym optymalnie to napisać. -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, mniej więcej o to chodzi ale to by było za proste.
Bez grupowania dubluje treningi. Na razie mam coś takiego:
Ale troszkę przymula, a rekordów jeszcze dużo nie ma :/ (bez COUNT bo jednak muszę też pobrać, policzę już w PHP). -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Musisz mieć klucze na polach dla których robisz łączenia
Generalnie powinno wystarczyć łączenie po dacie i nr. treningu |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tylko jedna mała uwaga. Najlepiej, abyś we WHERE ... IS NULL podawał pole po którym łączysz. Może się zdarzyć, że podasz tam pole NOT NULL i wynik wcale nie będzie prawdziwy. Gdy podasz pole, po którym łączysz nie ma szans by się coś takiego przydarzyło...
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
No raczej mało możliwe aby ID (Auto increment) było NULL
![]() Ale uwaga słuszna. Co do indeksów - wystarczył indeks podwójny na dacie i numer treningu w tabeli obecności (indeks w tabeli treningów już nic nie zmieniał). Dzięki. edit: Jeżeli mówiłeś o tym łączeniu w kontekście że w JOINie nie jest potrzebne " `training_schedule`.`team_id` = `presence`.`team_id`" to nie masz racji - wtedy połączy obecności z danego dnia i treningu z obecnościami innej drużyny (numer treningu to nie id a tylko określenie który trening w dniu). Ten post edytował markonix 8.05.2014, 19:25:52 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 14:00 |