Avatar billede mathiash Nybegynder
26. april 2009 - 02:43 Der er 1 løsning

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
Avatar billede mathiash Nybegynder
23. februar 2010 - 23:45 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester