Jag har en tabell med svar på en massa frågor från olika användare. Varje svar är kopplat till en användare + frågan och innehåller datumet när svaret lämnades. Inkludera alla kolumner som du vill ha ut i svaret i select-listan. I group by inkluderar du alla kolumner utom de som du gjort någon aggregering på. Vad menar du med hela rader? Alla kolumner eller? Har redan prvat det men får inte till det. Jag har löst det en gång men funktionen är för slö. Det jag är ute feter i slutändan är antalet godkända svar (bRightANswer) som en person har gjort som sitt sista svar som lämnats. Använd datat du vill gruppera ut: Jag har provat det med och det går ända långsamt. <b>Använd detta som en deriverad tabell.</b> Det heter deriverad tabell, när man använder en selectsats som en tabell... Jag har aldrig sett uttrycket på svenska. Det känns väldigt "svengelskt". Jo visst, men det känns som man tagit det engelska ordet "derived" som betyder "härledd" utan att ens försöka översätta det vettigt, och kanske t.o.m. använder det i fel sammanhang. Inte mer än att mina kollegor använder detta svengelska ord också, på samma sätt som de använder Delegat som svensk term för delegate, när det egentligen skulle heta delegerare. Delegat är en korrekt översättning av delegate: http://lexikon.nada.kth.se/cgi-bin/sve-eng?:delegate Både jag och nej. En delegerare är också en korrekt översättning, som dessutom beskriver funktionen bättre än vad en delegat gör. En delegerare delegerar funktionen till någon annan (som en "delegate" gör) medan en delegat gör det själv, å någon annans vägnar. Rent tekniskt pratar man om funktionen som körs (delegaten) när man menar pekaren till den (delegeraren) Google gav noll svar vid sökning på "deriverad tabell".hitta raden i databas???
Mitt problem är att jag vill få ut hela rader från denna databas med senaste lämnade svaret på varje användare och fråga. Raderna innehåller mer information än de nämnda och därför skapar det problem.
hur gör jag detta??? Jag har proveat en massa saker men får inte till sql-frågan.
Det är inte detta jag är ute efter... exempel
SELECT frågid,anvId, MAX(Datum) AS MaxDatum
FROM tabell a
WHERE (klass= 141)
GROUP BY tStudentId,tElementQuestionRadioId
Här får jag inte ut hela rader.Sv: hitta raden i databas???
T.ex.
<CODE>
SELECT frågid,anvId, klass, ... resten av dina kolumner utom Datum... ,MAX(Datum) AS Datum
FROM tabell
WHERE (klass= 141)
GROUP BY frågid,anvId, klass, ... resten av dina kolumner utom Datum...
</CODE>
/PelleSv: hitta raden i databas???
I så fall radar du upp alla kolumnnamn efter SELECT. Man kan även göra en SELECT * men alternativ ett är att rekommendera.
Rekommenderar även att du tittar på lite sql tutorials.Sv: hitta raden i databas???
Jag vill få ut alla columner.
Mitt problem är att jag inte får ta med mig de andra columnerna i GROUP BY för då får jag inte bara fram det senaste som en person svarat på en viss fråga utan då får jag med mig alla svar. Jag vill bara få ut alla de rader (alla columner i varje rad) som är sista svaret på frågan på varje användare.
Det får jag inte om jag gruppera efter allt i tabellen.
Har jag fattat helt fel??
Detta är likt det jag vill göra.
SELECT
l1.camid as cid,
l1.author as author,
date_format(l1.log_date, '%m-%d-%y %H:%i') as log_date,
l1.type as type,
l1.city as city,
l1.state as state,
l1.log_date,
c.name as name,
count(*) as logs
FROM logs l1
JOIN cameras c ON l1.camid = c.id
INNER JOIN logs l2 ON l1.camid = l2.camid
GROUP BY l1.camid, l1.author, l1.log_date
HAVING l1.log_date = max(l2.log_date)
ORDER BY l1.log_date desc
LIMIT 20Sv: hitta raden i databas???
SELECT COUNT(tStudentId) AS nbrOfOk, tStudentId
FROM dbo.VIEWtestMultipleChoiceResult a
WHERE tClass=278 AND bShowQuestionResult = 0 AND (bRightAnswer = 1) AND (NOT (tStudentId IN
(SELECT tStudentId
FROM VIEWtestMultipleChoiceResult
WHERE tClass=278 AND bRightanswer = 1 AND sDate > a.sDate AND a.tElementQuestionRadioId = tElementQuestionRadioId AND a.tStudentId = tStudentId))) AND
(NOT (tStudentId IN
(SELECT tStudentId
FROM VIEWtestMultipleChoiceResult
WHERE tClass=278 AND bRightAnswer = 0 AND sDate > a.sDate AND a.tElementQuestionRadioId = tElementQuestionRadioId AND a.tStudentId = tStudentId)))
GROUP BY tStudentId
Lite skumt kanske men jag hoppas ni kan avläsa det.
Jag MÅSTE snabba upp detta.
Hälsninigar JohanSv: hitta raden i databas???
<code>
select CUSTOMERID, MAX(orderdate) AS Maxdatum
from [orders]
group by customerid
</code>
Använd detta som en deriverad tabell.
<code>
SELECT * from orders o inner join
(select CUSTOMERID, MAX(orderdate) AS Maxdatum
from [orders]
group by customerid) x
on o.customerid = x.customerid
WHERE orderdate = MaxDatum
</code>
Funkar på Northwind
Visa tabellstrukturen så kan någon översätta...
/mickeSv: hitta raden i databas???
Jag får jobba vidare på det. Kanske inte kan få ned hastigheten något.
Det är rätt mycket information då det är på 20000 rader den skall göra frågan.
Tackar ändå för all hjälp..
Hälsningar Johan RönnSv: hitta raden i databas???
"deriverad tabell"? Kan du ställa upp deriveringsregler för tabeller?Sv: hitta raden i databas???
/mickeSv: hitta raden i databas???
Sv: hitta raden i databas???
Har du någon referens som säger att det skall heta så?Sv: hitta raden i databas???
/mickeSv: hitta raden i databas???
Sv: hitta raden i databas???
Båda dessa heter delegate, och översätts korrekt till båda, men kontexten ger att det är mer korrekt med delegerare - vilket jag inte heller säger... ;)
/mickeSv: hitta raden i databas???
En sökning på "härledd tabell" gav ett svar, ett Word-dokument som innehöll följande text:
"<b>Bastabeller och vyer</b>
Om en databas innehåller en given mängd tabeller, går det alltid att generera nya tabeller från dessa.
De ursprungliga (givna) tabellerna kallas bastabeller och har en oberoende existens.
De härledda (nya) tabellerna definieras i termer av andra tabeller och deras existens hänger på dem.
En vy är en härledd tabell som är namngiven. Tabellen finns bara som ett uttryck och brukar därför kallas en virtuell tabell."