Ok, da lässt sich was mit anfangen:
Code: Alles auswählen
$sql = "SELECT u.user_id FROM " . USERS_TABLE . " u
LEFT JOIN " . PROFILE_FIELDS_DATA_TABLE . " pfd ON pfd.user_id = u.user_id
WHERE u.user_gender = {was du haben willst, z.b. per Variable} AND " . $db->sql_in_set('pfd.pf_orientierung', array({liste der Zahlen die zulässig sind}));
Punkt zwei könnte was schwieriger werden, das Datumsformat der Geburtstagsspalte scheint ein wenig seltsam zu sein, direkte größenvergleiche sind anscheinend so ohne weiteres nicht möglich (man kann zwar nach speziellen Jahren suchen aber Geburtstag A > Geburtstag B ? geht nur über die Abfrage beider Geburtstage und anschließenden Vergleich so wie ich das sehe).
Wenn du das mit obiger Abfrage kombinieren willst kannst du aber auch per PHP sortieren, indem du obige Abfrage machst, allerdings noch den Geburtstag mit abfragst. Dann kannst du den Geburtstag per [php:explode]('-', $geburtstag) in einer Schleife zerpflücken, solltest auf Monat und Tag [php:trim]() anwenden (in der DB stehen bei einstelligen Daten leerzeichen!), dann die Werte in der Reihenfolge Jahr Monat Tag mit führender Null bei einstelligen werten aneinander hängen und dann nach diesem Wert sortieren, hieraus kannst du dann den gewünschten Datumsbereich extrahieren durch Größenabfrage, z.b. grob so:
Code: Alles auswählen
foreach($array as $value => $key)
{
if($value >= $datum_anfang && $value <= $datum_ende)
{
//Mach was auch immer du willst mit diesem wert, er liegt im bereich
}
elseif($value > $datum_ende)
{
//Zu groß, da wir sortiert haben gilt das für alle folgenden Werte
break;
}
}