Hjælp til avanceret MySQL query
Hej eksperter.Jeg er igang med et større projekt hvor jeg ved en enkelt opgave skal lave en masse mysql arbejde for at returnere end row udfra en masse kriterier.
Min nuværende query ser således ud (kan også ses på http://paste.ideaslabs.com/show/t8DbVB9lYs):
SELECT id FROM questions WHERE
# Status skal være 0
status=0 AND
# Sproget skal være dansk
language='da' AND
# Køn skal være "a" for alle eller "m" for male
(questions.target_sex = 'a' OR questions.target_sex='m') AND
# 18 skal være inden for target min/max alder.
# hvis altså target_age_min og target_age_max ikke er lig 0
(
(questions.target_age_min=0 AND questions.target_age_max=0) OR
(questions.target_age_min <= 18 AND questions.target_age_max >= 18)
)
# Tabellen questions_geo_target ser således ud:
# question_id city
# 192 Ishøj
# 192 Taastrup
# 192 Brøndby
# ...
# Kriterie for returnering af question er:
# 1) Der er ikke nogle rækker i questions_geo_target med et question_id svarende til id kolonnen i tabellen questions
# eller
# 2) Hvis der er rækker, skal der kun returneres hvis questions_geo_target har en række med et question_id svarende
# til id kolonnen i tabellen questions og city svarende til 'Taastrup'
AND
# ????
# Kriterie for returnering af question er:
# Som lige ovenfor, tabellen hedder blot istedet for questions_categories og har samme struktur med question_id og category
# der er dog én forskel. Det ikke kun én kategori der er valid, men en liste af en eller flere kategorier der kan være i
# questions_categories tabellen.
Jeg mangler at udfylde de to sidste kriterier.
Jeg går ud fra at det er noget med at selecte fra de to andre tabeller og så lave noget group by og lignende. Jeg er dog usikker på hvordan jeg skal gribe det an.
Jeg KAN også lave tilsvarende direkte i min PHP kode, men desværre vil det påføre tusinder af sql kald (flere gange i minuttet!) hvilket ikke vil være en brugerbar løsning.
Jeg håber at der er en sql haj der kan hjælpe, hvis der er noget jeg skal uddybbe mere, så skriv endelig.
På forhånd tak
Mathias