Avatar billede danq Nybegynder
25. december 2003 - 16:40 Der er 35 kommentarer og
1 løsning

MYSQL udtræk

Hey!
Jeg har et problem som jeg håber i kan hjælpe mig med. Det drejer sig om et community jeg er igang med. Jeg skal hive en post ud fra min tabel der ikke er andre poster med samme value i feltet. Altså det vil sige jeg skal hive alle poster ud hvor der fx brugerID kun sidder på 1. Så brugerID ikke står på flere forskellige poster. Håber i forstår selvom det virker lidt indviklet. Hvordan skal min SQL sætning se ud?
MVH Danq
//Glædelig Jul!
Avatar billede eagleeye Praktikant
25. december 2003 - 16:44 #1
Det lyder som DISTINCT du skal havde fat på som kan bruges til at hendte en post ud af hver så :

SQL = "select distinct brugerID from tabelnavn"
Avatar billede danq Nybegynder
25. december 2003 - 16:46 #2
ikke lige det jeg søger. problemet er at det er til upload af billeder. altså bruger billeder. på forsiden har jeg så en top3 nye brugerprofiler.. så nytter det jo ikke hvis den henter en bruger frem som allerede har uploadet et billede for lang tid siden... andre muligheder?
Avatar billede ztyxx Nybegynder
25. december 2003 - 16:48 #3
hvis jeg forstår dg ret, er det så antallet af billeder du mener?
Avatar billede danq Nybegynder
25. december 2003 - 16:50 #4
nej.. hvert billede har 1 id.. billedeid. hver gang brugeren oploader et billede får posten et billedeid.. når jeg så skal hive 3 nyeste billedeprofiler ud skal jeg have alle de poster(LIMIT 0,3) hvor ownerid kun står 1 gang.. forstår du?
Avatar billede ztyxx Nybegynder
25. december 2003 - 16:51 #5
select * from tabel where ownerid = 1 ???
Avatar billede danq Nybegynder
25. december 2003 - 16:52 #6
nej for hver bruger har forskelligt id.. så hvis der fx er 10 poster. og brugerid nr 3 har uploadet 3 billeder.. så vil der være 3 poster med ham. ergo skal de 3 poster ikke hives ud. så den skal sortere alle dem fra hvor der er flere poster med samme ownerid.
Avatar billede eagleeye Praktikant
25. december 2003 - 16:53 #7
Kan du så ikke bare bruge order by brugerID ?
Avatar billede eagleeye Praktikant
25. december 2003 - 16:53 #8
Så den tager billedet for den 3 nyeste brugerID?
Avatar billede danq Nybegynder
25. december 2003 - 16:54 #9
nææ ikke lige.. for det skal bare være 3 nyeste BILLEDEprofiler.. dvs at hvis en "gammel" bruger uploader et billede skal han også tælles med som nyeste billedeprofil
Avatar billede danq Nybegynder
25. december 2003 - 16:54 #10
ved godt det virker lidt underligt det her spørgsmål.. :D
Avatar billede eagleeye Praktikant
25. december 2003 - 16:59 #11
og hvis en bruger er hurtig skal havd ikke hvade alle 3 pladser i top 3 ?
Avatar billede danq Nybegynder
25. december 2003 - 17:00 #12
lige præcis
Avatar billede danq Nybegynder
25. december 2003 - 17:06 #13
måske skulle jeg bare lave et nyt felt der hed "ny" og så bare sætte den til ja hver gang et nyt blev godkendt... men ville dette være en smart metode at bruge? synes det virker lidt abstrakt
Avatar billede eagleeye Praktikant
25. december 2003 - 17:10 #14
Ja du kunne også slette de gamle billedeid's når en bruger upload nye.

Denne SQL kan finde max billedeid for hver bruger:

SELECT brugerid, Max(billedeid) AS MaksOfbilledeid FROM tabelnavn GROUP BY brugerid
Avatar billede eagleeye Praktikant
25. december 2003 - 17:11 #15
og så lige en order by ;)

SELECT brugerid, Max(billedeid) AS MaksOfbilledeid FROM tabelnavn GROUP BY brugerid ORDER BY MaksOfbilledeid DESC
Avatar billede danq Nybegynder
25. december 2003 - 17:14 #16
hmm tror ikke helt du fatter hvordan min base fungerer... altså.. hver bruger tildeles et brugerid når de oprettes. Når de så uploader et billede bliver billedet tildelt et id. i basen bliver der så skrevet i en tabel der hedder ´privimg´ hvad brugerid og hvad id'et på billedet er. det jeg så vil er at vise på forsiden af hjemmesiden hvad de 3 nyeste billedeprofiler er uden er der vises en profil som allerede har været vist der mere end 1 gang
Avatar billede eagleeye Praktikant
25. december 2003 - 17:19 #17
Hvis du tilføjer limit 3 til den vælger den de 3 nyeste (største) billedeID'er samt deres tilhørne brugerID dog vil der ikke være to ens brugerID bland de 3 poster.  Du har skrevet at hvis man uploader det nye billeder svare det til at være ny bruger og det skal vises blandt de 3.

