Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] wyszukanie rekordów które nie wystąpiły w konkretnej dacie, Lub inne rozwiązanie
Booster
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 24.06.2013
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam, posiadam 3 tabele z
ID - id usługi
ID_oso - id osoby
Data - data wykonania usługi

Potrzebuję znaleźć Osoby które miały wykonanie usługi w datach poniżej 2008 a nie miały wykonanych po 2008.

Czy ktoś może mi podpowiedzieć jaką funkcję/zapytanie mogę użyć do tego aby wyszukać tak wynik ? Lub jeśli ktoś ma inny pomysł na znalezienie tych osób to z chęcią wysłucham.

Jedyne co mi przychodzi aktualnie na myśl to
  1. SELECT 'id', 'id_oso', 'data' FROM `uslugi` WHERE DATA <= '01-01-2008'

Ale to wyświetli wyniki usług przed 2008 jak zamienię na => 01-01-2008 to wyświetli osoby które miały.
Problem Tkwi w tym że nie którzy po 2008 r nie mieli wpisywanych usług i wyświetlenie osób po 2008 które nie mają usług mija się z celem ponieważ wyświetli mi osoby które zostały dopiero co dodane a ja chce wyeliminować osoby które od 2008r nie odwiedzały firmy

Ew można znaleźć wszystkie osoby które zostały zarejestrowane przed 2008 r czyli zaznaczenie id i data_rej z innych tabel wtedy będą wyswietlon osoby zarej przed 2008 i jeszcze żeby przefitrowało i wyświetliło te osoby które NIE miały usług po 2008 roku o tak chyba bedzie najlepiej lecz jestem lajkiem i nie znam zapytan jakich mógłbym uzyć ...

Ten post edytował Booster 1.04.2014, 09:52:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rocktech.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

Ostrzeżenie: (0%)
-----


Witam.

1. Pole data jest typu DATETIME, DATE?
2.
  1. SELECT
  2. 'id', 'id_oso', 'data'
  3. FROM
  4. `uslugi`
  5. WHERE
  6. `data` BETWEEN '01-01-1970' AND '01-01-2008';
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(rocktech.pl @ 1.04.2014, 11:14:22 ) *
Witam.

1. Pole data jest typu DATETIME, DATE?
2.
  1. SELECT
  2. 'id', 'id_oso', 'data'
  3. FROM
  4. `uslugi`
  5. WHERE
  6. `data` BETWEEN '01-01-1970' AND '01-01-2008';


To nie zda egzaminu, bo wyświetli tylko osoby, które miały usługi przed 2008, a nie implikuje to faktu, że dane osoby nie mogły mieć usług po 2008 roku. Prawidłowe zapytanie:

  1. SELECT
  2. u.id_oso
  3. FROM uslugi u
  4. WHERE DATE(`data`) < '01-01-2008'
  5. AND id_oso NOT IN (SELECT id_oso FROM uslugi WHERE DATE(`data`) >= '01-01-2008');


Ten post edytował b4rt3kk 1.04.2014, 10:58:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 18:46