BitenMedlem sedan mars 2001131 inlägg
Hej igen allesammans!!
Är det fortfarande ingen som vet hur jag kan kontrollera om en viss person skrivit in flera än 10 poster i min databas? Om så är fallet så vill jag skriva ut dessa.
Men har personen skrivit in 12 poster eller 22 poster så vill jag fortfarande att man bara skriver ut de hela 10-talet poster.
Hoppas någon förstår vad jag menar och kan förklara för mig hur jag ska gå till väga.
Tack på förhand!!
SPiNMedlem sedan mars 20005 832 inlägg
Jag antar att du har ett fält där personen skriver in sitt namn?
Räkna alla poster där det fältet har samma värde;
strPerson = "SPiN"
SQL = "SELECT COUNT(*) AS cntPerson FROM tabell WHERE fält = '" & strPerson & "'"
set RS = connectionObjekt.Execute(SQL)
If RS("cntPerson") > 10 then
Response.Write strPerson & " har skrivit fler än tio inlägg"
Else
Response.Write strPerson & " har ännu inte skrivit 10 inlägg"
End If
RS.Close
set RS = Nothing
För att bara skriva ut de första tio:
strPerson = "SPiN"
SQL = "SELECT TOP 10 FROM tabell WHERE fält = '" & strPerson & "' ORDER BY id ASC"
...
För att skriva ut de tio senaste posterna, ändra ASC till DESC.
Notera att detta gäller för MS SQL Server och Access... Säg till om du använder MySQL, så ska jag ge dej SQL-satsen för den... :)
[redigerat]
Ooopps... Märkte nu att jag var i SQL-forumet, och jag skrev allt i ASP :)
Du kanske använder dig av något annat språk?
[/redigerat]
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 17 apr 2001]
BitenMedlem sedan mars 2001131 inlägg
Kan jag om jag vill ha upp alla utan att skriva in någon viss person få upp alla personer i databasen som har skrivit in flera än 10 poster?
SQL="SELECT COUNT(SSN) AS intSSN FROM tabell where datum Is null GROUP BY tabell.SSN"
rs.Open SQL, MinCon
If request.form("Visa lotter")="Nya" then
%\>\<H2\>Nya lotter\</H2\>\<%
If RS("intSSN") \> "10" then
while not rs.EOF
%\>
\<TD\>\<%Response.Write(rs("intSSN"))%\>\</TD\>\</TR\>
\<%
rs.MoveNext
wend
rs.Close
set rs = nothing
men jag får upp både de som har skivit in färre inlägg och de som har skrivit flera. Och där efter skulle jag vilja få upp personens personnr men det verkar inte vilja skriva ut det....
Hur ska jag skriva för att få ut både antal poster och personnummret på de personer som laggt in de?
Och hur ska jag skriva för att de som skrivit in flera än 10 inlägg ska visas?
Spin Du har säkert helt rätt men jag får det inte att fungera riktigt som jag vill...men jag känner att du har lett mig på rätt spår.
Tack!!
LarsGMedlem sedan dec. 200012 465 inlägg
För att få ut personnummer och antal och begränsa det till dom som har minst 10
select ssn,count(*) as antal
from tabell
where datum is null
group by ssn
having count(*) >= 10
Det här med att skriva ut hela 10-tal; menar du att om man har 22 inlägg så får man ut 20? Det blir svårt i en fråga. Man kan göra så att man hämtar personerna enligt ovan, sen så får man bygga en ny fråga beroende på hur många inlägg personen har. Man kan lägga ner det i en stored procedure så att det ser ut som en fråga från ASP.
------------------
essentitia preter non sans multiplicandum
BitenMedlem sedan mars 2001131 inlägg
Tack LarsG....
Ja du store procedure?????
Går det att skriva kod i store procedure?
och sedan någon typ av return eller?
LarsGMedlem sedan dec. 200012 465 inlägg
Går det att skriva kod i store procedure?
Jo, men det skiljer sig mellan olika dbms. Access har ytterst begränsade möjligheter. Oracle, SQL server, Sybase har ordentligt med konstuktioner (if, loop cursorhantering etc.) men syntaxen skiljer sig åt. Mysql t.ex. har inget alls..
------------------
essentitia preter non sans multiplicandum
BitenMedlem sedan mars 2001131 inlägg
LarsG ...jag använde mig av denna:
update db_training set treatedDate = '"&date&"'
where treatedDate is null and ssn in
(select ssn from db_training
group by ssn having count(ssn) >= 10)
men den uppdaterar alla poster som är null alltså inte bara de poster som har ett personnr som förekommit 10 gånger eller flera.
Jag har börjat på en store procedure nu, kanske går det bättre att få det att fungera som jag vill där....
min önskan är att ta fram personnr på de som lagt in fler än 9 poster, tilldela dessa jämna 10-talet poster dagens datum och sedan skriva ut dessa i en tabell på min sida.
Där tror jag att jag fick med hela nöten.
jag skulle gärn göra det i en store procedure för det verkar som det är enklast att göra detta där....
Tack för all hjälp det är verkligen uppskattat.