Avatar billede gadebarnet Nybegynder
13. april 2005 - 11:32 Der er 21 kommentarer

sql sætnings hjælp.

Jeg har et problem...

select * from tbl_billeder where tbl_billeder.str_dato='16-02-2005' and str_sted=13

Den køre fint nok, og hastigheden er fin...

Men når jeg køre denne for hver post i den øverste så tager det 14 sekunder

select * from tbl_billeder_bruger where str_billede_uniqueid = 152985


Den henter max 50 poster fra den øverste, så jeg kan ikke forstå det...

str_billeder_uniqueid fra nummer 2 kommer fra nummer 1


Siden der kan være flere i nummer 2 kan jeg ikke joine dem... eller hvad ?
Avatar billede erikjacobsen Ekspert
13. april 2005 - 11:34 #1
50 forespørgsler tager sin tid.

Du kan i stedet for lave een, der henter alle 50 (her kun 3)

select * from tbl_billeder_bruger where str_billede_uniqueid in (152985,152980,152989)
Avatar billede gadebarnet Nybegynder
13. april 2005 - 11:36 #2
Der kommer noget data fra nummer 2 som jeg skal bruge, og der kan være flere til hver fra nummer 1?

er det til at forstå?
Avatar billede dbangx Nybegynder
13. april 2005 - 11:37 #3
du burde da ku bruge denne!

select * from tbl_billeder, tbl_billeder_bruger
where tbl_billeder.str_dato='16-02-2005' and
str_sted=13 AND
tbl_billeder.str_billeder_uniqueid = tbl_billeder_bruger .str_billeder_uniqueid
Avatar billede erikjacobsen Ekspert
13. april 2005 - 11:47 #4
"er det til at forstå?" - nej ;)
Avatar billede gadebarnet Nybegynder
13. april 2005 - 12:11 #5
tror ikke helt du forstår.

Jeg har nogle billeder i tbl_billeder

Til hvert billede er der nogle brugere i tbl_billeder_bruger

Hvad enten der er 1 eller flere i tbl_billeder_bruger skal billedet kun komme 1 gang men alle post's fra tbl_billeder_bruger skal med...

forstår du det nu?
Avatar billede dbangx Nybegynder
13. april 2005 - 12:34 #6
hmmm ... ville det ikke være en ide at undgå stjernen så?

Du selecter det du skal bruge i stedet:

select [alt-andet end billededata] from tbl_billeder bi, tbl_billeder_bruger br
where tbl_billeder.str_dato='16-02-2005' and
str_sted=13 AND
tbl_billeder.str_billeder_uniqueid = tbl_billeder_bruger .str_billeder_uniqueid.

På den måde slipper du før den tidskærvende process. Så kan du hente billederne seperat bagefter
Avatar billede ldanielsen Nybegynder
13. april 2005 - 12:36 #7
Hvis der kun må komme én post for hvert billede, så kan der jo også kun komme én bruger:

Billede    Bruger
img1      Knud
img1      Hans
img2      Peter

Forstår du?

Så der er to muligheder:

Du kan loope billederne igennem, og så hente en brugerliste for hvert billede, det er det du har gang i nu, ikke?

Du kan hente både billeder og brugere, og så bliver det som jeg har vist ovenfor. Det er helt klart den metode jeg vil bruge. Du siger at billedet kun må komme én gang, kan du ikke acceptere at det kommer flere gange? Hvis du sørger for at sortere efter billedets unikke id, så kan du loope gennem dataene, og så ved du at der kun kommer et nyt billede når id'et skifter.

Eller du kan skrive en funktion der henter en kommasepareret liste over brugere. Denne metode kan også godt blive tung.
Avatar billede ldanielsen Nybegynder
13. april 2005 - 12:37 #8
Undskyld, tre muligheder :o)
Avatar billede gadebarnet Nybegynder
13. april 2005 - 12:41 #9
Jeg kan godt følge dig... Men jeg bruger noget:

  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
while Not rs.EOF And intRecCount >

til at lave visninger pr side,og det vil jo så gå i koks...? eller hvad?
koden er:

