Mysql - returnér objekter med samme status i et interval

Tags:    mysql php

Jeg har to tabeller:

a) calendar / indeholder et timestamp m.m. for hver eneste dag i året

b) id_obj_dk / her haves diverse info om objekter og en relation til "calendar" med en status (type) for hver eneste dag i året. Staus (type) kan udelukkende have én status pr. dag - status kan have adskille forskellige værdier.

Problem: Jeg skal finde de objekter i "id_obj_dk" som har status "fr" for alle timestaps i "calendar" i en periode fra $date1_ts til $date2_ts.

Nedenstående sql udvælger objekter der minimum har ét timestamp med status 'fr' - selvom andre dage har en anden status. Jeg vil kun have returneret objekter hvor ALLE dage fra date1_ts til $date2_ts' er 'fr'.

SELECT id_object FROM obj_cal_dk, calendar
WHERE obj_cal_dk.id_calendar = calendar.id
AND '$date1_ts' <= ts_php
AND '$date2_ts' >= ts_php
AND type IN ('fr')
GROUP BY id_object

Er der nogen der er så venlige, at de vil redde min weekend?



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej Kristian,

For at kunne hjælpe dig skal vi bruge en oversigt over din table opsætning så vi kan se hvilke datatyper dine felter er.



Hej Mark

Jeg håber jeg har forstået dig korrekt - her er mine 2 berørte tabeller:

calendar
- id / INT(10)
- ts_php / timestamp for hver dag og gemt som INT(10))
- øvrige kolonner med indhold der ikke vedrører sql-udtrækket

obj_cal_dk
- id / INT(10)
- type / udlejningsobjektets status pr. dag/timestamp - enum('cl','fr','re')
- id_calendar / reference til calendar - INT(10)
- id_object / reference til mine udlejnings-objekter - INT(10)
- øvrige kolonner med info der ikke vedrører sql-udtrækket

Jeg ønsker at finde de id_object der har status "fr" for alle dage i et tidsinterval fra ts_php til ts_php.

Håber du kan hjælpe med en sql-query-løsning baseret på ovenstående data.

På forhånd mange tak for hjælpen

Mvh
Kristian



t