Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Selec case
Forum PHP.pl > Forum > Bazy danych > MySQL
koniol2
date urodzenia mam 1958 jak poprawnie zrobic casa

  1. SELECT YEAR(data_urodzenia),
  2. CASE
  3. WHEN (YEAR(CURDATE())- YEAR(data_urodzenia)) >= '18' >='29' THEN '1'
  4. WHEN (YEAR(CURDATE())- YEAR(data_urodzenia)) <= '30' <='39' THEN '2'
  5. WHEN (YEAR(CURDATE())- YEAR(data_urodzenia)) <= '40' <='49' THEN '3'
  6. WHEN (YEAR(CURDATE())- YEAR(data_urodzenia)) <= '50' <='59' THEN '4'
  7. WHEN (YEAR(CURDATE())- YEAR(data_urodzenia)) <= '60' THEN '5'
  8. END AS rok
  9. FROM `zapisy`
  10. WHERE id=1
nospor
normalnie, jak kazde inne warunki
....when (war1 and war2) then...
....when (war3 and war4) then...
..............
koniol2
zawsze dostaje 1 a powinienem 4 co mam zle
nospor
No a poprawiles jak ci napsialem? Bo to co maszw pierwszym poscie to jedno wielkie ZLE...

pozatym gdzie tu logika? Jesli wiek wiekszy od 18 i wiek wiekszy od 29...... Chyba bialo byc: jesli wiek wiekszy od 18 i wiek mniejszy od 29... nie sadzisz?
Ale masz to poprawic do tego co napisalem w pierwszym poscie.

I jak poprawisz i nadal nie bedzie dzialac, to masz pokazac kod po poprawkach a nie mamy sie domyslac co tam znowu natworzyles
koniol2
  1. SELECT YEAR(data_urodzenia),
  2. CASE (YEAR(CURDATE()- YEAR(data_urodzenia))
  3. WHEN ( >= '18' AND >='29') THEN '1'
  4. WHEN ( >= '30' AND >='39') THEN '2'
  5. WHEN ( >= '40' AND >='49') THEN '3'
  6. WHEN ( >= '50' AND >='59') THEN '4'
  7. WHEN ( > '60')THEN '5'
  8. END AS rok
  9. FROM `zapisy`
  10. WHERE id=1


cos takiego wymyslilem ale nie działa
nospor
wogole nie czytasz co sie do ciebie pisze.... Przeciez wyraznie napisalem, ze >18 and > 29 jest bez sensu!!!!!

  1. SELECT YEAR(data_urodzenia),
  2.  
  3. CASE
  4.  
  5. WHEN ( (YEAR(CURDATE())- YEAR(data_urodzenia)) >= 18 AND (YEAR(CURDATE())- YEAR(data_urodzenia)) <=29) THEN 1
  6. ANALOGICZNIE RESZTA
  7.  
  8. FROM `zapisy`
  9.  
  10. WHERE id=1
koniol2
Dzieki nospor jak by ktos potrzebował to daje całę zapytanie
  1. SELECT YEAR(data_urodzenia),
  2. CASE
  3. WHEN ( (YEAR(CURDATE())- YEAR(data_urodzenia)) >= 18 AND (YEAR(CURDATE())- YEAR(data_urodzenia)) <=29) THEN 1
  4. WHEN ( (YEAR(CURDATE())- YEAR(data_urodzenia)) >= 29 AND (YEAR(CURDATE())- YEAR(data_urodzenia)) <=39) THEN 2
  5. WHEN ( (YEAR(CURDATE())- YEAR(data_urodzenia)) >= 39 AND (YEAR(CURDATE())- YEAR(data_urodzenia)) <=49) THEN 3
  6. WHEN ( (YEAR(CURDATE())- YEAR(data_urodzenia)) >= 49 AND (YEAR(CURDATE())- YEAR(data_urodzenia)) <=59) THEN 4
  7. ELSE 5
  8. END AS rok
  9. FROM `zapisy`
  10. WHERE id=1
nospor
Zacznij troche myslec logicznie.

Skoro jeden warunek sie konczy na <=29
to drugi nie ma sensu by sie zaczynal od >=29. Ma sie zaczynac od >29. To są naprawde proste i logiczne rzeczy.
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.