SQL: Styring af udtræk

Tags:    sql mysql php

Kære udviklere,

Jeg er igang med et projekt på min skole hvor jeg ud fra SQL vil trække nogle værdier ud fra forskellige tabeller. Nu vil jeg lige kort forklare hvad resultat jeg gerne vil have:

Du logger ind på sitet (igennem Facebook API). Dit billede bliver uploaded til hjemmesiden (ved tilladelse). Du kan nu stemme på andre billeder ved "Like" og "Dislike" mulighederne. Dit eget billede kan du ikke stemme på, så den henter kun billeder hvor dit Facebook ID ikke stemmer overens i databasen. Når du har stemt på et billede, kan du heller ikke stemme på det igen. Siden kalder vi for "HotOrNot" - gammel idé, og brugt før ;).

Dette skulle ellers være lige til.

Nu kommer problemet så
Vi henter billederne ud fra databasen, uden problemer. Den kan også adskille resultaterne ud fra dit Facebook ID, så det kun er billeder som ikke kommer fra en selv. Men problemet ligger i at vi også skal have "like" værdierne ud. Selve værdierne er ikke et problem lige nu, men at vi skal adskille sørge for at billeder man har stemt på ikke kommer med ud. Det virkede (næsten) tidligere, men i det der kommer flere stemmer på samme billede fra forskellige brugere, kan jeg stadig se billeder jeg har stemt på (men som andre også har stemt på).

Jeg har prøvet at udarbejde denne SQL streng:
Fold kodeboks ind/udSQL kode 


Den overstående SQL streng er ud fra mit Facebook ID.
Er der nogle der har en idé om hvordan man "smartest" kan gøre dette?

Mangler der noget kode, eller database struktur så sig endelig til :).



Indlæg senest redigeret d. 21.08.2012 10:02 af Bruger #16025
6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 13 karma
Sorter efter stemmer Sorter efter dato
Hvis nedestående kun giver dit eget billede, bør du nok tømme din likes tabel og se om det ikke skulle give et andet resultat.
Fold kodeboks ind/udKode 




Tror du kan slippe afsted med noget der ligner dette:
Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 21.08.2012 10:19 af Bruger #10216
Jeg har rettet SQL'en lidt til (som jeg formoder den skal se ud), og får dette resultat (SQL):

SQL
Fold kodeboks ind/udSQL kode 


Den viser sjovt nok kun ét billede, og det er ét jeg har stemt på tidligere.

Sådan ser strukturen ud:

Fold kodeboks ind/udKode 


Håber at det hjalp lidt :)



Tæt på, men likes.likes_fid NOT IN ( SELECT photos_id FROM photos WHERE photos.photos_fid = '1437406354') giver ingen mening: FacebookID != photos_id ?

Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 21.08.2012 10:52 af Bruger #10216
Nåå, min fejl :).

Det virker stadig ikke helt. Den henter sjovt nok kun mit eget billede ud. Det forstår jeg ikke helt.

En lille forklaring til strukturen:

Fold kodeboks ind/udKode 


Kan ikke helt se hvad der er galt. Den henter kun billedet hvor Facebook ID'et er det samme som brugeren der logger ind.



Jeg har tømt min `likes` -tabel, og afprøvet SQL'en du har postet (inde i phpMyAdmin). Den viser de tre billeder der eksisterer.

Resultat fra phpMyAdmin.


Det virker!!!
Tusind tak for hjælpen ;)

Resultat:

Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 21.08.2012 12:25 af Bruger #16025
t