Toon posts:

[query] sorteren op tijd_start en tijd_end

Pagina: 1
Acties:

Verwijderd

Topicstarter

Edit:
Vergeten te melden dat het om PHP icm MySQL gaat...


Aan de hand van data in een db-tabel wil ik rijen weer gaan geven op een pagina.
Ik wil de namen van personen weergeven. Maar eerst moet gekeken worden of die persoon wel 'actief' is. Iemand is actief als de tijd_start kleiner is dan de huidige datum en als de tijd_end groter is dan de huidige datum.

De rijen namen moeten, onder elkaar, als volgt weergegeven worden:
- eerst alle namen die actief zijn, gesorteerd op id van laag naar hoog.
- dan alle namen die niet meer actief zijn, gesorteerd op id van laag naar hoog.

Kan ik dit uberhaubt wel met een query doen of moet ik eerst alles uitlezen, in een array zetten en vervolgens echo'en??

De tabel ziet er (ongeveer) zo uit:

idnaamtijd_starttijd_end
4karel1064733154 (gisteren ergens)1064920000 (morgen ofzo)
5johan1064660000 (eer-gisteren ergens)1064733154 (gisteren ergens)


Ik heb echt geen idee of dit wel kan met 1 query of dat ik dit eerst in een tijdelijke array moet zetten oid... Of wellicht met meerder Query's, dat kan ook altijd natuurlijk..

(omdat ik even innitiatief wil tonen zet ik hier een foute oplossing neer met 2 query's)
'Foute oplossing:'

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$query_Actief = 
"
SELECT
    naam
FROM
    tabelnaam
WHERE
    tijd_start < '" . time() . "'
AND
    tijd_end > '" . time() . "'
ORDER BY
    id
DESC
";

// en vervolgens deze:

$query_Niet_Actief = 
"
SELECT
    naam
FROM
    tabelnaam
WHERE
    tijd_start > '" . time() . "'
OR
    tijd_end < '" . time() . "'
ORDER BY
    id
DESC
";

[ Voor 35% gewijzigd door Verwijderd op 29-09-2003 12:14 ]


Verwijderd

Welk datatype zijn tijd_start en tijd_end ? Numeriek of alphanumeriek ?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Zoiets?
SQL:
1
2
3
4
5
select naam, 
case when (tijd_end < time() or tijd_start > time()) = 0 
then 'Actief' 
else 'Inactief' as actiefheid 
order by actiefheid, id;

ik ben al 2 dagen SQL aan het leren ondertussen ;)

[ Voor 9% gewijzigd door curry684 op 29-09-2003 12:23 ]

Professionele website nodig?


  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 26-05 23:44

Jurgle

100% Compatible

In Ivy's foute oplossing, moet ID sowieso ASC worden ge-ORDER-BY-ed i.p.v. DESC. En je hebt de grensgevallen niet (het geval dat time() gelijk is aan start of end)

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant