Jag har en databas med två tabeller i den ena persondata och i den andra datorer. Personernas unika ID finns också datorlistan där det står vilka datorer dom har och hur snabba dom är. Nu till frågan hur ska det SQLstatement som tar fram namnet(persontabellen) och den SNABBASTE datorn dom har(datortabellen)? >Jag har en databas med två tabeller i den ena persondata och i den >andra datorer. Personernas unika ID finns också datorlistan där det >står vilka datorer dom har och hur snabba dom är. Nu till frågan hur >ska det SQLstatement som tar fram namnet(persontabellen) och den >SNABBASTE datorn dom har(datortabellen)? hmm det funkade inte så här blev mitt försök men den gillar den inte heller Detta bör funka... det fungerade.. nästan :) Det fungerade :) Man skall väl inte svara på sina egna grejor, men...Knepig SQLstatment
SELECT * FROM person,dator WHERE person.personid=dator.personid and ?Sv: Knepig SQLstatment
>
>SELECT * FROM person,dator WHERE person.personid=dator.personid >and ?
Borde väl bli något i stil med:
SELECT MAX(dator.processor), person.namn, person.id
FROM person, dator
WHERE person.personid=dator.personid
GROUP BY person.id
Har inte hållt på med SQL på ett tag... men känns som om det borde bli något åt det hållet.
//EmmaSv: Knepig SQLstatment
ExeStrang="SELECT person.*, MAX(dator.cpu_mhz) FROM person,dator WHERE person.idperson=dator.idperson GROUP BY person.idpersonSv: Knepig SQLstatment
SELECT DeriveradTabell.Processor, person.Namn
FROM person INNER JOIN
(SELECT MAX(dator.processor) AS Processor , person.id
FROM person INNER JOIN dator
ON person.personid=dator.personid
GROUP BY person.id) DeriveradTabell
ON person.id = DeriveradTabell.idSv: Knepig SQLstatment
dom stackars som inte har någon dator kommer inte att visas alls och dom måste också vara med...
SELECT dator.cpuklockad_mhz, person.* FROM person INNER JOIN (SELECT MAX(dator.cpuklockad_mhz) AS cpuklockad_mhz , person.idperson FROM person INNER JOIN dator ON person.idperson=dator.idperson GROUP BY person.idperson) dator ON person.idperson = dator.idperson ORDER BY dator.cpuklockad_mhzSv: Knepig SQLstatment
bytte inner join mot left join eftersom inner tar bara med det som finns i båda tabellerna medans left vad jag förstår prioriterar den vänstra
SELECT dator.cpuklockad_mhz, person.* FROM person LEFT JOIN (SELECT MAX(dator.cpuklockad_mhz) AS cpuklockad_mhz , person.idperson FROM person INNER JOIN dator ON person.idperson=dator.idperson GROUP BY person.idperson) dator ON person.idperson = dator.idpersonSv: Knepig SQLstatment
detta är enklare och mer som du ville ha det...
SELECT DeriveradTabell.Processor, person.Namn
FROM person LEFT OUTER JOIN
(SELECT MAX(processor) AS Processor , id
FROM dator
GROUP BY id) DeriveradTabell
ON person.id = DeriveradTabell.id
/micke