Drøn svær SQL streng - Hjælp
Jeg har et kæmpe problem med en SQL sætning, der bare ikke vil som jeg vil. Sætningen skal vælge et tilfældigt picid fra en tabel picture, hvor følgende er gældende:picid'et der bliver valgt må ikke optræde i tabellen votes sammen med et sessionid der er lig med det pågældende sessionsid (altså sessionid != '" & SessionID & "')
Der ud over skal det gælde at det picid der bliver valgt skal have gender lig med variablen strGender i tabellen persons
Jeg fik for nogle uger siden følgende sql sætning her på eksperten, som desværre ikke virkede
SELECT picture.picid FROM picture LEFT JOIN votes ON picture.picid != votes.picid WHERE sessionid ="& sessionid &" ORDER BY RAND() LIMIT 0, 1;
Problemet med den er det jeg prøver at forklare herunder:
Hvis du forestiller dig at picture og vote indeholder følgende:
picture:
picid,pid,filename,ip,datetime
3, 1, IMG_3057.jpg, 127.0.0.1, 2003-01-28 14:30:55
6, 1, IMG_3062.jpg, 127.0.0.1, 2003-01-28 15:07:19
5, 1, IMG_3807.jpg, 127.0.0.1, 2003-01-28 14:32:03
7, 1, IMG_3058.jpg, 127.0.0.1, 2003-01-28 15:07:28
votes:
id,sessionid, picid, ip, vote, datetime
11, 884168892, 5, 127.0.0.1, 5, 2003-01-28 17:24:15
2, 581581830, 3, 127.0.0.1, 7, 2003-01-28 15:03:40
3, 884168884, 7, 127.0.0.1, 9, 2003-01-28 15:52:23
10, 884168892, 3, 127.0.0.1, 6, 2003-01-28 17:13:34
9, 884168890, 3, 127.0.0.1, 8, 2003-01-28 17:11:26
6, 884168888, 3, 127.0.0.1, 7, 2003-01-28 17:01:09
7, 884168888, 7, 127.0.0.1, 9, 2003-01-28 17:01:17
8, 884168888, 5, 127.0.0.1, 5, 2003-01-28 17:01:22
Hvis jeg kører førnævnte sql sætning og fjerner limit og sætter sessionid = 884168892, får jeg følgende resultat:
picid
7
3
5
6
6
7
Som du kan se, piller den kun de to records ud hvor sessionid er lig 884168892, men planen var at den skulle pille alle forekomster af picid ud, hvor picid er det samme som der hvor sessionid = 884168892 ud, så resultatet kun var:
picid
7
6
6
7
og så skulle den desuden også gerne kun tage en af hver slags, så det idelle resultat er:
picid
6
7
Håber det giver mening :-)