Var det ikke det du ville hvade?
Avatar billede danq Nybegynder
25. december 2003 - 17:21 #18
hmm nej.. tæt på. billedeid kan nemlig godt være det samme for 2 brugere... hver bruger har sit eget ´array´ af billedeid'er selvom det godt kan være ens med en anden brugers.. hehe... meget forvirrende
Avatar billede eagleeye Praktikant
25. december 2003 - 17:25 #19
Ok jeg stille lige et ny spørgsmål så...
Du vil havde de 3 nyeste fra tabellen privimg dog må et brugerID ikke indgå mere end en gang?

privimg har så 3 kolonner??
id (autoincrement) | brugerid | billedeid
Avatar billede danq Nybegynder
25. december 2003 - 17:26 #20
ja.. men et andet problem jeg lige har fundet ud af er hvis brugeren fx uploader 2 billeder i træk.. så vil ingen af dem jo blive vist da der jo så vil være mere end 1 post hvor brugerID indgår.. humm humm humm
Avatar billede eagleeye Praktikant
25. december 2003 - 17:29 #21
Den skulle gerne vælge den nyeste af de to hvor der er ens brugerID, hvis man har:
id,brugerid,billedeid
1    4      77
2    4      9

så vælger den billedeID 9 for brugerid 4 fordi det er den nyeste post.
Avatar billede danq Nybegynder
25. december 2003 - 17:30 #22
ja men hvad så hvis brugeren en måned efter uploader et billede.. så vil han igen komme til at stå under nyeste billedeprofiler.. og det vil jo være usandt da han har stået der 1 gang før
Avatar billede eagleeye Praktikant
25. december 2003 - 17:33 #23
Ja det vil han.
Avatar billede danq Nybegynder
25. december 2003 - 17:33 #24
hvad kan jeg så gøre?
Avatar billede eagleeye Praktikant
25. december 2003 - 17:36 #25
har du ikke skrevet før 25/12-2003 16:54:24 at hvis en gammel bruger uploader et billede skal det betraktes som en ny profil?

Hvis gamle profiler ikke skal vise så det jo er de måske order by brugerID igen??
Avatar billede danq Nybegynder
25. december 2003 - 17:37 #26
nej med det mente jeg at hvis en gammel profil som ikke havde uploadet billede før uploadede et skulle det betraktes som en ny billedeprofil
Avatar billede eagleeye Praktikant
25. december 2003 - 17:47 #27
Kan mysql finde ud af in opratoren?

SELECT brugerID,billedeID FROM privimg WHERE brugerID IN(SELECT brugerid FROM privimg GROUP BY brugerid HAVING Count(*)=1) ORDER BY id DESC limit 3

den vælger kun de brugerID som er en gang i tabellen privimg, hvis et brugerID er der emre end en gang så det ikke en "ny billede profil"
Avatar billede danq Nybegynder
25. december 2003 - 17:52 #28
har ikke lige testet sætningen men... hvad hvis en bruger uploader 2 billeder lige efter hinanden?
Avatar billede eagleeye Praktikant
25. december 2003 - 17:53 #29
så kommer den bruger ikke med.
Avatar billede danq Nybegynder
25. december 2003 - 17:54 #30
jamen.. det ska den jo.. :P hehe jeg er problematisk.. det skal gøres så at den bruger vises med 1 af billederne
Avatar billede eagleeye Praktikant
25. december 2003 - 17:54 #31
Nej for den bruger har uploaded mere end et billed ;)
Avatar billede danq Nybegynder
25. december 2003 - 17:54 #32
den godtager ikke sql sætningen
Avatar billede eagleeye Praktikant
25. december 2003 - 17:56 #33
Så er løsningen at lave en ny kolonne som er tilknyttet din bruger. Så du kan styre hvornår og hvornår en profil er en ny billede profil.
For nu er også noget timing inde i det.
Avatar billede danq Nybegynder
25. december 2003 - 17:57 #34
damn.. havde håbet på at jeg kunne komme uden om det.. well ok.. takker for tiden.. God jul...
Avatar billede danq Nybegynder
25. december 2003 - 17:57 #35
drop et svar så kommer der nogle points på bordet
Avatar billede eagleeye Praktikant
25. december 2003 - 18:00 #36
ok, tak og i lige måde ;)
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
Kurser inden for grundlæggende programmering

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