Avatar billede pelskee Nybegynder
14. december 2004 - 12:26 Der er 13 kommentarer og
1 løsning

mit udtræk tager ikke alle profiler med

jeg vil gerne lave et udtræk til min side med profiler der viser billede, navn, fisk og kilo (det kunne være super fedt hvis udtræk på fisk kunne være random og den samme fisk for alle)

jeg har følgende problem. mit udtræk tager kun de profiler med som har rekorder tilknyttet sig fra recorder tabellen - den skal tage alle profiler med og bare vise rekord for dem som har. der er oprettet 7 profiler men den viser kun 2. Udtræk er ikke random på fisk(kan evt undværes)

mysql: "SELECT *  FROM web46248.profiler, web46248.rekorder, web46248.fisk  WHERE fiskID=IDfisk AND profilID=IDprofil  GROUP BY IDprofil  ORDER BY Navn ASC"

link: http://www.pikeinc.dk/profiler.asp

tabeller
fisk: IDfisk, Fisk, Vand
rekorder: IDrekord, profilID, Kilo, fiskID
profiler: IDprofil, Navn, Alder, Email, Billede
Avatar billede fennec Nybegynder
14. december 2004 - 12:44 #1
Så skal du bruge LEFT JOIN. Noget i denne stil.

SELECT * FROM profiler LEFT JOIN rekorder ON profilID=IDprofil LEFT JOIN fisk ON fiskID=IDfisk
Avatar billede pelskee Nybegynder
14. december 2004 - 12:54 #2
http://www.pikeinc.dk/profiler.asp

den gentager alt efter hvor mange rekorder man har. den skal kun vise 1 gang er det med LIMIT eller ?
Avatar billede fennec Nybegynder
14. december 2004 - 13:11 #3
Det kan måske klares i en enkelt select, men den bliver indviklet. Så vil jeg næsten anbefale at du laver loop i loop:

set rs = conn.execute("select * from profiler order by name")
do while not rs.eof
  set rs1 = conn.execute("select fisk.* from rekorder LEFT JOIN fisk ON fiskID=IDfisk where profilID="& rs("ID") &" LIMIT 1")
  if not rs1.eof then
    'Der er en fisk.
  else
    'Ingen fisk.
  end if
  rs.moveNext
loop
Avatar billede fennec Nybegynder
14. december 2004 - 13:14 #4
... Der var forkert:

set rs = conn.execute("select * from profiler order by navn")
do while not rs.eof
  set rs1 = conn.execute("select * from rekorder LEFT JOIN fisk ON fiskID=IDfisk where profilID="& rs("ID") &" LIMIT 1")
  if not rs1.eof then
    'Der er en fisk.
  else
    'Ingen fisk.
  end if
  rs.moveNext
loop
Avatar billede pelskee Nybegynder
14. december 2004 - 13:20 #5
"SELECT * FROM profiler LEFT JOIN rekorder ON profilID=IDprofil LEFT JOIN fisk ON fiskID=IDfisk GROUP BY IDprofil ORDER BY Navn ASC"

så virker det.
Avatar billede pelskee Nybegynder
14. december 2004 - 13:22 #6
hehe kan man skrive:
LEFT JOIN RANDOM fisk ON fiskID=IDfisk
eller er det hokus pokus kode
Avatar billede fennec Nybegynder
14. december 2004 - 13:29 #7
Normalt bruger man "order by rand()", når man vil lave et random udtræk. Det må så være noget med:

"SELECT * FROM profiler LEFT JOIN rekorder ON profilID=IDprofil LEFT JOIN fisk ON fiskID=IDfisk GROUP BY IDprofil ORDER BY Navn ASC, rand()"
Avatar billede pelskee Nybegynder
14. december 2004 - 13:32 #8
okay så kan det nok ikke. for det er fisk udtrækket jeg gerne ville have random
Avatar billede pelskee Nybegynder
04. januar 2005 - 14:28 #9
nogen gode ideer... ellers smid et svar så får du point :)
Avatar billede fennec Nybegynder
04. januar 2005 - 14:54 #10
Havde helt glemt dette ?.

Alt kan selvfølgelig lade sig gøre, også dette. Men her tror jeg du skal programmere dig ud af problemstillingen, så der skal laves en kombination af ASP og SQL-sætninger.

Ellers skal der laves nogle flere "niveauer" i SQL-sætningen, men lige netop der halter MySQL efter de andre databaser, så det er ikke engang sikkert det kan lade sig gøre (heller ikke i de andre).

Jeg vil meget gerne hjælpe med at finde en løsning, men må indrømme at det kommer til at tage for meget af min tid at løse (Det er første gang jeg har måtte indrømme det).

Det er ellers disse ?, der er sjove at klare. Så føler man virkelig man har hjulpet.
Avatar billede pelskee Nybegynder
04. januar 2005 - 15:04 #11
Tak for svar og hjælpen. Det er fair nok at du siger det. Vi dropper det bare.

Men kan du forklare om jeg skulle have struktureret min database anderledes eller gjort noget andet ?
Avatar billede fennec Nybegynder
04. januar 2005 - 15:10 #12
Strukturen er lavet på den eneste rigtige måde, så det skal du endelig ikke ændre på. Det er simpelthen lige dette udtræk, der er svært at lave.
Avatar billede pelskee Nybegynder
04. januar 2005 - 15:36 #13
okay. det er også ret hardcore med at trække 3 tabeller sammen og få de helt rigtige informationer ud :)

tak for din hjælp. den tager også alle profiler med ud nu, bare ikke helt som jeg ønskede det.
http://www.pikeinc.dk/profiler.asp
Avatar billede pelskee Nybegynder
04. januar 2005 - 15:46 #14
hvis du skulle få lyst til noget mere SQL stimulation har jeg også et problem i http://www.eksperten.dk/spm/571986 ;)
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