---
sql = "select * from tbl_billeder where  tbl_billeder.str_dato='"&str_dato&"' and str_sted="&request("str_id")&""
response.write sql
Set Rs = Server.CreateObject("ADODB.RecordSet")

Rs.Open SQL, Conn, 1
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If









response.write "<table cellpadding=0 cellspacing=8>"
i = 0
if request("str_page") = "" then rs.PageSize = 10 else rs.PageSize = request("str_page")
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
while Not rs.EOF And intRecCount > 0



mark = ""
mark1 = ""

'sql = "select tbl_billeder_bruger.str_id from tbl_billeder_bruger left join tbl_profil on tbl_billeder_bruger.str_profil_id = tbl_profil.str_id where str_billede_id='"&rs("str_id")&"'"
sql = "select str_profil_id,str_position from tbl_billeder_bruger where str_billede_uniqueid = "&rs("uniqueid")&""
set rs1 = conn.execute(sql)


sql = "select * from tbl_billeder_bruger where str_billede_id='"&rs("str_id")&"'"
set rs1 = conn.execute(sql)
while not rs1.eof
if len(rs1("str_profil_id")) <> 0 then
sql = "select * from tbl_profil where str_id='"&rs1("str_profil_id")&"'"
set rs2 = conn.execute(sql)
p = "pic2.gif"
if len(rs1("str_tekst")) <> 0 then pp = "<img style=cursor:hand; src=images/pic3.gif alt='"&rs1("str_tekst")&"'>" else pp = ""
mark = mark & "<div style='position:absolute;left: "&round(rs1("str_position"))&"%; top: 3;' ><img src=images/"&p&">"&pp&"</div>"
else
p = "pic1.gif"
if request("mak") = 1 and changesex(rs1("str_køn")) = getsex(session("str_id")) then
mark = mark & "<div style='position:absolute;left: "&round(rs1("str_position"))&"%; top: 3;cursor:hand;' onclick=""displayWindow('makering.asp?mode=opret&str_id="&rs1("str_id")&"','markering',300,150,'scroll=off','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no');""><img src=images/"&p&"></div>"
else
mark = mark & "<div style='position:absolute;left: "&round(rs1("str_position"))&"%; top: 3;' ><img src=images/"&p&"></div>"
end if
end if
rs1.movenext
wend
rs1.close












if i = 0 then response.write "<tr>"
response.write "<td>"
response.write pic_border("<img src='thump.aspx?imagefilename=/storage/ibyen/"&request("str_id")&"/"&str_dato&"/"&rs("str_id")&""&rs("str_ext")&"&SizeConversionType=Type7'>",74,74)
response.write "<div style='position: relative; width: 100%; height: 12px;'>"&mark&"<br>"&mark1&"</div>"
response.write "</td>"
if i = 6 then response.write "</tr>"
i = i + 1
if i = 6 then i = 0
intRecCount = intRecCount - 1
rs.movenext
wend
response.write "</table>"

response.write "<form action=stederbilleder.asp name=forms method=post>" & vbcrlf
response.write "<input type=hidden name=str_id value="&request("str_id")&">"
response.write "<input type=hidden name=str_type value="&request("str_type")&">"
response.write "<input type=hidden value='' name=page>" & vbcrlf
response.write "<input type=hidden name=str_dato value="&request("str_dato")&">"
response.write "<input type=hidden name=str_page value="&request("str_page")&">"

If intPage > 1 Then
response.write "<input type=button value=tilbage onclick=self.forms.page.value='"&intPage - 1&"';self.forms.submit();>" & vbcrlf
Else
response.write "<input disabled type=button value=tilbage onclick=self.forms.page.value='"&intPage - 1&"';self.forms.submit();>" & vbcrlf
End If
If intRecCount = 0 And Cint(intPage) < Cint(intPageCount) Then
response.write "<input type=button value=næste onclick=self.forms.page.value='"&intPage + 1&"';self.forms.submit();>" & vbcrlf
Else
response.write "<input disabled type=button value=næste onclick=self.forms.page.value='"&intPage + 1&"';self.forms.submit();>" & vbcrlf
End If




