Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zliczenie godzin
Forum PHP.pl > Forum > Przedszkole
extremist
Cześć,

Mam takie zapytanie, które ma liczyć godziny userów, ale wyświetla każdemu taką samą ilość.
  1. SELECT clients.name, clients.lastname, clients.email, SUM(TIMESTAMPDIFF(hour, events.start, events.end)) hours FROM clients LEFT JOIN events ON clients.email=events.email WHERE MONTH(events.start)='01' AND YEAR(events.start)=2020 GROUP BY clients.name, clients.lastname, clients.email


Poradziłem sobie, natomiast mam inny problem.
Szukam zapytania które wyświetli mi wpisy, które mieszczą się w zakresie dwóch dat ale w dwóch kolumnach.
Tomplus
  1. WHERE NOW() BETWEEN date_start AND date_stop


Może tak ?
extremist
Działa smile.gif

Dzięki za odpowiedź.

Ostatni zakręt to dodatkowy SELECT w zapytaniu i błąd :



  1. SELECT * FROM clients WHERE email NOT IN (SELECT email FROM leaves WHERE start = '2020-02-15' OR end = '2020-02-15' OR '2020-02-15' BETWEEN start AND end) OR (SELECT email FROM events WHERE end = '2020-02-15 08:00:00') AND active = '3' ORDER BY rand() LIMIT 4


Zwraca: #1242 - Subquery returns more than 1 row.

Wyczytałem, że trzeba to zapiąć JOINEM, ale nie potrafię skleić tego w działającą całość
trueblue
Warunek dla OR ma zwracać jeden wiersz, teraz może zwracać więcej niż 1.

Sprawdź ogólnie nawiasy, bo wygląda, że cały warunek powinien być zbudowany inaczej i być może uproszczony.
extremist
To mówi mi błąd, tylko nie wiem jak to w takim razie zapisać aby było ok.

Ma pokazać userów których nie ma w tych dwóch tabelach z warunkami.
nospor
Zrob tych dwoch podzapytan z OR poprostu jeden UNION.
extremist
Faktycznie, czasami potrzeba wskazać drogę wink.gif

  1. SELECT * FROM clients WHERE email NOT IN (SELECT email FROM leaves WHERE start = '2020-02-15' OR end = '2020-02-15' OR '2020-02-15' BETWEEN start AND end UNION SELECT email FROM events WHERE end = '2020-02-15 08:00:00') AND active = '3' ORDER BY rand() LIMIT 4


Dzięki raz jeszcze
nospor
Takie pytanie na boku:

start = '2020-02-15' OR end = '2020-02-15' OR '2020-02-15' BETWEEN start AND end

czy nie wystarczy poprostu
'2020-02-15' BETWEEN start AND end
? Przeciez to powinno lapac dwa poprzednie warunki
Neutral
Co to za warunek, jeśli można zapytać? Nie jest przypisany do żadnej nazwy, czy coś, a nie widzę, żeby się odwoływał do czegokolwiek i robił cokolwiek.

  1. -- OR '2020-02-15'
nospor
@neutral przeciez to sie odnosi do BETWEEN ktore jest zaraz po
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.