response.write "</form>"
---


Kan du følge mig ?
Avatar billede janus_007 Nybegynder
13. april 2005 - 12:42 #10
Jeg kommer lige ind fra højre... Det lyder som en relativ nem og overkommelig opgave, kunne jeg ikke få dig til at poste dit tabel design og fortæller om relationerne?
Avatar billede gadebarnet Nybegynder
13. april 2005 - 18:03 #11
Jo da.


tbl_billeder
tbl_billeder_bruger
tbl_profil

realationer=

tbl_billeder.str_id = tbl_billeder_bruger.str_billede_id
tbl_billeder_bruger.str_profil_id = tbl_profil.str_id

Jeg har syntes det går lige langsomt nok...
Avatar billede janus_007 Nybegynder
13. april 2005 - 18:47 #12
Okay.. Nu er jeg lidt bedre med. Som jeg forstår det så vil du have at for hver bruger du har, skal der vises et billede. Det kunne evt. være det nyeste, som i nedenstående:

select * from tbl_billeder b
inner join
(select max(str_billede_id) as bid, profil_id from tbl_billeder_bruger bb
group by profil_id) as maxbillede
on b.str_id = maxbillede.bid
inner join tbl_profil p
on p.str_id = maxbillede.profil_id

Jeg har valgt at vise en beskrivelse istedet for billede, men det kan du jo selv lige tilpasse.

Nu ved jeg ikke lige om datatyperne og feltnavnene er korrekte osv... Men den select giver dig nyeste billede pr.bruger
Avatar billede gadebarnet Nybegynder
13. april 2005 - 18:50 #13
Det er heller ikke korrekt... :)

tbl_billeder (billeder)
tbl_billeder_bruger (brugeres markeringer på hvert billede)
tbl_profil (profiler)

Nu laver vi en do loop som vi leget tager alle billeder...

do

her skal den så ned i tbl_billeder_bruger og køre en ny do loop for hver billede... dvs. der kan være flere markeringer pr billede...


loop
Avatar billede gadebarnet Nybegynder
13. april 2005 - 18:51 #14
for 50 billeder tager det 5,3 sekunder at søge igennem bruger placeringer...
er det ikke langsomt?
Avatar billede janus_007 Nybegynder
13. april 2005 - 19:06 #15
Oki.. jeg fatter simpelthen ikke en meter tilsyneladende.

Du vil have brugernes markeringer tager et billede frem fra tbl_billeder og hvad er det for en slags markering? Om det skal vises eller ej eller en kommentar... ? Rite?? Og hvad vil du bruge profil til så?

Og jo 5.3 sek er alt for sløvt :O)
Avatar billede gadebarnet Nybegynder
13. april 2005 - 19:11 #16
ok...

I tbl_billeder_bruger har jeg f.eks 4 placeringer, men position og profil_id på den bruger der er markeret på billedet... tbl_profil bruges kuntilat på profilen's navn.

Forstår du det nu ???
Avatar billede janus_007 Nybegynder
13. april 2005 - 19:39 #17
hmm det vil altså sige at for hvert billede (og der kan være flere, men er det korrekt forstået at det nyeste billede vises?), så skal der også tilknyttes samtlige positioner fra brugeren?
Avatar billede gadebarnet Nybegynder
13. april 2005 - 20:03 #18
det med hvilke post's der skal hentes fra tbl_billeder har jeg styr på... Den er sql sætningen der kommer inde i den..
Avatar billede janus_007 Nybegynder
13. april 2005 - 22:15 #19
Ok.. men svar lige på mit foregående spørgsmål :O)
Avatar billede gadebarnet Nybegynder
13. april 2005 - 22:37 #20
Hvad er spørgsmålet?
Avatar billede janus_007 Nybegynder
14. april 2005 - 09:53 #21
hmm det vil altså sige at for hvert billede (og der kan være flere, men er det korrekt forstået at det nyeste billede vises?), så skal der også tilknyttes samtlige positioner fra brugeren?
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